@raqm/ui 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/LICENSE +21 -0
  3. package/NOTICE.md +28 -0
  4. package/README.md +125 -3
  5. package/combobox/README.md +17 -0
  6. package/fesm2022/raqm-ui-accordion.mjs +414 -0
  7. package/fesm2022/raqm-ui-accordion.mjs.map +1 -0
  8. package/fesm2022/raqm-ui-alert-dialog.mjs +457 -0
  9. package/fesm2022/raqm-ui-alert-dialog.mjs.map +1 -0
  10. package/fesm2022/raqm-ui-alert.mjs +195 -0
  11. package/fesm2022/raqm-ui-alert.mjs.map +1 -0
  12. package/fesm2022/raqm-ui-aspect-ratio.mjs +66 -0
  13. package/fesm2022/raqm-ui-aspect-ratio.mjs.map +1 -0
  14. package/fesm2022/raqm-ui-attachment.mjs +435 -0
  15. package/fesm2022/raqm-ui-attachment.mjs.map +1 -0
  16. package/fesm2022/raqm-ui-avatar.mjs +337 -0
  17. package/fesm2022/raqm-ui-avatar.mjs.map +1 -0
  18. package/fesm2022/raqm-ui-badge.mjs +68 -0
  19. package/fesm2022/raqm-ui-badge.mjs.map +1 -0
  20. package/fesm2022/raqm-ui-breadcrumb.mjs +309 -0
  21. package/fesm2022/raqm-ui-breadcrumb.mjs.map +1 -0
  22. package/fesm2022/raqm-ui-button-group.mjs +138 -0
  23. package/fesm2022/raqm-ui-button-group.mjs.map +1 -0
  24. package/fesm2022/raqm-ui-button.mjs +295 -0
  25. package/fesm2022/raqm-ui-button.mjs.map +1 -0
  26. package/fesm2022/raqm-ui-calendar.mjs +1394 -0
  27. package/fesm2022/raqm-ui-calendar.mjs.map +1 -0
  28. package/fesm2022/raqm-ui-card.mjs +331 -0
  29. package/fesm2022/raqm-ui-card.mjs.map +1 -0
  30. package/fesm2022/raqm-ui-carousel.mjs +410 -0
  31. package/fesm2022/raqm-ui-carousel.mjs.map +1 -0
  32. package/fesm2022/raqm-ui-checkbox.mjs +86 -0
  33. package/fesm2022/raqm-ui-checkbox.mjs.map +1 -0
  34. package/fesm2022/raqm-ui-collapsible.mjs +266 -0
  35. package/fesm2022/raqm-ui-collapsible.mjs.map +1 -0
  36. package/fesm2022/raqm-ui-combobox.mjs +1584 -0
  37. package/fesm2022/raqm-ui-combobox.mjs.map +1 -0
  38. package/fesm2022/raqm-ui-command.mjs +1210 -0
  39. package/fesm2022/raqm-ui-command.mjs.map +1 -0
  40. package/fesm2022/raqm-ui-context-menu.mjs +723 -0
  41. package/fesm2022/raqm-ui-context-menu.mjs.map +1 -0
  42. package/fesm2022/raqm-ui-dialog.mjs +1214 -0
  43. package/fesm2022/raqm-ui-dialog.mjs.map +1 -0
  44. package/fesm2022/raqm-ui-drawer.mjs +687 -0
  45. package/fesm2022/raqm-ui-drawer.mjs.map +1 -0
  46. package/fesm2022/raqm-ui-dropdown-menu.mjs +1168 -0
  47. package/fesm2022/raqm-ui-dropdown-menu.mjs.map +1 -0
  48. package/fesm2022/raqm-ui-empty.mjs +272 -0
  49. package/fesm2022/raqm-ui-empty.mjs.map +1 -0
  50. package/fesm2022/raqm-ui-field.mjs +517 -0
  51. package/fesm2022/raqm-ui-field.mjs.map +1 -0
  52. package/fesm2022/raqm-ui-hover-card.mjs +828 -0
  53. package/fesm2022/raqm-ui-hover-card.mjs.map +1 -0
  54. package/fesm2022/raqm-ui-input-group.mjs +270 -0
  55. package/fesm2022/raqm-ui-input-group.mjs.map +1 -0
  56. package/fesm2022/raqm-ui-input-otp.mjs +788 -0
  57. package/fesm2022/raqm-ui-input-otp.mjs.map +1 -0
  58. package/fesm2022/raqm-ui-input.mjs +73 -0
  59. package/fesm2022/raqm-ui-input.mjs.map +1 -0
  60. package/fesm2022/raqm-ui-item.mjs +495 -0
  61. package/fesm2022/raqm-ui-item.mjs.map +1 -0
  62. package/fesm2022/raqm-ui-kbd.mjs +80 -0
  63. package/fesm2022/raqm-ui-kbd.mjs.map +1 -0
  64. package/fesm2022/raqm-ui-label.mjs +44 -0
  65. package/fesm2022/raqm-ui-label.mjs.map +1 -0
  66. package/fesm2022/raqm-ui-menubar.mjs +536 -0
  67. package/fesm2022/raqm-ui-menubar.mjs.map +1 -0
  68. package/fesm2022/raqm-ui-native-select.mjs +131 -0
  69. package/fesm2022/raqm-ui-native-select.mjs.map +1 -0
  70. package/fesm2022/raqm-ui-navigation-menu.mjs +1399 -0
  71. package/fesm2022/raqm-ui-navigation-menu.mjs.map +1 -0
  72. package/fesm2022/raqm-ui-overlay-internal.mjs +185 -0
  73. package/fesm2022/raqm-ui-overlay-internal.mjs.map +1 -0
  74. package/fesm2022/raqm-ui-pagination.mjs +440 -0
  75. package/fesm2022/raqm-ui-pagination.mjs.map +1 -0
  76. package/fesm2022/raqm-ui-popover.mjs +1495 -0
  77. package/fesm2022/raqm-ui-popover.mjs.map +1 -0
  78. package/fesm2022/raqm-ui-progress.mjs +369 -0
  79. package/fesm2022/raqm-ui-progress.mjs.map +1 -0
  80. package/fesm2022/raqm-ui-questionnaire.mjs +1005 -0
  81. package/fesm2022/raqm-ui-questionnaire.mjs.map +1 -0
  82. package/fesm2022/raqm-ui-radio-group.mjs +151 -0
  83. package/fesm2022/raqm-ui-radio-group.mjs.map +1 -0
  84. package/fesm2022/raqm-ui-resizable.mjs +439 -0
  85. package/fesm2022/raqm-ui-resizable.mjs.map +1 -0
  86. package/fesm2022/raqm-ui-scroll-area.mjs +510 -0
  87. package/fesm2022/raqm-ui-scroll-area.mjs.map +1 -0
  88. package/fesm2022/raqm-ui-select.mjs +1073 -0
  89. package/fesm2022/raqm-ui-select.mjs.map +1 -0
  90. package/fesm2022/raqm-ui-separator.mjs +103 -0
  91. package/fesm2022/raqm-ui-separator.mjs.map +1 -0
  92. package/fesm2022/raqm-ui-sheet.mjs +411 -0
  93. package/fesm2022/raqm-ui-sheet.mjs.map +1 -0
  94. package/fesm2022/raqm-ui-sidebar.mjs +1784 -0
  95. package/fesm2022/raqm-ui-sidebar.mjs.map +1 -0
  96. package/fesm2022/raqm-ui-skeleton.mjs +50 -0
  97. package/fesm2022/raqm-ui-skeleton.mjs.map +1 -0
  98. package/fesm2022/raqm-ui-slider.mjs +609 -0
  99. package/fesm2022/raqm-ui-slider.mjs.map +1 -0
  100. package/fesm2022/raqm-ui-spinner.mjs +137 -0
  101. package/fesm2022/raqm-ui-spinner.mjs.map +1 -0
  102. package/fesm2022/raqm-ui-switch.mjs +109 -0
  103. package/fesm2022/raqm-ui-switch.mjs.map +1 -0
  104. package/fesm2022/raqm-ui-table.mjs +271 -0
  105. package/fesm2022/raqm-ui-table.mjs.map +1 -0
  106. package/fesm2022/raqm-ui-tabs.mjs +536 -0
  107. package/fesm2022/raqm-ui-tabs.mjs.map +1 -0
  108. package/fesm2022/raqm-ui-textarea.mjs +37 -0
  109. package/fesm2022/raqm-ui-textarea.mjs.map +1 -0
  110. package/fesm2022/raqm-ui-toast.mjs +918 -0
  111. package/fesm2022/raqm-ui-toast.mjs.map +1 -0
  112. package/fesm2022/raqm-ui-toggle-group.mjs +462 -0
  113. package/fesm2022/raqm-ui-toggle-group.mjs.map +1 -0
  114. package/fesm2022/raqm-ui-toggle.mjs +158 -0
  115. package/fesm2022/raqm-ui-toggle.mjs.map +1 -0
  116. package/fesm2022/raqm-ui-tooltip.mjs +1226 -0
  117. package/fesm2022/raqm-ui-tooltip.mjs.map +1 -0
  118. package/fesm2022/raqm-ui.mjs +50 -0
  119. package/input-otp/README.md +12 -0
  120. package/package.json +275 -3
  121. package/styles/theme.css +4322 -0
  122. package/types/raqm-ui-accordion.d.ts +124 -0
  123. package/types/raqm-ui-alert-dialog.d.ts +81 -0
  124. package/types/raqm-ui-alert.d.ts +29 -0
  125. package/types/raqm-ui-aspect-ratio.d.ts +13 -0
  126. package/types/raqm-ui-attachment.d.ts +72 -0
  127. package/types/raqm-ui-avatar.d.ts +67 -0
  128. package/types/raqm-ui-badge.d.ts +20 -0
  129. package/types/raqm-ui-breadcrumb.d.ts +35 -0
  130. package/types/raqm-ui-button-group.d.ts +27 -0
  131. package/types/raqm-ui-button.d.ts +80 -0
  132. package/types/raqm-ui-calendar.d.ts +359 -0
  133. package/types/raqm-ui-card.d.ts +34 -0
  134. package/types/raqm-ui-carousel.d.ts +81 -0
  135. package/types/raqm-ui-checkbox.d.ts +24 -0
  136. package/types/raqm-ui-collapsible.d.ts +72 -0
  137. package/types/raqm-ui-combobox.d.ts +405 -0
  138. package/types/raqm-ui-command.d.ts +256 -0
  139. package/types/raqm-ui-context-menu.d.ts +196 -0
  140. package/types/raqm-ui-dialog.d.ts +232 -0
  141. package/types/raqm-ui-drawer.d.ts +121 -0
  142. package/types/raqm-ui-dropdown-menu.d.ts +319 -0
  143. package/types/raqm-ui-empty.d.ts +35 -0
  144. package/types/raqm-ui-field.d.ts +88 -0
  145. package/types/raqm-ui-hover-card.d.ts +139 -0
  146. package/types/raqm-ui-input-group.d.ts +45 -0
  147. package/types/raqm-ui-input-otp.d.ts +197 -0
  148. package/types/raqm-ui-input.d.ts +16 -0
  149. package/types/raqm-ui-item.d.ts +71 -0
  150. package/types/raqm-ui-kbd.d.ts +12 -0
  151. package/types/raqm-ui-label.d.ts +6 -0
  152. package/types/raqm-ui-menubar.d.ts +159 -0
  153. package/types/raqm-ui-native-select.d.ts +23 -0
  154. package/types/raqm-ui-navigation-menu.d.ts +230 -0
  155. package/types/raqm-ui-overlay-internal.d.ts +5 -0
  156. package/types/raqm-ui-pagination.d.ts +84 -0
  157. package/types/raqm-ui-popover.d.ts +235 -0
  158. package/types/raqm-ui-progress.d.ts +79 -0
  159. package/types/raqm-ui-questionnaire.d.ts +217 -0
  160. package/types/raqm-ui-radio-group.d.ts +48 -0
  161. package/types/raqm-ui-resizable.d.ts +98 -0
  162. package/types/raqm-ui-scroll-area.d.ts +132 -0
  163. package/types/raqm-ui-select.d.ts +205 -0
  164. package/types/raqm-ui-separator.d.ts +21 -0
  165. package/types/raqm-ui-sheet.d.ts +79 -0
  166. package/types/raqm-ui-sidebar.d.ts +285 -0
  167. package/types/raqm-ui-skeleton.d.ts +6 -0
  168. package/types/raqm-ui-slider.d.ts +129 -0
  169. package/types/raqm-ui-spinner.d.ts +32 -0
  170. package/types/raqm-ui-switch.d.ts +32 -0
  171. package/types/raqm-ui-table.d.ts +36 -0
  172. package/types/raqm-ui-tabs.d.ts +154 -0
  173. package/types/raqm-ui-textarea.d.ts +6 -0
  174. package/types/raqm-ui-toast.d.ts +190 -0
  175. package/types/raqm-ui-toggle-group.d.ts +167 -0
  176. package/types/raqm-ui-toggle.d.ts +42 -0
  177. package/types/raqm-ui-tooltip.d.ts +207 -0
  178. package/types/raqm-ui.d.ts +50 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raqm-ui-slider.mjs","names":[],"sources":["../../../projects/ui/slider/slider-model.ts","../../../projects/ui/slider/slider-keyboard.ts","../../../projects/ui/slider/slider-pointer.ts","../../../projects/ui/slider/slider.ts","../../../projects/ui/slider/slider.html"],"sourcesContent":["// Slider model: the step arithmetic, the push-apart policy and the thumb geometry shared by\r\n// the shell and the pointer controller.\r\n\r\n/** Shift+Arrow and PageUp/PageDown step. */\r\nexport const LARGE_STEP = 10;\r\n\r\nexport function decimalPrecision(value: number): number {\r\n if (value === 0) {\r\n return 0;\r\n }\r\n if (Math.abs(value) < 1) {\r\n const [mantissa, exponent] = value.toExponential().split('e-');\r\n const fraction = mantissa.split('.')[1];\r\n return (fraction ? fraction.length : 0) + Number.parseInt(exponent ?? '0', 10);\r\n }\r\n const fraction = value.toString().split('.')[1];\r\n return fraction ? fraction.length : 0;\r\n}\r\n\r\nexport function clamp(value: number, lower: number, upper: number): number {\r\n return Math.min(Math.max(value, lower), upper);\r\n}\r\n\r\nexport function roundToStep(value: number, step: number, min: number): number {\r\n const nearest = Math.round((value - min) / step) * step + min;\r\n return Number(nearest.toFixed(Math.max(decimalPrecision(step), decimalPrecision(min))));\r\n}\r\n\r\n/**\r\n * Pushes neighbours past the thumb at `index`; `initialValues`, captured at drag start, lets a\r\n * pushed neighbour return to its start value.\r\n */\r\nexport function pushThumbValues(\r\n values: readonly number[],\r\n index: number,\r\n nextValue: number,\r\n min: number,\r\n max: number,\r\n initialValues: readonly number[],\r\n): number[] {\r\n const next = values.slice();\r\n const lastIndex = next.length - 1;\r\n next[index] = clamp(nextValue, min, max);\r\n\r\n for (let position = index + 1; position <= lastIndex; position += 1) {\r\n const lower = next[position - 1];\r\n const initial = initialValues[position] ?? next[position];\r\n const candidate = Math.max(next[position], lower);\r\n next[position] = clamp(initial < candidate ? Math.max(initial, lower) : candidate, lower, max);\r\n }\r\n\r\n for (let position = index - 1; position >= 0; position -= 1) {\r\n const upper = next[position + 1];\r\n const initial = initialValues[position] ?? next[position];\r\n const candidate = Math.min(next[position], upper);\r\n next[position] = clamp(initial > candidate ? Math.min(initial, upper) : candidate, min, upper);\r\n }\r\n\r\n return next.map((value) => Number(value.toFixed(12)));\r\n}\r\n\r\nexport interface SliderThumb {\r\n readonly index: number;\r\n readonly value: number;\r\n readonly style: Readonly<Record<string, string>>;\r\n}\r\n\r\n/** Edge alignment: `half-thumb + (track - thumb) * ratio` keeps both end thumbs inside the control. */\r\nexport function offsetExpression(ratio: number): string {\r\n return `calc(var(--raqm-slider-thumb-size) / 2 + (100% - var(--raqm-slider-thumb-size)) * ${ratio})`;\r\n}\r\n\r\nexport function spanExpression(span: number): string {\r\n return `calc((100% - var(--raqm-slider-thumb-size)) * ${span})`;\r\n}\r\n","// Slider keyboard: arrow, page and Home/End stepping, with RTL mirroring for the horizontal\r\n// arrows and the focus repaint that keeps `:focus-visible` honest.\r\n\r\nimport { LARGE_STEP } from './slider-model';\r\n\r\nexport interface RaqmSliderKeyboardHost {\r\n values(): readonly number[];\r\n min(): number;\r\n max(): number;\r\n stepSize(): number;\r\n direction(): 'rtl' | 'ltr';\r\n setLastUsed(index: number): void;\r\n applyClamped(index: number, next: number): void;\r\n}\r\n\r\nexport class RaqmSliderKeyboard {\r\n constructor(private readonly host: RaqmSliderKeyboardHost) {}\r\n\r\n onKeydown(event: KeyboardEvent, index: number): void {\r\n const values = this.host.values();\r\n const current = values[index] ?? this.host.min();\r\n const increment = event.shiftKey ? LARGE_STEP : this.host.stepSize();\r\n const rtl = this.host.direction() === 'rtl';\r\n const min = this.host.min();\r\n const max = Math.max(this.host.max(), min);\r\n let next: number;\r\n\r\n switch (event.key) {\r\n case 'ArrowRight':\r\n next = current + (rtl ? -increment : increment);\r\n break;\r\n case 'ArrowLeft':\r\n next = current + (rtl ? increment : -increment);\r\n break;\r\n case 'ArrowUp':\r\n next = current + increment;\r\n break;\r\n case 'ArrowDown':\r\n next = current - increment;\r\n break;\r\n case 'PageUp':\r\n next = current + LARGE_STEP;\r\n break;\r\n case 'PageDown':\r\n next = current - LARGE_STEP;\r\n break;\r\n case 'Home':\r\n next = values[index - 1] ?? min;\r\n break;\r\n case 'End':\r\n next = values[index + 1] ?? max;\r\n break;\r\n default:\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n // Blur/refocus so `:focus-visible` paints after a pointer-focused thumb.\r\n const input = event.currentTarget as HTMLInputElement;\r\n if (!input.matches(':focus-visible')) {\r\n input.blur();\r\n input.focus({ preventScroll: true });\r\n }\r\n this.host.setLastUsed(index);\r\n this.host.applyClamped(index, next);\r\n }\r\n}\r\n","// Slider pointer: the thumb grab, track jumps, drag coordinate mapping and the document\r\n// listeners that own a live drag until pointerup, pointercancel or teardown.\r\n\r\nimport { ElementRef } from '@angular/core';\r\n\r\nimport { clamp, pushThumbValues } from './slider-model';\r\n\r\nexport interface RaqmSliderPointerHost {\r\n disabled(): boolean;\r\n vertical(): boolean;\r\n values(): readonly number[];\r\n min(): number;\r\n max(): number;\r\n round(value: number): number;\r\n direction(): 'rtl' | 'ltr';\r\n thumbElements(): readonly ElementRef<HTMLElement>[];\r\n thumbInputs(): readonly ElementRef<HTMLInputElement>[];\r\n setValues(values: readonly number[]): void;\r\n setActive(index: number): void;\r\n setLastUsed(index: number): void;\r\n}\r\n\r\nexport class RaqmSliderPointer {\r\n private dragValues: readonly number[] | null = null;\r\n private dragIndex = -1;\r\n private dragOffset = 0;\r\n private dragPointerId: number | null = null;\r\n private dragControl: HTMLElement | null = null;\r\n\r\n constructor(private readonly host: RaqmSliderPointerHost) {}\r\n\r\n onPointerDown(event: PointerEvent): void {\r\n if (this.host.disabled() || event.button !== 0 || !event.isPrimary) {\r\n return;\r\n }\r\n const pressed = this.pressedThumb(event);\r\n if (pressed === null) {\r\n return;\r\n }\r\n event.preventDefault();\r\n this.dragValues = this.host.values().slice();\r\n this.dragIndex = pressed.index;\r\n this.dragOffset = pressed.offset;\r\n this.dragPointerId = event.pointerId;\r\n this.dragControl = event.currentTarget as HTMLElement;\r\n this.host.setActive(pressed.index);\r\n this.host.setLastUsed(pressed.index);\r\n this.focusThumb(pressed.index);\r\n this.setFromPointer(event, pressed.index);\r\n\r\n document.addEventListener('pointermove', this.onPointerMove);\r\n document.addEventListener('pointerup', this.onPointerUp);\r\n document.addEventListener('pointercancel', this.onPointerUp);\r\n }\r\n\r\n endPointerInteraction(): void {\r\n document.removeEventListener('pointermove', this.onPointerMove);\r\n document.removeEventListener('pointerup', this.onPointerUp);\r\n document.removeEventListener('pointercancel', this.onPointerUp);\r\n this.dragValues = null;\r\n this.dragIndex = -1;\r\n this.dragOffset = 0;\r\n this.dragPointerId = null;\r\n this.dragControl = null;\r\n this.host.setActive(-1);\r\n }\r\n\r\n private pressedThumb(event: PointerEvent): { index: number; offset: number } | null {\r\n const vertical = this.host.vertical();\r\n const coordinate = vertical ? event.clientY : event.clientX;\r\n const target =\r\n event.target instanceof Element\r\n ? event.target.closest<HTMLElement>('.raqm-slider-thumb')\r\n : null;\r\n\r\n if (target !== null) {\r\n const index = Number(target.dataset['raqmIndex'] ?? '-1');\r\n if (index < 0) {\r\n return null;\r\n }\r\n const rect = target.getBoundingClientRect();\r\n const center = vertical ? rect.top + rect.height / 2 : rect.left + rect.width / 2;\r\n return { index, offset: coordinate - center };\r\n }\r\n\r\n // A track press grabs the nearest thumb with no offset, so it jumps to the pointer.\r\n let closest = -1;\r\n let distance = Number.POSITIVE_INFINITY;\r\n this.host.thumbElements().forEach((thumb, index) => {\r\n const rect = thumb.nativeElement.getBoundingClientRect();\r\n const center = vertical ? rect.top + rect.height / 2 : rect.left + rect.width / 2;\r\n const delta = Math.abs(coordinate - center);\r\n if (delta <= distance) {\r\n closest = index;\r\n distance = delta;\r\n }\r\n });\r\n return closest < 0 ? null : { index: closest, offset: 0 };\r\n }\r\n\r\n private setFromPointer(event: PointerEvent, index: number): void {\r\n const control = this.dragControl;\r\n if (control === null) {\r\n return;\r\n }\r\n const value = this.valueFromPointer(event, control, index);\r\n if (value === null) {\r\n return;\r\n }\r\n const values = this.host.values();\r\n if (values.length <= 1) {\r\n this.host.setValues([value]);\r\n return;\r\n }\r\n this.host.setValues(\r\n pushThumbValues(\r\n values,\r\n index,\r\n value,\r\n this.host.min(),\r\n Math.max(this.host.max(), this.host.min()),\r\n this.dragValues ?? values,\r\n ),\r\n );\r\n }\r\n\r\n private valueFromPointer(\r\n event: PointerEvent,\r\n control: HTMLElement,\r\n index: number,\r\n ): number | null {\r\n const thumb = this.host.thumbElements()[index]?.nativeElement;\r\n if (thumb === undefined) {\r\n return null;\r\n }\r\n const vertical = this.host.vertical();\r\n const controlRect = control.getBoundingClientRect();\r\n const thumbRect = thumb.getBoundingClientRect();\r\n const thumbSize = vertical ? thumbRect.height : thumbRect.width;\r\n const controlSize = (vertical ? controlRect.height : controlRect.width) - thumbSize;\r\n if (controlSize <= 0) {\r\n return null;\r\n }\r\n const coordinate = (vertical ? event.clientY : event.clientX) - this.dragOffset;\r\n const start = vertical\r\n ? controlRect.bottom - coordinate\r\n : this.host.direction() === 'rtl'\r\n ? controlRect.right - coordinate\r\n : coordinate - controlRect.left;\r\n const position = clamp((start - thumbSize / 2) / controlSize, 0, 1);\r\n const min = this.host.min();\r\n return this.host.round(min + (Math.max(this.host.max(), min) - min) * position);\r\n }\r\n\r\n private readonly onPointerMove = (event: PointerEvent): void => {\r\n if (event.pointerId !== this.dragPointerId) {\r\n return;\r\n }\r\n if (this.host.disabled()) {\r\n this.endPointerInteraction();\r\n return;\r\n }\r\n // A pointerup swallowed by another element leaves `buttons` at zero.\r\n if (event.buttons === 0) {\r\n this.endPointerInteraction();\r\n return;\r\n }\r\n this.setFromPointer(event, this.dragIndex);\r\n };\r\n\r\n private readonly onPointerUp = (event: PointerEvent): void => {\r\n if (event.pointerId === this.dragPointerId) {\r\n this.endPointerInteraction();\r\n }\r\n };\r\n\r\n private focusThumb(index: number): void {\r\n this.host.thumbInputs()[index]?.nativeElement.focus({ preventScroll: true });\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n ElementRef,\r\n booleanAttribute,\r\n computed,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n viewChildren,\r\n} from '@angular/core';\r\nimport { RaqmSliderKeyboard } from './slider-keyboard';\r\nimport { SliderThumb, clamp, offsetExpression, roundToStep, spanExpression } from './slider-model';\r\nimport { RaqmSliderPointer } from './slider-pointer';\r\n\r\n/**\r\n * Selects a value from within a range; each thumb is a real `<input type=\"range\">`, so focus, ARIA\r\n * and the form value stay native. Binding `value` makes it controlled, else `defaultValue` then `min`\r\n * seed it. RTL mirrors Left/Right from the computed direction, so a CSS-only `dir` ancestor works.\r\n */\r\n@Component({\r\n selector: 'raqm-slider',\r\n templateUrl: './slider.html',\r\n styleUrl: './slider.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'raqm-slider',\r\n role: 'group',\r\n '[attr.data-raqm-vertical]': \"vertical() ? '' : null\",\r\n '[attr.data-raqm-disabled]': \"disabled() ? '' : null\",\r\n '[attr.id]': 'null',\r\n },\r\n})\r\nexport class RaqmSlider {\r\n readonly value = input<number | readonly number[] | null>(null);\r\n\r\n // Uncontrolled seed, used only while `value` is not bound.\r\n readonly defaultValue = input<number | readonly number[] | null>(null);\r\n\r\n readonly min = input(0);\r\n readonly max = input(100);\r\n readonly step = input(1);\r\n\r\n readonly vertical = input(false, { transform: booleanAttribute });\r\n\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n readonly name = input<string | null>(null);\r\n readonly form = input<string | null>(null);\r\n\r\n // The single-thumb id, so a native `<label for>` associates; range labels stay inert.\r\n readonly id = input<string | null>(null);\r\n\r\n readonly thumbLabels = input<readonly string[] | null>(null);\r\n\r\n readonly valueChange = output<number | readonly number[]>();\r\n\r\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n private readonly uncontrolled = signal<readonly number[] | null>(null);\r\n\r\n private readonly activeIndex = signal(-1);\r\n\r\n private readonly lastUsedIndex = signal(-1);\r\n\r\n private readonly thumbElements = viewChildren<ElementRef<HTMLElement>>('thumbEl');\r\n private readonly thumbInputs = viewChildren<ElementRef<HTMLInputElement>>('thumbInput');\r\n\r\n protected readonly orientation = computed<'horizontal' | 'vertical'>(() =>\r\n this.vertical() ? 'vertical' : 'horizontal',\r\n );\r\n\r\n protected readonly values = computed<readonly number[]>(() => {\r\n const raw = this.value() ?? this.uncontrolled() ?? this.defaultValue() ?? this.min();\r\n const list = (Array.isArray(raw) ? raw : [raw]).slice();\r\n const entries = list.length > 0 ? list : [this.min()];\r\n return entries.map((entry) => this.round(entry));\r\n });\r\n\r\n protected readonly thumbs = computed<readonly SliderThumb[]>(() => {\r\n const vertical = this.vertical();\r\n const active = this.activeIndex();\r\n const lastUsed = this.lastUsedIndex();\r\n return this.values().map((value, index) => {\r\n const position = offsetExpression(this.ratio(value));\r\n const stack = active === index ? '2' : lastUsed === index ? '1' : '';\r\n const style: Record<string, string> = vertical\r\n ? { 'inset-block-end': position, 'inset-inline-start': '50%', 'z-index': stack }\r\n : { 'inset-inline-start': position, 'inset-block-start': '50%', 'z-index': stack };\r\n return { index, value, style };\r\n });\r\n });\r\n\r\n /** min → thumb for one value, first → last thumb for a range. */\r\n protected readonly rangeStyle = computed<Readonly<Record<string, string>>>(() => {\r\n const values = this.values();\r\n const vertical = this.vertical();\r\n const first = this.ratio(values[0] ?? this.min());\r\n if (values.length <= 1) {\r\n const size = offsetExpression(first);\r\n const style: Record<string, string> = vertical\r\n ? { 'inset-block-end': '0', 'block-size': size }\r\n : { 'inset-inline-start': '0', 'inline-size': size };\r\n return style;\r\n }\r\n const last = this.ratio(values[values.length - 1] ?? this.min());\r\n const start = offsetExpression(first);\r\n const size = spanExpression(Number((last - first).toFixed(6)));\r\n const style: Record<string, string> = vertical\r\n ? { 'inset-block-end': start, 'block-size': size }\r\n : { 'inset-inline-start': start, 'inline-size': size };\r\n return style;\r\n });\r\n\r\n private readonly pointer = new RaqmSliderPointer({\r\n disabled: () => this.disabled(),\r\n vertical: () => this.vertical(),\r\n values: () => this.values(),\r\n min: () => this.min(),\r\n max: () => this.max(),\r\n round: (value) => this.round(value),\r\n direction: () => this.direction(),\r\n thumbElements: () => this.thumbElements(),\r\n thumbInputs: () => this.thumbInputs(),\r\n setValues: (values) => this.setValues(values),\r\n setActive: (index) => this.activeIndex.set(index),\r\n setLastUsed: (index) => this.lastUsedIndex.set(index),\r\n });\r\n\r\n private readonly keyboard = new RaqmSliderKeyboard({\r\n values: () => this.values(),\r\n min: () => this.min(),\r\n max: () => this.max(),\r\n stepSize: () => this.stepSize(),\r\n direction: () => this.direction(),\r\n setLastUsed: (index) => this.lastUsedIndex.set(index),\r\n applyClamped: (index, next) => this.applyClamped(index, next),\r\n });\r\n\r\n constructor() {\r\n this.destroyRef.onDestroy(() => this.pointer.endPointerInteraction());\r\n }\r\n\r\n protected inputId(index: number): string | null {\r\n return index === 0 ? this.id() : null;\r\n }\r\n\r\n protected thumbLabel(index: number): string | null {\r\n return this.thumbLabels()?.[index] ?? null;\r\n }\r\n\r\n protected onFocus(index: number): void {\r\n this.activeIndex.set(index);\r\n this.lastUsedIndex.set(index);\r\n }\r\n\r\n protected onBlur(): void {\r\n this.activeIndex.set(-1);\r\n }\r\n\r\n /** Accepts a change made through the native input (assistive technology). */\r\n protected onInput(event: Event, index: number): void {\r\n const input = event.target as HTMLInputElement;\r\n if (Number.isFinite(input.valueAsNumber)) {\r\n this.applyClamped(index, input.valueAsNumber);\r\n }\r\n }\r\n\r\n protected onKeydown(event: KeyboardEvent, index: number): void {\r\n this.keyboard.onKeydown(event, index);\r\n }\r\n\r\n protected onPointerDown(event: PointerEvent): void {\r\n this.pointer.onPointerDown(event);\r\n }\r\n\r\n private round(value: number): number {\r\n const min = this.min();\r\n const max = Math.max(this.max(), min);\r\n return clamp(roundToStep(Number.isFinite(value) ? value : min, this.stepSize(), min), min, max);\r\n }\r\n\r\n /** The public step, never zero, which would make every ratio meaningless. */\r\n private stepSize(): number {\r\n return this.step() > 0 ? this.step() : 1;\r\n }\r\n\r\n private ratio(value: number): number {\r\n const span = this.max() - this.min();\r\n return span > 0 ? Number(((value - this.min()) / span).toFixed(6)) : 0;\r\n }\r\n\r\n private applyClamped(index: number, next: number): void {\r\n const values = this.values().slice();\r\n if (index < 0 || index >= values.length) {\r\n return;\r\n }\r\n values[index] = this.round(\r\n clamp(next, values[index - 1] ?? -Infinity, values[index + 1] ?? Infinity),\r\n );\r\n this.setValues(values);\r\n }\r\n\r\n private setValues(next: readonly number[]): void {\r\n const current = this.values();\r\n if (next.length === current.length && next.every((value, index) => value === current[index])) {\r\n return;\r\n }\r\n if (this.value() === null) {\r\n this.uncontrolled.set(next);\r\n }\r\n this.valueChange.emit(next.length === 1 ? next[0] : next);\r\n }\r\n\r\n private direction(): 'rtl' | 'ltr' {\r\n return getComputedStyle(this.host.nativeElement).direction === 'rtl' ? 'rtl' : 'ltr';\r\n }\r\n}\r\n","<!-- The host is the group; each thumb hosts a native range input that owns focus, ARIA and form value. -->\r\n<div\r\n class=\"raqm-slider-control\"\r\n [attr.data-raqm-disabled]=\"disabled() ? '' : null\"\r\n (pointerdown)=\"onPointerDown($event)\"\r\n>\r\n <div class=\"raqm-slider-track\">\r\n <div class=\"raqm-slider-range\" [style]=\"rangeStyle()\"></div>\r\n </div>\r\n @for (thumb of thumbs(); track thumb.index) {\r\n <div\r\n #thumbEl\r\n class=\"raqm-slider-thumb\"\r\n [attr.data-raqm-index]=\"thumb.index\"\r\n [style]=\"thumb.style\"\r\n >\r\n <input\r\n #thumbInput\r\n type=\"range\"\r\n class=\"raqm-slider-input\"\r\n [attr.id]=\"inputId(thumb.index)\"\r\n [attr.name]=\"name()\"\r\n [attr.form]=\"form()\"\r\n [attr.aria-label]=\"thumbLabel(thumb.index)\"\r\n [attr.aria-orientation]=\"orientation()\"\r\n [attr.aria-valuemin]=\"min()\"\r\n [attr.aria-valuemax]=\"max()\"\r\n [attr.aria-valuenow]=\"thumb.value\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [step]=\"step()\"\r\n [value]=\"thumb.value\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput($event, thumb.index)\"\r\n (keydown)=\"onKeydown($event, thumb.index)\"\r\n (focus)=\"onFocus(thumb.index)\"\r\n (blur)=\"onBlur()\"\r\n />\r\n </div>\r\n }\r\n</div>\r\n"],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ import * as i0 from "@angular/core";
2
+ import { ChangeDetectionStrategy, Component, booleanAttribute, computed, input } from "@angular/core";
3
+ var RaqmSpinner = class RaqmSpinner {
4
+ decorative = input(false, {
5
+ ...ngDevMode ? { debugName: "decorative" } : /* istanbul ignore next */ {},
6
+ transform: booleanAttribute
7
+ });
8
+ label = input(null, ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
9
+ announces = computed(() => !this.decorative() && !!this.label(), ...ngDevMode ? [{ debugName: "announces" }] : /* istanbul ignore next */ []);
10
+ start = input(false, {
11
+ ...ngDevMode ? { debugName: "start" } : /* istanbul ignore next */ {},
12
+ transform: booleanAttribute
13
+ });
14
+ end = input(false, {
15
+ ...ngDevMode ? { debugName: "end" } : /* istanbul ignore next */ {},
16
+ transform: booleanAttribute
17
+ });
18
+ static ɵfac = i0.ɵɵngDeclareFactory({
19
+ minVersion: "12.0.0",
20
+ version: "22.2.2",
21
+ ngImport: i0,
22
+ type: RaqmSpinner,
23
+ deps: [],
24
+ target: i0.ɵɵFactoryTarget.Component
25
+ });
26
+ static ɵcmp = i0.ɵɵngDeclareComponent({
27
+ minVersion: "17.1.0",
28
+ version: "22.2.2",
29
+ type: RaqmSpinner,
30
+ isStandalone: true,
31
+ selector: "raqm-spinner",
32
+ inputs: {
33
+ decorative: {
34
+ classPropertyName: "decorative",
35
+ publicName: "decorative",
36
+ isSignal: true,
37
+ isRequired: false,
38
+ transformFunction: null
39
+ },
40
+ label: {
41
+ classPropertyName: "label",
42
+ publicName: "label",
43
+ isSignal: true,
44
+ isRequired: false,
45
+ transformFunction: null
46
+ },
47
+ start: {
48
+ classPropertyName: "start",
49
+ publicName: "start",
50
+ isSignal: true,
51
+ isRequired: false,
52
+ transformFunction: null
53
+ },
54
+ end: {
55
+ classPropertyName: "end",
56
+ publicName: "end",
57
+ isSignal: true,
58
+ isRequired: false,
59
+ transformFunction: null
60
+ }
61
+ },
62
+ host: {
63
+ properties: {
64
+ "attr.role": "announces() ? \"status\" : null",
65
+ "attr.aria-label": "announces() ? label() : null",
66
+ "attr.aria-hidden": "announces() ? null : \"true\"",
67
+ "attr.start": "start() ? \"\" : null",
68
+ "attr.end": "end() ? \"\" : null"
69
+ },
70
+ classAttribute: "raqm-spinner"
71
+ },
72
+ ngImport: i0,
73
+ template: "<!-- The wrapper is hidden because the host owns the status role and name. -->\r\n<span class=\"raqm-spinner-content\" aria-hidden=\"true\">\r\n <ng-content>\r\n <!-- The marker stops ancestor icon sizing from resizing this glyph. -->\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n raqm-spinner-icon\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n >\r\n <path d=\"M21 12a9 9 0 1 1-6.219-8.56\" />\r\n </svg>\r\n </ng-content>\r\n</span>\r\n",
74
+ styles: [":host{display:inline-flex;flex-shrink:0;vertical-align:middle;inline-size:var(--raqm-spinner-size, 1rem);block-size:var(--raqm-spinner-size, 1rem)}:host>.raqm-spinner-content{display:flex;align-items:center;justify-content:center;inline-size:100%;block-size:100%;font-size:var(--raqm-spinner-size, 1rem);line-height:1;animation:raqm-spinner-spin 1s linear infinite}:host>.raqm-spinner-content>svg{inline-size:100%;block-size:100%}@media(prefers-reduced-motion:reduce){:host>.raqm-spinner-content{animation:none}}\n"],
75
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
76
+ });
77
+ };
78
+ i0.ɵɵngDeclareClassMetadata({
79
+ minVersion: "12.0.0",
80
+ version: "22.2.2",
81
+ ngImport: i0,
82
+ type: RaqmSpinner,
83
+ decorators: [{
84
+ type: Component,
85
+ args: [{
86
+ selector: "raqm-spinner",
87
+ changeDetection: ChangeDetectionStrategy.OnPush,
88
+ host: {
89
+ class: "raqm-spinner",
90
+ "[attr.role]": "announces() ? \"status\" : null",
91
+ "[attr.aria-label]": "announces() ? label() : null",
92
+ "[attr.aria-hidden]": "announces() ? null : \"true\"",
93
+ "[attr.start]": "start() ? \"\" : null",
94
+ "[attr.end]": "end() ? \"\" : null"
95
+ },
96
+ template: "<!-- The wrapper is hidden because the host owns the status role and name. -->\r\n<span class=\"raqm-spinner-content\" aria-hidden=\"true\">\r\n <ng-content>\r\n <!-- The marker stops ancestor icon sizing from resizing this glyph. -->\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n raqm-spinner-icon\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n >\r\n <path d=\"M21 12a9 9 0 1 1-6.219-8.56\" />\r\n </svg>\r\n </ng-content>\r\n</span>\r\n",
97
+ styles: [":host{display:inline-flex;flex-shrink:0;vertical-align:middle;inline-size:var(--raqm-spinner-size, 1rem);block-size:var(--raqm-spinner-size, 1rem)}:host>.raqm-spinner-content{display:flex;align-items:center;justify-content:center;inline-size:100%;block-size:100%;font-size:var(--raqm-spinner-size, 1rem);line-height:1;animation:raqm-spinner-spin 1s linear infinite}:host>.raqm-spinner-content>svg{inline-size:100%;block-size:100%}@media(prefers-reduced-motion:reduce){:host>.raqm-spinner-content{animation:none}}\n"]
98
+ }]
99
+ }],
100
+ propDecorators: {
101
+ decorative: [{
102
+ type: i0.Input,
103
+ args: [{
104
+ isSignal: true,
105
+ alias: "decorative",
106
+ required: false
107
+ }]
108
+ }],
109
+ label: [{
110
+ type: i0.Input,
111
+ args: [{
112
+ isSignal: true,
113
+ alias: "label",
114
+ required: false
115
+ }]
116
+ }],
117
+ start: [{
118
+ type: i0.Input,
119
+ args: [{
120
+ isSignal: true,
121
+ alias: "start",
122
+ required: false
123
+ }]
124
+ }],
125
+ end: [{
126
+ type: i0.Input,
127
+ args: [{
128
+ isSignal: true,
129
+ alias: "end",
130
+ required: false
131
+ }]
132
+ }]
133
+ }
134
+ });
135
+ export { RaqmSpinner };
136
+
137
+ //# sourceMappingURL=raqm-ui-spinner.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raqm-ui-spinner.mjs","names":[],"sources":["../../../projects/ui/spinner/spinner.ts","../../../projects/ui/spinner/spinner.component.html"],"sourcesContent":["import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n booleanAttribute,\r\n computed,\r\n input,\r\n} from '@angular/core';\r\n\r\n/** Raqm spinner — rotates projected content or its default glyph; `decorative`, `start` and `end` are boolean attributes. */\r\n@Component({\r\n selector: 'raqm-spinner',\r\n templateUrl: './spinner.component.html',\r\n styleUrl: './spinner.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'raqm-spinner',\r\n // The host owns the status role and name; unnamed or `decorative` spinners are hidden from\r\n // assistive technology.\r\n '[attr.role]': 'announces() ? \"status\" : null',\r\n '[attr.aria-label]': 'announces() ? label() : null',\r\n '[attr.aria-hidden]': 'announces() ? null : \"true\"',\r\n // Position markers drive the parent padding relationships.\r\n '[attr.start]': 'start() ? \"\" : null',\r\n '[attr.end]': 'end() ? \"\" : null',\r\n },\r\n})\r\nexport class RaqmSpinner {\r\n // Presentation-only: no role or name, so a neighbouring status is not duplicated.\r\n readonly decorative = input(false, { transform: booleanAttribute });\r\n\r\n // The accessible name of the `role=\"status\"` host; supplied already translated.\r\n readonly label = input<string | null>(null);\r\n\r\n protected readonly announces = computed(() => !this.decorative() && !!this.label());\r\n\r\n readonly start = input(false, { transform: booleanAttribute });\r\n readonly end = input(false, { transform: booleanAttribute });\r\n}\r\n","<!-- The wrapper is hidden because the host owns the status role and name. -->\r\n<span class=\"raqm-spinner-content\" aria-hidden=\"true\">\r\n <ng-content>\r\n <!-- The marker stops ancestor icon sizing from resizing this glyph. -->\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n raqm-spinner-icon\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n >\r\n <path d=\"M21 12a9 9 0 1 1-6.219-8.56\" />\r\n </svg>\r\n </ng-content>\r\n</span>\r\n"],"mappings":";;AA0BA,IAAa,cAAb,MAAa,YAAW;CAEb,aAAa,MAAM,OAAK;EAAA,GAAA,YAAA,EAAA,WAAA,aAAA,+BAAA,CAAA;EAAI,WAAW;CAAgB,CAAA;CAGvD,QAAQ,MAAqB,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAExB,YAAY,eAAe,CAAC,KAAK,WAAU,KAAM,CAAC,CAAC,KAAK,MAAK,GAAG,GAAA,YAAA,CAAA,EAAA,WAAA,YAAA,CAAA,+BAAA,CAAA,CAAA;CAE1E,QAAQ,MAAM,OAAK;EAAA,GAAA,YAAA,EAAA,WAAA,QAAA,+BAAA,CAAA;EAAI,WAAW;CAAgB,CAAA;CAClD,MAAM,MAAM,OAAK;EAAA,GAAA,YAAA,EAAA,WAAA,MAAA,+BAAA,CAAA;EAAI,WAAW;CAAgB,CAAA;CAV9C,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAW,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAX,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAW,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,YAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,KAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,MAAA;GAAA,YAAA;IAAA,aAAA;IAAA,mBAAA;IAAA,oBAAA;IAAA,cAAA;IAAA,YAAA;GAAA;GAAA,gBAAA;EAAA;EAAA,UAAA;EAAA,UC1BxB;EAmBA,QAAA,CAAA,ogBAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;ADOa,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAW,YAAA,CAAA;EAjBvB,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAc,iBAGP,wBAAwB;GAAM,MACzC;IACJ,OAAO;IAGP,eAAe;IACf,qBAAqB;IACrB,sBAAsB;IAEtB,gBAAgB;IAChB,cAAc;GACf;GAAA,UAAA;GAAA,QAAA,CAAA,ogBAAA;EAAA,CAAA"}
@@ -0,0 +1,109 @@
1
+ import * as i0 from "@angular/core";
2
+ import { Directive, ElementRef, booleanAttribute, forwardRef, inject, input } from "@angular/core";
3
+ import { NG_VALUE_ACCESSOR } from "@angular/forms";
4
+ var RaqmSwitch = class RaqmSwitch {
5
+ host = inject(ElementRef);
6
+ onChange = () => {};
7
+ onTouched = () => {};
8
+ disabledStateFired = false;
9
+ small = input(false, {
10
+ ...ngDevMode ? { debugName: "small" } : /* istanbul ignore next */ {},
11
+ transform: booleanAttribute
12
+ });
13
+ constructor() {
14
+ const element = this.host.nativeElement;
15
+ if (!element.hasAttribute("type")) element.setAttribute("type", "checkbox");
16
+ }
17
+ writeValue(value) {
18
+ this.host.nativeElement.checked = !!value;
19
+ }
20
+ registerOnChange(fn) {
21
+ this.onChange = fn;
22
+ }
23
+ registerOnTouched(fn) {
24
+ this.onTouched = fn;
25
+ }
26
+ setDisabledState(isDisabled) {
27
+ if (this.disabledStateFired || isDisabled) this.host.nativeElement.disabled = isDisabled;
28
+ this.disabledStateFired = true;
29
+ }
30
+ handleChange(event) {
31
+ this.onChange(event.target.checked);
32
+ }
33
+ handleBlur() {
34
+ this.onTouched();
35
+ }
36
+ static ɵfac = i0.ɵɵngDeclareFactory({
37
+ minVersion: "12.0.0",
38
+ version: "22.2.2",
39
+ ngImport: i0,
40
+ type: RaqmSwitch,
41
+ deps: [],
42
+ target: i0.ɵɵFactoryTarget.Directive
43
+ });
44
+ static ɵdir = i0.ɵɵngDeclareDirective({
45
+ minVersion: "17.1.0",
46
+ version: "22.2.2",
47
+ type: RaqmSwitch,
48
+ isStandalone: true,
49
+ selector: "input[raqm-switch]",
50
+ inputs: { small: {
51
+ classPropertyName: "small",
52
+ publicName: "small",
53
+ isSignal: true,
54
+ isRequired: false,
55
+ transformFunction: null
56
+ } },
57
+ host: {
58
+ attributes: { "role": "switch" },
59
+ listeners: {
60
+ "change": "handleChange($event)",
61
+ "blur": "handleBlur()"
62
+ },
63
+ properties: { "attr.data-raqm-size": "small() ? \"sm\" : \"default\"" },
64
+ classAttribute: "raqm-switch"
65
+ },
66
+ providers: [{
67
+ provide: NG_VALUE_ACCESSOR,
68
+ useExisting: forwardRef(() => RaqmSwitch),
69
+ multi: true
70
+ }],
71
+ ngImport: i0
72
+ });
73
+ };
74
+ i0.ɵɵngDeclareClassMetadata({
75
+ minVersion: "12.0.0",
76
+ version: "22.2.2",
77
+ ngImport: i0,
78
+ type: RaqmSwitch,
79
+ decorators: [{
80
+ type: Directive,
81
+ args: [{
82
+ selector: "input[raqm-switch]",
83
+ host: {
84
+ class: "raqm-switch",
85
+ role: "switch",
86
+ "[attr.data-raqm-size]": "small() ? \"sm\" : \"default\"",
87
+ "(change)": "handleChange($event)",
88
+ "(blur)": "handleBlur()"
89
+ },
90
+ providers: [{
91
+ provide: NG_VALUE_ACCESSOR,
92
+ useExisting: forwardRef(() => RaqmSwitch),
93
+ multi: true
94
+ }]
95
+ }]
96
+ }],
97
+ ctorParameters: () => [],
98
+ propDecorators: { small: [{
99
+ type: i0.Input,
100
+ args: [{
101
+ isSignal: true,
102
+ alias: "small",
103
+ required: false
104
+ }]
105
+ }] }
106
+ });
107
+ export { RaqmSwitch };
108
+
109
+ //# sourceMappingURL=raqm-ui-switch.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raqm-ui-switch.mjs","names":[],"sources":["../../../projects/ui/switch/switch.ts"],"sourcesContent":["import { Directive, ElementRef, booleanAttribute, forwardRef, inject, input } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n/**\r\n * Attaches the `raqm-switch` class to a native `<input>` and exposes it as `role=\"switch\"`.\r\n *\r\n * @remarks\r\n * `type=\"checkbox\"` is set when absent, so Angular's checkbox validator does not match: with Forms,\r\n * use `Validators.requiredTrue` for a required switch.\r\n */\r\n@Directive({\r\n selector: 'input[raqm-switch]',\r\n host: {\r\n class: 'raqm-switch',\r\n // The native checked state is the switch state, so no `aria-checked` binding can go stale.\r\n role: 'switch',\r\n '[attr.data-raqm-size]': 'small() ? \"sm\" : \"default\"',\r\n '(change)': 'handleChange($event)',\r\n '(blur)': 'handleBlur()',\r\n },\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => RaqmSwitch),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class RaqmSwitch implements ControlValueAccessor {\r\n private readonly host = inject<ElementRef<HTMLInputElement>>(ElementRef);\r\n private onChange: (value: boolean) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n private disabledStateFired = false;\r\n\r\n /** `false` is the default track, `true` the small one. */\r\n readonly small = input(false, { transform: booleanAttribute });\r\n\r\n constructor() {\r\n const element = this.host.nativeElement;\r\n if (!element.hasAttribute('type')) {\r\n element.setAttribute('type', 'checkbox');\r\n }\r\n }\r\n\r\n writeValue(value: boolean | null | undefined): void {\r\n this.host.nativeElement.checked = !!value;\r\n }\r\n\r\n registerOnChange(fn: (value: boolean) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n // The first Forms pass always reports `false`; a static `disabled` attribute is only erased\r\n // once the control actually becomes disabled.\r\n if (this.disabledStateFired || isDisabled) {\r\n this.host.nativeElement.disabled = isDisabled;\r\n }\r\n this.disabledStateFired = true;\r\n }\r\n\r\n protected handleChange(event: Event): void {\r\n this.onChange((event.target as HTMLInputElement).checked);\r\n }\r\n\r\n protected handleBlur(): void {\r\n this.onTouched();\r\n }\r\n}\r\n"],"mappings":";;;AA4BA,IAAa,aAAb,MAAa,WAAU;CACJ,OAAO,OAAqC,UAAU;CAC/D,iBAA0C,CAAE;CAC5C,kBAA6B,CAAE;CAC/B,qBAAqB;CAGpB,QAAQ,MAAM,OAAK;EAAA,GAAA,YAAA,EAAA,WAAA,QAAA,+BAAA,CAAA;EAAI,WAAW;CAAgB,CAAA;CAE3D,cAAA;EACE,MAAM,UAAU,KAAK,KAAK;EAC1B,IAAI,CAAC,QAAQ,aAAa,MAAM,GAC9B,QAAQ,aAAa,QAAQ,UAAU;CAE3C;CAEA,WAAW,OAAiC;EAC1C,KAAK,KAAK,cAAc,UAAU,CAAC,CAAC;CACtC;CAEA,iBAAiB,IAA4B;EAC3C,KAAK,WAAW;CAClB;CAEA,kBAAkB,IAAc;EAC9B,KAAK,YAAY;CACnB;CAEA,iBAAiB,YAAmB;EAGlC,IAAI,KAAK,sBAAsB,YAC7B,KAAK,KAAK,cAAc,WAAW;EAErC,KAAK,qBAAqB;CAC5B;CAEU,aAAa,OAAY;EACjC,KAAK,SAAU,MAAM,OAA4B,OAAO;CAC1D;CAEU,aAAU;EAClB,KAAK,UAAS;CAChB;CA3CW,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAU,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAV,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAU,cAAA;EAAA,UAAA;EAAA,QAAA,EAAA,OAAA;GAAA,mBAAA;GAAA,YAAA;GAAA,UAAA;GAAA,YAAA;GAAA,mBAAA;EAAA,EAAA;EAAA,MAAA;GAAA,YAAA,EAAA,QAAA,SAAA;GAAA,WAAA;IAAA,UAAA;IAAA,QAAA;GAAA;GAAA,YAAA,EAAA,uBAAA,iCAAA;GAAA,gBAAA;EAAA;EAAA,WARV,CACT;GACE,SAAS;GACT,aAAa,iBAAiB,UAAU;GACxC,OAAO;EACR,CACF;EAAA,UAAA;CAAA,CAAA;;AAEU,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAU,YAAA,CAAA;EAlBtB,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,MAAM;IACJ,OAAO;IAEP,MAAM;IACN,yBAAyB;IACzB,YAAY;IACZ,UAAU;GACX;GACD,WAAW,CACT;IACE,SAAS;IACT,aAAa,iBAAgB,UAAW;IACxC,OAAO;GACR,CACF;EACF,CAAA"}
@@ -0,0 +1,271 @@
1
+ import * as i0 from "@angular/core";
2
+ import { Directive } from "@angular/core";
3
+ var RaqmTableDirective = class RaqmTableDirective {
4
+ static ɵfac = i0.ɵɵngDeclareFactory({
5
+ minVersion: "12.0.0",
6
+ version: "22.2.2",
7
+ ngImport: i0,
8
+ type: RaqmTableDirective,
9
+ deps: [],
10
+ target: i0.ɵɵFactoryTarget.Directive
11
+ });
12
+ static ɵdir = i0.ɵɵngDeclareDirective({
13
+ minVersion: "14.0.0",
14
+ version: "22.2.2",
15
+ type: RaqmTableDirective,
16
+ isStandalone: true,
17
+ selector: "table[raqm-table]",
18
+ host: { classAttribute: "raqm-table" },
19
+ ngImport: i0
20
+ });
21
+ };
22
+ i0.ɵɵngDeclareClassMetadata({
23
+ minVersion: "12.0.0",
24
+ version: "22.2.2",
25
+ ngImport: i0,
26
+ type: RaqmTableDirective,
27
+ decorators: [{
28
+ type: Directive,
29
+ args: [{
30
+ selector: "table[raqm-table]",
31
+ host: { class: "raqm-table" }
32
+ }]
33
+ }]
34
+ });
35
+ var RaqmTableHeaderDirective = class RaqmTableHeaderDirective {
36
+ static ɵfac = i0.ɵɵngDeclareFactory({
37
+ minVersion: "12.0.0",
38
+ version: "22.2.2",
39
+ ngImport: i0,
40
+ type: RaqmTableHeaderDirective,
41
+ deps: [],
42
+ target: i0.ɵɵFactoryTarget.Directive
43
+ });
44
+ static ɵdir = i0.ɵɵngDeclareDirective({
45
+ minVersion: "14.0.0",
46
+ version: "22.2.2",
47
+ type: RaqmTableHeaderDirective,
48
+ isStandalone: true,
49
+ selector: "thead[raqm-table-header]",
50
+ host: { classAttribute: "raqm-table-header" },
51
+ ngImport: i0
52
+ });
53
+ };
54
+ i0.ɵɵngDeclareClassMetadata({
55
+ minVersion: "12.0.0",
56
+ version: "22.2.2",
57
+ ngImport: i0,
58
+ type: RaqmTableHeaderDirective,
59
+ decorators: [{
60
+ type: Directive,
61
+ args: [{
62
+ selector: "thead[raqm-table-header]",
63
+ host: { class: "raqm-table-header" }
64
+ }]
65
+ }]
66
+ });
67
+ var RaqmTableBodyDirective = class RaqmTableBodyDirective {
68
+ static ɵfac = i0.ɵɵngDeclareFactory({
69
+ minVersion: "12.0.0",
70
+ version: "22.2.2",
71
+ ngImport: i0,
72
+ type: RaqmTableBodyDirective,
73
+ deps: [],
74
+ target: i0.ɵɵFactoryTarget.Directive
75
+ });
76
+ static ɵdir = i0.ɵɵngDeclareDirective({
77
+ minVersion: "14.0.0",
78
+ version: "22.2.2",
79
+ type: RaqmTableBodyDirective,
80
+ isStandalone: true,
81
+ selector: "tbody[raqm-table-body]",
82
+ host: { classAttribute: "raqm-table-body" },
83
+ ngImport: i0
84
+ });
85
+ };
86
+ i0.ɵɵngDeclareClassMetadata({
87
+ minVersion: "12.0.0",
88
+ version: "22.2.2",
89
+ ngImport: i0,
90
+ type: RaqmTableBodyDirective,
91
+ decorators: [{
92
+ type: Directive,
93
+ args: [{
94
+ selector: "tbody[raqm-table-body]",
95
+ host: { class: "raqm-table-body" }
96
+ }]
97
+ }]
98
+ });
99
+ var RaqmTableFooterDirective = class RaqmTableFooterDirective {
100
+ static ɵfac = i0.ɵɵngDeclareFactory({
101
+ minVersion: "12.0.0",
102
+ version: "22.2.2",
103
+ ngImport: i0,
104
+ type: RaqmTableFooterDirective,
105
+ deps: [],
106
+ target: i0.ɵɵFactoryTarget.Directive
107
+ });
108
+ static ɵdir = i0.ɵɵngDeclareDirective({
109
+ minVersion: "14.0.0",
110
+ version: "22.2.2",
111
+ type: RaqmTableFooterDirective,
112
+ isStandalone: true,
113
+ selector: "tfoot[raqm-table-footer]",
114
+ host: { classAttribute: "raqm-table-footer" },
115
+ ngImport: i0
116
+ });
117
+ };
118
+ i0.ɵɵngDeclareClassMetadata({
119
+ minVersion: "12.0.0",
120
+ version: "22.2.2",
121
+ ngImport: i0,
122
+ type: RaqmTableFooterDirective,
123
+ decorators: [{
124
+ type: Directive,
125
+ args: [{
126
+ selector: "tfoot[raqm-table-footer]",
127
+ host: { class: "raqm-table-footer" }
128
+ }]
129
+ }]
130
+ });
131
+ var RaqmTableRowDirective = class RaqmTableRowDirective {
132
+ static ɵfac = i0.ɵɵngDeclareFactory({
133
+ minVersion: "12.0.0",
134
+ version: "22.2.2",
135
+ ngImport: i0,
136
+ type: RaqmTableRowDirective,
137
+ deps: [],
138
+ target: i0.ɵɵFactoryTarget.Directive
139
+ });
140
+ static ɵdir = i0.ɵɵngDeclareDirective({
141
+ minVersion: "14.0.0",
142
+ version: "22.2.2",
143
+ type: RaqmTableRowDirective,
144
+ isStandalone: true,
145
+ selector: "tr[raqm-table-row]",
146
+ host: { classAttribute: "raqm-table-row" },
147
+ ngImport: i0
148
+ });
149
+ };
150
+ i0.ɵɵngDeclareClassMetadata({
151
+ minVersion: "12.0.0",
152
+ version: "22.2.2",
153
+ ngImport: i0,
154
+ type: RaqmTableRowDirective,
155
+ decorators: [{
156
+ type: Directive,
157
+ args: [{
158
+ selector: "tr[raqm-table-row]",
159
+ host: { class: "raqm-table-row" }
160
+ }]
161
+ }]
162
+ });
163
+ var RaqmTableHeadDirective = class RaqmTableHeadDirective {
164
+ static ɵfac = i0.ɵɵngDeclareFactory({
165
+ minVersion: "12.0.0",
166
+ version: "22.2.2",
167
+ ngImport: i0,
168
+ type: RaqmTableHeadDirective,
169
+ deps: [],
170
+ target: i0.ɵɵFactoryTarget.Directive
171
+ });
172
+ static ɵdir = i0.ɵɵngDeclareDirective({
173
+ minVersion: "14.0.0",
174
+ version: "22.2.2",
175
+ type: RaqmTableHeadDirective,
176
+ isStandalone: true,
177
+ selector: "th[raqm-table-head]",
178
+ host: { classAttribute: "raqm-table-head" },
179
+ ngImport: i0
180
+ });
181
+ };
182
+ i0.ɵɵngDeclareClassMetadata({
183
+ minVersion: "12.0.0",
184
+ version: "22.2.2",
185
+ ngImport: i0,
186
+ type: RaqmTableHeadDirective,
187
+ decorators: [{
188
+ type: Directive,
189
+ args: [{
190
+ selector: "th[raqm-table-head]",
191
+ host: { class: "raqm-table-head" }
192
+ }]
193
+ }]
194
+ });
195
+ var RaqmTableCellDirective = class RaqmTableCellDirective {
196
+ static ɵfac = i0.ɵɵngDeclareFactory({
197
+ minVersion: "12.0.0",
198
+ version: "22.2.2",
199
+ ngImport: i0,
200
+ type: RaqmTableCellDirective,
201
+ deps: [],
202
+ target: i0.ɵɵFactoryTarget.Directive
203
+ });
204
+ static ɵdir = i0.ɵɵngDeclareDirective({
205
+ minVersion: "14.0.0",
206
+ version: "22.2.2",
207
+ type: RaqmTableCellDirective,
208
+ isStandalone: true,
209
+ selector: "td[raqm-table-cell]",
210
+ host: { classAttribute: "raqm-table-cell" },
211
+ ngImport: i0
212
+ });
213
+ };
214
+ i0.ɵɵngDeclareClassMetadata({
215
+ minVersion: "12.0.0",
216
+ version: "22.2.2",
217
+ ngImport: i0,
218
+ type: RaqmTableCellDirective,
219
+ decorators: [{
220
+ type: Directive,
221
+ args: [{
222
+ selector: "td[raqm-table-cell]",
223
+ host: { class: "raqm-table-cell" }
224
+ }]
225
+ }]
226
+ });
227
+ var RaqmTableCaptionDirective = class RaqmTableCaptionDirective {
228
+ static ɵfac = i0.ɵɵngDeclareFactory({
229
+ minVersion: "12.0.0",
230
+ version: "22.2.2",
231
+ ngImport: i0,
232
+ type: RaqmTableCaptionDirective,
233
+ deps: [],
234
+ target: i0.ɵɵFactoryTarget.Directive
235
+ });
236
+ static ɵdir = i0.ɵɵngDeclareDirective({
237
+ minVersion: "14.0.0",
238
+ version: "22.2.2",
239
+ type: RaqmTableCaptionDirective,
240
+ isStandalone: true,
241
+ selector: "caption[raqm-table-caption]",
242
+ host: { classAttribute: "raqm-table-caption" },
243
+ ngImport: i0
244
+ });
245
+ };
246
+ i0.ɵɵngDeclareClassMetadata({
247
+ minVersion: "12.0.0",
248
+ version: "22.2.2",
249
+ ngImport: i0,
250
+ type: RaqmTableCaptionDirective,
251
+ decorators: [{
252
+ type: Directive,
253
+ args: [{
254
+ selector: "caption[raqm-table-caption]",
255
+ host: { class: "raqm-table-caption" }
256
+ }]
257
+ }]
258
+ });
259
+ const RaqmTable = [
260
+ RaqmTableDirective,
261
+ RaqmTableHeaderDirective,
262
+ RaqmTableBodyDirective,
263
+ RaqmTableFooterDirective,
264
+ RaqmTableRowDirective,
265
+ RaqmTableHeadDirective,
266
+ RaqmTableCellDirective,
267
+ RaqmTableCaptionDirective
268
+ ];
269
+ export { RaqmTable, RaqmTableBodyDirective, RaqmTableCaptionDirective, RaqmTableCellDirective, RaqmTableDirective, RaqmTableFooterDirective, RaqmTableHeadDirective, RaqmTableHeaderDirective, RaqmTableRowDirective };
270
+
271
+ //# sourceMappingURL=raqm-ui-table.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raqm-ui-table.mjs","names":[],"sources":["../../../projects/ui/table/table.ts","../../../projects/ui/table/public-api.ts"],"sourcesContent":["import { Directive } from '@angular/core';\r\n\r\n/** Native `<table>` host; no data engine, and selection/expansion are CSS-only row hooks. */\r\n@Directive({\r\n selector: 'table[raqm-table]',\r\n host: {\r\n class: 'raqm-table',\r\n },\r\n})\r\nexport class RaqmTableDirective {}\r\n\r\n// Parts are viewless attributes on native table elements, preserving layout and a11y tree.\r\n@Directive({\r\n selector: 'thead[raqm-table-header]',\r\n host: {\r\n class: 'raqm-table-header',\r\n },\r\n})\r\nexport class RaqmTableHeaderDirective {}\r\n\r\n@Directive({\r\n selector: 'tbody[raqm-table-body]',\r\n host: {\r\n class: 'raqm-table-body',\r\n },\r\n})\r\nexport class RaqmTableBodyDirective {}\r\n\r\n@Directive({\r\n selector: 'tfoot[raqm-table-footer]',\r\n host: {\r\n class: 'raqm-table-footer',\r\n },\r\n})\r\nexport class RaqmTableFooterDirective {}\r\n\r\n/** CSS-only state hooks: `data-state=\"selected\"` and a tint while a descendant reports `aria-expanded=\"true\"`. */\r\n@Directive({\r\n selector: 'tr[raqm-table-row]',\r\n host: {\r\n class: 'raqm-table-row',\r\n },\r\n})\r\nexport class RaqmTableRowDirective {}\r\n\r\n@Directive({\r\n selector: 'th[raqm-table-head]',\r\n host: {\r\n class: 'raqm-table-head',\r\n },\r\n})\r\nexport class RaqmTableHeadDirective {}\r\n\r\n@Directive({\r\n selector: 'td[raqm-table-cell]',\r\n host: {\r\n class: 'raqm-table-cell',\r\n },\r\n})\r\nexport class RaqmTableCellDirective {}\r\n\r\n@Directive({\r\n selector: 'caption[raqm-table-caption]',\r\n host: {\r\n class: 'raqm-table-caption',\r\n },\r\n})\r\nexport class RaqmTableCaptionDirective {}\r\n","// Public API for `@raqm/ui/table`; the root entry point re-exports these symbols.\r\nimport {\r\n RaqmTableBodyDirective,\r\n RaqmTableCaptionDirective,\r\n RaqmTableCellDirective,\r\n RaqmTableDirective,\r\n RaqmTableFooterDirective,\r\n RaqmTableHeadDirective,\r\n RaqmTableHeaderDirective,\r\n RaqmTableRowDirective,\r\n} from './table';\r\n\r\nexport {\r\n RaqmTableBodyDirective,\r\n RaqmTableCaptionDirective,\r\n RaqmTableCellDirective,\r\n RaqmTableDirective,\r\n RaqmTableFooterDirective,\r\n RaqmTableHeadDirective,\r\n RaqmTableHeaderDirective,\r\n RaqmTableRowDirective,\r\n};\r\n\r\n// A nested readonly array lets Angular imports accept `RaqmTable` directly.\r\nexport const RaqmTable = [\r\n RaqmTableDirective,\r\n RaqmTableHeaderDirective,\r\n RaqmTableBodyDirective,\r\n RaqmTableFooterDirective,\r\n RaqmTableRowDirective,\r\n RaqmTableHeadDirective,\r\n RaqmTableCellDirective,\r\n RaqmTableCaptionDirective,\r\n] as const;\r\n"],"mappings":"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"}