@raqm/ui 0.1.1 → 0.2.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.
- package/CHANGELOG.md +26 -0
- package/README.md +87 -126
- package/fesm2022/raqm-ui-badge.mjs +3 -1
- package/fesm2022/raqm-ui-badge.mjs.map +1 -1
- package/fesm2022/raqm-ui-calendar.mjs +79 -12
- package/fesm2022/raqm-ui-calendar.mjs.map +1 -1
- package/fesm2022/raqm-ui-combobox.mjs +47 -23
- package/fesm2022/raqm-ui-combobox.mjs.map +1 -1
- package/fesm2022/raqm-ui-command.mjs +60 -12
- package/fesm2022/raqm-ui-command.mjs.map +1 -1
- package/fesm2022/raqm-ui-dialog.mjs +1 -3
- package/fesm2022/raqm-ui-dialog.mjs.map +1 -1
- package/fesm2022/raqm-ui-icon.mjs +160 -0
- package/fesm2022/raqm-ui-icon.mjs.map +1 -0
- package/fesm2022/raqm-ui-input-otp.mjs +7 -4
- package/fesm2022/raqm-ui-input-otp.mjs.map +1 -1
- package/fesm2022/raqm-ui-overlay-internal.mjs +15 -5
- package/fesm2022/raqm-ui-overlay-internal.mjs.map +1 -1
- package/fesm2022/raqm-ui-popover.mjs +51 -19
- package/fesm2022/raqm-ui-popover.mjs.map +1 -1
- package/fesm2022/raqm-ui-resizable.mjs +14 -4
- package/fesm2022/raqm-ui-resizable.mjs.map +1 -1
- package/fesm2022/raqm-ui-scroll-area.mjs +85 -29
- package/fesm2022/raqm-ui-scroll-area.mjs.map +1 -1
- package/fesm2022/raqm-ui-select.mjs +46 -19
- package/fesm2022/raqm-ui-select.mjs.map +1 -1
- package/fesm2022/raqm-ui-sidebar.mjs +13 -3
- package/fesm2022/raqm-ui-sidebar.mjs.map +1 -1
- package/fesm2022/raqm-ui-slider.mjs +59 -12
- package/fesm2022/raqm-ui-slider.mjs.map +1 -1
- package/fesm2022/raqm-ui-toast.mjs +60 -20
- package/fesm2022/raqm-ui-toast.mjs.map +1 -1
- package/fesm2022/raqm-ui-tooltip.mjs +28 -3
- package/fesm2022/raqm-ui-tooltip.mjs.map +1 -1
- package/fesm2022/raqm-ui.mjs +1 -0
- package/package.json +53 -20
- package/styles/accordion.css +1 -0
- package/styles/alert-dialog.css +1 -0
- package/styles/alert.css +1 -0
- package/styles/attachment.css +1 -0
- package/styles/avatar.css +1 -0
- package/styles/badge.css +1 -0
- package/styles/base.css +1 -0
- package/styles/button-group.css +1 -0
- package/styles/button.css +1 -0
- package/styles/checkbox.css +1 -0
- package/styles/combobox.css +1 -0
- package/styles/command.css +1 -0
- package/styles/common.css +17 -0
- package/styles/context-menu.css +1 -0
- package/styles/dialog.css +1 -0
- package/styles/drawer.css +1 -0
- package/styles/dropdown-menu.css +1 -0
- package/styles/empty.css +1 -0
- package/styles/field-parts.css +1 -0
- package/styles/field-relationships.css +1 -0
- package/styles/input-group-button.css +1 -0
- package/styles/input-group-relationships.css +1 -0
- package/styles/input-otp.css +1 -0
- package/styles/input.css +1 -0
- package/styles/item.css +1 -0
- package/styles/kbd.css +1 -0
- package/styles/menubar.css +1 -0
- package/styles/native-select.css +1 -0
- package/styles/navigation-menu.css +1 -0
- package/styles/overlay.css +1 -0
- package/styles/pagination.css +1 -0
- package/styles/popover.css +1 -0
- package/styles/questionnaire.css +1 -0
- package/styles/radio-group.css +1 -0
- package/styles/resizable.css +1 -0
- package/styles/sheet.css +1 -0
- package/styles/sidebar.css +1 -0
- package/styles/spinner.css +1 -0
- package/styles/switch.css +1 -0
- package/styles/table.css +1 -0
- package/styles/tabs.css +1 -0
- package/styles/textarea.css +1 -0
- package/styles/theme.css +50 -4324
- package/styles/toggle-group.css +1 -0
- package/styles/toggle.css +1 -0
- package/styles/tooltip.css +1 -0
- package/types/raqm-ui-calendar.d.ts +1 -0
- package/types/raqm-ui-combobox.d.ts +8 -4
- package/types/raqm-ui-command.d.ts +4 -0
- package/types/raqm-ui-dialog.d.ts +7 -1
- package/types/raqm-ui-icon.d.ts +65 -0
- package/types/raqm-ui-input-otp.d.ts +1 -0
- package/types/raqm-ui-resizable.d.ts +4 -0
- package/types/raqm-ui-scroll-area.d.ts +11 -0
- package/types/raqm-ui-slider.d.ts +1 -1
- package/types/raqm-ui-toast.d.ts +6 -0
- package/types/raqm-ui.d.ts +1 -0
- package/fesm2022/raqm-ui-carousel.mjs +0 -410
- package/fesm2022/raqm-ui-carousel.mjs.map +0 -1
- package/types/raqm-ui-carousel.d.ts +0 -81
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raqm-ui-sidebar.mjs","names":[],"sources":["../../../projects/ui/sidebar/sidebar-context.ts","../../../projects/ui/sidebar/sidebar-mobile.component.ts","../../../projects/ui/dialog/dialog.component.html","../../../projects/ui/sidebar/sidebar.component.ts","../../../projects/ui/sidebar/sidebar.component.html","../../../projects/ui/sidebar/sidebar-parts.ts","../../../projects/ui/sidebar/sidebar-provider.component.ts","../../../projects/ui/sidebar/public-api.ts"],"sourcesContent":["import { InjectionToken, Signal, inject } from '@angular/core';\r\n\r\n/** Nearest provider's reactive state; readable only in an injection context. */\r\nexport interface RaqmSidebarContext {\r\n readonly open: Signal<boolean>;\r\n readonly openMobile: Signal<boolean>;\r\n readonly mobile: Signal<boolean>;\r\n readonly state: Signal<'expanded' | 'collapsed'>;\r\n setOpen(value: boolean | ((open: boolean) => boolean)): void;\r\n setOpenMobile(value: boolean | ((open: boolean) => boolean)): void;\r\n toggleSidebar(): void;\r\n}\r\nexport const RAQM_SIDEBAR = new InjectionToken<RaqmSidebarContext>('RaqmSidebar');\r\nexport function useSidebar(): RaqmSidebarContext {\r\n return inject(RAQM_SIDEBAR);\r\n}\r\n","import { ChangeDetectionStrategy, Component, signal } from '@angular/core';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { RaqmButton } from '@raqm/ui/button';\r\nimport { RaqmSheetComponent } from '@raqm/ui/sheet';\r\nimport { RAQM_DIALOG, RAQM_DIALOG_POLICY, RaqmDialogPolicy } from '@raqm/ui/dialog';\r\n\r\n/** Internal Sheet specialization, sharing the shipped modal stack/focus lifecycle. */\r\n@Component({\r\n selector: 'raqm-sidebar-mobile',\r\n imports: [NgTemplateOutlet, RaqmButton],\r\n templateUrl: '../dialog/dialog.component.html',\r\n styleUrls: ['../dialog/dialog.component.scss', '../sheet/sheet.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n { provide: RAQM_DIALOG, useExisting: RaqmSidebarMobileComponent },\r\n {\r\n provide: RAQM_DIALOG_POLICY,\r\n useFactory: (): RaqmDialogPolicy => ({\r\n role: 'dialog',\r\n contentClass: 'raqm-sheet-content',\r\n touchOpening: signal(false),\r\n dismissOnBackdrop: true,\r\n side: signal('left'),\r\n paneClass: 'raqm-sheet-overlay-pane',\r\n backdropClass: 'raqm-sheet-overlay-backdrop',\r\n exitAnimationMs: 200,\r\n allowWithoutTrigger: true,\r\n }),\r\n },\r\n ],\r\n})\r\nexport class RaqmSidebarMobileComponent extends RaqmSheetComponent {}\r\n","<ng-content />\r\n\r\n<!-- The CDK container, not this wrapper, is the role=dialog element. -->\r\n<ng-template #panel>\r\n <div\r\n class=\"raqm-dialog-content\"\r\n [class]=\"policy?.contentClass ?? ''\"\r\n [attr.data-raqm-small]=\"policy?.small?.() ? '' : null\"\r\n [attr.data-raqm-side]=\"policy?.side?.() ?? null\"\r\n [attr.dir]=\"panelDir()\"\r\n [class.raqm-dialog-content--entering]=\"entering()\"\r\n [class.raqm-dialog-content--closing]=\"closing()\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"contentTemplate()\" />\r\n\r\n <!-- showCloseButton=false hides only this control; Escape and backdrop dismissal still close. -->\r\n @if (closeButtonVisible()) {\r\n <button\r\n raqm-button=\"ghost\"\r\n icon-small\r\n class=\"raqm-dialog-close\"\r\n [attr.aria-label]=\"closeLabelText()\"\r\n (click)=\"onCloseButtonClick()\"\r\n >\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 aria-hidden=\"true\"\r\n focusable=\"false\"\r\n >\r\n <path d=\"M18 6 6 18\" />\r\n <path d=\"m6 6 12 12\" />\r\n </svg>\r\n </button>\r\n }\r\n </div>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, effect, input, isDevMode } from '@angular/core';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n RaqmSheetContentDirective,\r\n RaqmSheetDescriptionDirective,\r\n RaqmSheetTitleDirective,\r\n} from '@raqm/ui/sheet';\r\nimport { useSidebar } from './sidebar-context';\r\nimport { RaqmSidebarMobileComponent } from './sidebar-mobile.component';\r\n\r\n@Component({\r\n imports: [\r\n NgTemplateOutlet,\r\n RaqmSidebarMobileComponent,\r\n RaqmSheetContentDirective,\r\n RaqmSheetTitleDirective,\r\n RaqmSheetDescriptionDirective,\r\n ],\r\n selector: 'raqm-sidebar',\r\n styleUrl: './sidebar.component.scss',\r\n templateUrl: './sidebar.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'raqm-sidebar',\r\n 'data-raqm-slot': 'sidebar',\r\n '[attr.data-raqm-state]': 'context.state()',\r\n '[attr.data-raqm-collapsible]': 'context.mobile() || context.open() ? \"\" : collapsible()',\r\n '[attr.data-raqm-variant]': 'variant()',\r\n '[attr.data-raqm-side]': 'side()',\r\n '[attr.data-raqm-mobile]': 'context.mobile() && collapsible() !== \"none\" ? \"true\" : null',\r\n '[attr.data-raqm-static]': 'collapsible() === \"none\" ? \"true\" : null',\r\n },\r\n})\r\nexport class RaqmSidebarComponent {\r\n readonly context = useSidebar();\r\n readonly side = input<'left' | 'right'>('left');\r\n readonly variant = input<'sidebar' | 'floating' | 'inset'>('sidebar');\r\n readonly collapsible = input<'offcanvas' | 'icon' | 'none'>('offcanvas');\r\n readonly dir = input<'ltr' | 'rtl' | undefined>(undefined);\r\n\r\n /** The mobile sheet's accessible name and visible title; application-supplied. */\r\n readonly label = input<string | undefined>(undefined);\r\n\r\n readonly description = input<string | undefined>(undefined);\r\n\r\n constructor() {\r\n effect(() => {\r\n if (isDevMode() && this.context.mobile() && this.collapsible() !== 'none' && !this.label()) {\r\n console.error('[raqm-sidebar] The mobile sheet has no accessible name. Provide `label`.');\r\n }\r\n });\r\n }\r\n\r\n protected onMobileKeydown(event: KeyboardEvent): void {\r\n if (\r\n !event.defaultPrevented &&\r\n !event.repeat &&\r\n event.key.toLowerCase() === 'b' &&\r\n (event.ctrlKey || event.metaKey)\r\n ) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.context.toggleSidebar();\r\n }\r\n }\r\n}\r\n","<ng-template #body><ng-content /></ng-template>\r\n@if (context.mobile() && collapsible() !== 'none') {\r\n <raqm-sidebar-mobile\r\n [open]=\"context.openMobile()\"\r\n (openChange)=\"context.setOpenMobile($event)\"\r\n [dir]=\"dir()\"\r\n [label]=\"label()\"\r\n panelClass=\"raqm-sidebar-mobile-pane\"\r\n [side]=\"side()\"\r\n [showCloseButton]=\"false\"\r\n >\r\n <ng-template raqm-sheet-content>\r\n <div\r\n class=\"raqm-sidebar-mobile-body\"\r\n data-raqm-slot=\"sidebar\"\r\n data-raqm-mobile=\"true\"\r\n [attr.dir]=\"dir()\"\r\n (keydown)=\"onMobileKeydown($event)\"\r\n >\r\n @if (label() || description()) {\r\n <div class=\"raqm-sidebar-sr-only\">\r\n @if (label()) {\r\n <h2 raqm-sheet-title>{{ label() }}</h2>\r\n }\r\n @if (description()) {\r\n <p raqm-sheet-description>{{ description() }}</p>\r\n }\r\n </div>\r\n }\r\n <ng-container [ngTemplateOutlet]=\"body\" />\r\n </div>\r\n </ng-template>\r\n </raqm-sidebar-mobile>\r\n} @else {\r\n <div class=\"raqm-sidebar-gap\" data-raqm-slot=\"sidebar-gap\"></div>\r\n <div\r\n class=\"raqm-sidebar-container\"\r\n data-raqm-slot=\"sidebar-container\"\r\n [attr.data-raqm-side]=\"side()\"\r\n [attr.dir]=\"dir()\"\r\n >\r\n <div\r\n class=\"raqm-sidebar-inner\"\r\n data-raqm-slot=\"sidebar-inner\"\r\n [attr.inert]=\"!context.open() && collapsible() === 'offcanvas' ? '' : null\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"body\" />\r\n </div>\r\n <ng-content select=\"[raqm-sidebar-rail]\" />\r\n </div>\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Directive,\r\n ElementRef,\r\n afterNextRender,\r\n booleanAttribute,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n isDevMode,\r\n untracked,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { RaqmInput } from '@raqm/ui/input';\r\nimport { RaqmSkeleton } from '@raqm/ui/skeleton';\r\nimport { RaqmTooltip, RaqmTooltipComponent, RaqmTooltipTriggerRef } from '@raqm/ui/tooltip';\r\nimport { useSidebar } from './sidebar-context';\r\n\r\n@Directive({\r\n selector: '[raqm-sidebar-header]',\r\n host: {\r\n class: 'raqm-sidebar-header',\r\n 'data-raqm-slot': 'sidebar-header',\r\n 'data-raqm-sidebar': 'header',\r\n },\r\n})\r\nexport class RaqmSidebarHeaderDirective {}\r\n@Directive({\r\n selector: '[raqm-sidebar-footer]',\r\n host: {\r\n class: 'raqm-sidebar-footer',\r\n 'data-raqm-slot': 'sidebar-footer',\r\n 'data-raqm-sidebar': 'footer',\r\n },\r\n})\r\nexport class RaqmSidebarFooterDirective {}\r\n@Directive({\r\n selector: '[raqm-sidebar-content]',\r\n host: {\r\n class: 'raqm-sidebar-content',\r\n 'data-raqm-slot': 'sidebar-content',\r\n 'data-raqm-sidebar': 'content',\r\n },\r\n})\r\nexport class RaqmSidebarContentDirective {}\r\n@Directive({\r\n selector: '[raqm-sidebar-group]',\r\n host: {\r\n class: 'raqm-sidebar-group',\r\n 'data-raqm-slot': 'sidebar-group',\r\n 'data-raqm-sidebar': 'group',\r\n },\r\n})\r\nexport class RaqmSidebarGroupDirective {}\r\n@Directive({\r\n selector: '[raqm-sidebar-group-label]',\r\n host: {\r\n class: 'raqm-sidebar-group-label',\r\n 'data-raqm-slot': 'sidebar-group-label',\r\n 'data-raqm-sidebar': 'group-label',\r\n },\r\n})\r\nexport class RaqmSidebarGroupLabelDirective {}\r\n@Directive({\r\n selector: '[raqm-sidebar-group-content]',\r\n host: {\r\n class: 'raqm-sidebar-group-content',\r\n 'data-raqm-slot': 'sidebar-group-content',\r\n 'data-raqm-sidebar': 'group-content',\r\n },\r\n})\r\nexport class RaqmSidebarGroupContentDirective {}\r\n@Directive({\r\n selector: 'button[raqm-sidebar-group-action]',\r\n host: {\r\n class: 'raqm-sidebar-group-action',\r\n 'data-raqm-slot': 'sidebar-group-action',\r\n 'data-raqm-sidebar': 'group-action',\r\n },\r\n})\r\nexport class RaqmSidebarGroupActionDirective {\r\n constructor() {\r\n const host = inject<ElementRef<HTMLButtonElement>>(ElementRef).nativeElement;\r\n if (!host.hasAttribute('type')) host.setAttribute('type', 'button');\r\n }\r\n}\r\n@Directive({\r\n selector: 'ul[raqm-sidebar-menu]',\r\n host: {\r\n class: 'raqm-sidebar-menu',\r\n 'data-raqm-slot': 'sidebar-menu',\r\n 'data-raqm-sidebar': 'menu',\r\n },\r\n})\r\nexport class RaqmSidebarMenuDirective {}\r\n@Directive({\r\n selector: 'li[raqm-sidebar-menu-item]',\r\n host: {\r\n class: 'raqm-sidebar-menu-item',\r\n 'data-raqm-slot': 'sidebar-menu-item',\r\n 'data-raqm-sidebar': 'menu-item',\r\n },\r\n})\r\nexport class RaqmSidebarMenuItemDirective {}\r\n@Directive({\r\n selector: 'ul[raqm-sidebar-menu-sub]',\r\n host: {\r\n class: 'raqm-sidebar-menu-sub',\r\n 'data-raqm-slot': 'sidebar-menu-sub',\r\n 'data-raqm-sidebar': 'menu-sub',\r\n },\r\n})\r\nexport class RaqmSidebarMenuSubDirective {}\r\n@Directive({\r\n selector: 'li[raqm-sidebar-menu-sub-item]',\r\n host: {\r\n class: 'raqm-sidebar-menu-sub-item',\r\n 'data-raqm-slot': 'sidebar-menu-sub-item',\r\n 'data-raqm-sidebar': 'menu-sub-item',\r\n },\r\n})\r\nexport class RaqmSidebarMenuSubItemDirective {}\r\n@Directive({\r\n selector: '[raqm-sidebar-menu-badge]',\r\n host: {\r\n class: 'raqm-sidebar-menu-badge',\r\n 'data-raqm-slot': 'sidebar-menu-badge',\r\n 'data-raqm-sidebar': 'menu-badge',\r\n },\r\n})\r\nexport class RaqmSidebarMenuBadgeDirective {}\r\n@Directive({\r\n selector: 'main[raqm-sidebar-inset]',\r\n host: { class: 'raqm-sidebar-inset', 'data-raqm-slot': 'sidebar-inset' },\r\n})\r\nexport class RaqmSidebarInsetDirective {}\r\n@Directive({\r\n selector: 'input[raqm-sidebar-input]',\r\n hostDirectives: [RaqmInput],\r\n host: {\r\n class: 'raqm-sidebar-input',\r\n 'data-raqm-slot': 'sidebar-input',\r\n 'data-raqm-sidebar': 'input',\r\n },\r\n})\r\nexport class RaqmSidebarInputDirective {}\r\n/** Separator part; keeps the shipped raqm-separator's semantic orientation. */\r\n@Directive({\r\n selector: 'raqm-separator[raqm-sidebar-separator]',\r\n host: {\r\n class: 'raqm-sidebar-separator',\r\n 'data-raqm-slot': 'sidebar-separator',\r\n 'data-raqm-sidebar': 'separator',\r\n },\r\n})\r\nexport class RaqmSidebarSeparatorDirective {}\r\n\r\n@Directive({\r\n selector: 'button[raqm-sidebar-menu-action]',\r\n host: {\r\n class: 'raqm-sidebar-menu-action',\r\n 'data-raqm-slot': 'sidebar-menu-action',\r\n 'data-raqm-sidebar': 'menu-action',\r\n '[attr.data-raqm-show-on-hover]': 'showOnHover() ? \"true\" : null',\r\n },\r\n})\r\nexport class RaqmSidebarMenuActionDirective {\r\n readonly showOnHover = input(false, { transform: booleanAttribute });\r\n constructor() {\r\n const host = inject<ElementRef<HTMLButtonElement>>(ElementRef).nativeElement;\r\n if (!host.hasAttribute('type')) host.setAttribute('type', 'button');\r\n }\r\n}\r\n\r\n/** Native button/anchor host; routerLink and menu directives compose on it directly. */\r\n@Component({\r\n selector: 'button[raqm-sidebar-menu-button], a[raqm-sidebar-menu-button]',\r\n imports: [RaqmTooltip],\r\n template:\r\n '<ng-content /><raqm-tooltip [disabled]=\"!showTooltip()\" [side]=\"tooltipSide()\" [align]=\"tooltipAlign()\" [sideOffset]=\"tooltipOffset()\"><ng-template raqm-tooltip-content>{{ tooltipText() }}</ng-template></raqm-tooltip>',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'raqm-sidebar-menu-button',\r\n 'data-raqm-slot': 'sidebar-menu-button',\r\n 'data-raqm-sidebar': 'menu-button',\r\n '[attr.data-raqm-size]': 'activeSize()',\r\n '[attr.data-raqm-variant]': 'activeVariant()',\r\n '[attr.data-raqm-active]': 'active() ? \"true\" : null',\r\n '(pointerenter)': 'pointer($event, true)',\r\n '(pointerleave)': 'pointer($event, false)',\r\n '(focus)': 'focus(true)',\r\n '(blur)': 'focus(false)',\r\n '(pointerdown)': 'dismiss()',\r\n '(click)': 'dismiss()',\r\n '(keydown.escape)': 'dismiss()',\r\n },\r\n})\r\nexport class RaqmSidebarMenuButtonComponent {\r\n /** Bare or empty marker uses the default appearance. */\r\n readonly appearance = input<'' | 'default' | 'outline'>('', {\r\n alias: 'raqm-sidebar-menu-button',\r\n });\r\n readonly small = input(false, { transform: booleanAttribute });\r\n readonly large = input(false, { transform: booleanAttribute });\r\n readonly active = input(false, { transform: booleanAttribute });\r\n protected readonly activeVariant = computed(() => this.appearance() || 'default');\r\n protected readonly activeSize = computed<'sm' | 'lg' | null>(() => {\r\n if (this.small() && this.large()) {\r\n throw new Error('RaqmSidebarMenuButton: use only one size attribute per button.');\r\n }\r\n return this.small() ? 'sm' : this.large() ? 'lg' : null;\r\n });\r\n readonly tooltip = input<string | RaqmSidebarTooltip | undefined>(undefined);\r\n private readonly context = useSidebar();\r\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\r\n private readonly tip = viewChild(RaqmTooltipComponent);\r\n protected readonly tooltipText = computed(() => {\r\n const tip = this.tooltip();\r\n return typeof tip === 'string' ? tip : (tip?.text ?? '');\r\n });\r\n protected readonly tooltipSide = computed(() => {\r\n const tip = this.tooltip();\r\n return typeof tip === 'object' ? (tip.side ?? 'right') : 'right';\r\n });\r\n protected readonly tooltipAlign = computed(() => {\r\n const tip = this.tooltip();\r\n return typeof tip === 'object' ? (tip.align ?? 'center') : 'center';\r\n });\r\n protected readonly tooltipOffset = computed(() => {\r\n const tip = this.tooltip();\r\n return typeof tip === 'object' ? (tip.sideOffset ?? 4) : 4;\r\n });\r\n protected readonly showTooltip = computed(() => {\r\n const tip = this.tooltip();\r\n return (\r\n !!this.tooltipText() &&\r\n this.context.state() === 'collapsed' &&\r\n !this.context.mobile() &&\r\n !(typeof tip === 'object' && tip.hidden)\r\n );\r\n });\r\n private readonly ref: RaqmTooltipTriggerRef = {\r\n element: this.host,\r\n get disabled() {\r\n return (\r\n (this.element as HTMLButtonElement).disabled ||\r\n this.element.getAttribute('aria-disabled') === 'true'\r\n );\r\n },\r\n };\r\n constructor() {\r\n if (this.host.tagName === 'BUTTON' && !this.host.hasAttribute('type'))\r\n this.host.setAttribute('type', 'button');\r\n effect((onCleanup) => {\r\n const tip = this.tip();\r\n untracked(() => tip?.registerTrigger(this.ref));\r\n onCleanup(() => untracked(() => tip?.unregisterTrigger(this.ref)));\r\n });\r\n effect((onCleanup) => {\r\n const tip = this.tip();\r\n const id = tip?.open() ? tip.tooltipId() : null;\r\n if (!id) return;\r\n const tokens = new Set(\r\n (this.host.getAttribute('aria-describedby') ?? '').split(/\\s+/).filter(Boolean),\r\n );\r\n tokens.add(id);\r\n this.host.setAttribute('aria-describedby', [...tokens].join(' '));\r\n onCleanup(() => {\r\n const remaining = (this.host.getAttribute('aria-describedby') ?? '')\r\n .split(/\\s+/)\r\n .filter((token) => token && token !== id);\r\n if (remaining.length) this.host.setAttribute('aria-describedby', remaining.join(' '));\r\n else this.host.removeAttribute('aria-describedby');\r\n });\r\n });\r\n }\r\n protected pointer(event: Event, entering: boolean): void {\r\n if ((event as PointerEvent).pointerType !== 'mouse') return;\r\n if (entering) this.tip()?.requestOpen(this.ref, 'mouse');\r\n else this.tip()?.requestClose(this.ref, 'mouse');\r\n }\r\n protected focus(entering: boolean): void {\r\n if (entering) this.tip()?.requestOpen(this.ref, 'focus');\r\n else this.tip()?.requestClose(this.ref, 'focus');\r\n }\r\n protected dismiss(): void {\r\n this.tip()?.requestClose(this.ref, 'press');\r\n }\r\n}\r\n\r\nexport interface RaqmSidebarTooltip {\r\n text: string;\r\n side?: 'top' | 'right' | 'bottom' | 'left';\r\n align?: 'start' | 'center' | 'end';\r\n sideOffset?: number;\r\n hidden?: boolean;\r\n}\r\n\r\n@Directive({\r\n selector: 'a[raqm-sidebar-menu-sub-button], button[raqm-sidebar-menu-sub-button]',\r\n host: {\r\n class: 'raqm-sidebar-menu-sub-button',\r\n 'data-raqm-slot': 'sidebar-menu-sub-button',\r\n 'data-raqm-sidebar': 'menu-sub-button',\r\n '[attr.data-raqm-size]': 'small() ? \"sm\" : null',\r\n '[attr.data-raqm-active]': 'active() ? \"true\" : null',\r\n },\r\n})\r\nexport class RaqmSidebarMenuSubButtonDirective {\r\n readonly small = input(false, { transform: booleanAttribute });\r\n readonly active = input(false, { transform: booleanAttribute });\r\n constructor() {\r\n const host = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\r\n if (host.tagName === 'BUTTON' && !host.hasAttribute('type'))\r\n host.setAttribute('type', 'button');\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'button[raqm-sidebar-trigger]',\r\n template:\r\n '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"/><path d=\"M9 3v18\"/></svg>',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'raqm-sidebar-trigger raqm-button',\r\n 'data-raqm-slot': 'sidebar-trigger',\r\n 'data-raqm-sidebar': 'trigger',\r\n 'data-raqm-variant': 'ghost',\r\n 'data-raqm-size': 'icon-sm',\r\n '(click)': 'toggle($event)',\r\n },\r\n})\r\nexport class RaqmSidebarTriggerComponent {\r\n private readonly context = useSidebar();\r\n constructor() {\r\n const host = inject<ElementRef<HTMLButtonElement>>(ElementRef).nativeElement;\r\n if (!host.hasAttribute('type')) host.setAttribute('type', 'button');\r\n afterNextRender(() => {\r\n if (isDevMode() && !host.hasAttribute('aria-label')) {\r\n console.error('[raqm-sidebar] The trigger has no accessible name. Provide `aria-label`.');\r\n }\r\n });\r\n }\r\n protected toggle(event: MouseEvent): void {\r\n if (!event.defaultPrevented) this.context.toggleSidebar();\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: 'button[raqm-sidebar-rail]',\r\n host: {\r\n class: 'raqm-sidebar-rail',\r\n tabindex: '-1',\r\n 'data-raqm-slot': 'sidebar-rail',\r\n 'data-raqm-sidebar': 'rail',\r\n '(click)': 'context.toggleSidebar()',\r\n },\r\n})\r\nexport class RaqmSidebarRailDirective {\r\n protected readonly context = useSidebar();\r\n constructor() {\r\n const host = inject<ElementRef<HTMLButtonElement>>(ElementRef).nativeElement;\r\n if (!host.hasAttribute('type')) host.setAttribute('type', 'button');\r\n afterNextRender(() => {\r\n if (isDevMode() && !host.hasAttribute('aria-label')) {\r\n console.error('[raqm-sidebar] The rail has no accessible name. Provide `aria-label`.');\r\n }\r\n });\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'raqm-sidebar-menu-skeleton',\r\n imports: [RaqmSkeleton],\r\n template:\r\n '@if (showIcon()) { <raqm-skeleton class=\"raqm-sidebar-menu-skeleton-icon\" data-raqm-sidebar=\"menu-skeleton-icon\" /> }<raqm-skeleton class=\"raqm-sidebar-menu-skeleton-text\" data-raqm-sidebar=\"menu-skeleton-text\" />',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'raqm-sidebar-menu-skeleton',\r\n 'data-raqm-slot': 'sidebar-menu-skeleton',\r\n 'data-raqm-sidebar': 'menu-skeleton',\r\n 'aria-hidden': 'true',\r\n },\r\n})\r\nexport class RaqmSidebarMenuSkeletonComponent {\r\n readonly showIcon = input(false, { transform: booleanAttribute });\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n ElementRef,\r\n afterNextRender,\r\n booleanAttribute,\r\n computed,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { RAQM_SIDEBAR, RaqmSidebarContext } from './sidebar-context';\r\n\r\n/** Provider-scoped state; the shortcut toggles only this provider and cookies are write-only. */\r\n@Component({\r\n selector: 'raqm-sidebar-provider',\r\n exportAs: 'raqmSidebarProvider',\r\n template: '<ng-content />',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: RAQM_SIDEBAR, useExisting: RaqmSidebarProviderComponent }],\r\n host: {\r\n class: 'raqm-sidebar-provider',\r\n 'data-raqm-slot': 'sidebar-wrapper',\r\n '(keydown)': 'onKeydown($event)',\r\n },\r\n})\r\nexport class RaqmSidebarProviderComponent implements RaqmSidebarContext {\r\n readonly defaultOpen = input(true, { transform: booleanAttribute });\r\n readonly openInput = input<boolean | undefined>(undefined, { alias: 'open' });\r\n readonly openMobileInput = input<boolean | undefined>(undefined, { alias: 'openMobile' });\r\n readonly openChange = output<boolean>();\r\n readonly openMobileChange = output<boolean>();\r\n private readonly desktop = signal<boolean | undefined>(undefined);\r\n private readonly mobileOpen = signal(false);\r\n private readonly mobileState = signal(false);\r\n readonly open = computed(() => this.openInput() ?? this.desktop() ?? this.defaultOpen());\r\n readonly openMobile = computed(() => this.openMobileInput() ?? this.mobileOpen());\r\n readonly mobile = this.mobileState.asReadonly();\r\n readonly state = computed(() => (this.open() ? ('expanded' as const) : ('collapsed' as const)));\r\n private readonly document = inject(DOCUMENT);\r\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly destroy = inject(DestroyRef);\r\n\r\n constructor() {\r\n afterNextRender(() => {\r\n const media = this.document.defaultView?.matchMedia('(max-width: 767px)');\r\n if (!media) return;\r\n const update = () => this.mobileState.set(media.matches);\r\n update();\r\n media.addEventListener('change', update);\r\n this.destroy.onDestroy(() => media.removeEventListener('change', update));\r\n });\r\n }\r\n setOpen(value: boolean | ((open: boolean) => boolean)): void {\r\n const next = typeof value === 'function' ? value(this.open()) : value;\r\n if (this.openInput() === undefined) this.desktop.set(next);\r\n this.openChange.emit(next);\r\n if (this.document.defaultView) {\r\n try {\r\n this.document.cookie = `sidebar_state=${next}; path=/; max-age=604800; SameSite=Lax`;\r\n } catch {\r\n /* Blocked storage must not break disclosure. */\r\n }\r\n }\r\n }\r\n setOpenMobile(value: boolean | ((open: boolean) => boolean)): void {\r\n const next = typeof value === 'function' ? value(this.openMobile()) : value;\r\n if (this.openMobileInput() === undefined) this.mobileOpen.set(next);\r\n this.openMobileChange.emit(next);\r\n }\r\n toggleSidebar(): void {\r\n if (this.mobile()) this.setOpenMobile((open) => !open);\r\n else this.setOpen((open) => !open);\r\n }\r\n protected onKeydown(event: KeyboardEvent): void {\r\n const target = event.target as HTMLElement | null;\r\n if (\r\n event.defaultPrevented ||\r\n event.repeat ||\r\n event.key.toLowerCase() !== 'b' ||\r\n !(event.metaKey || event.ctrlKey)\r\n )\r\n return;\r\n if (target?.closest('raqm-sidebar-provider') !== this.host.nativeElement) return;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.toggleSidebar();\r\n }\r\n}\r\n","// Public API for the `@raqm/ui/sidebar` entry point; the root entry re-exports these.\r\nimport { RaqmSidebarComponent } from './sidebar.component';\r\nimport {\r\n RaqmSidebarContentDirective,\r\n RaqmSidebarFooterDirective,\r\n RaqmSidebarGroupActionDirective,\r\n RaqmSidebarGroupContentDirective,\r\n RaqmSidebarGroupDirective,\r\n RaqmSidebarGroupLabelDirective,\r\n RaqmSidebarHeaderDirective,\r\n RaqmSidebarInputDirective,\r\n RaqmSidebarInsetDirective,\r\n RaqmSidebarMenuActionDirective,\r\n RaqmSidebarMenuBadgeDirective,\r\n RaqmSidebarMenuButtonComponent,\r\n RaqmSidebarMenuDirective,\r\n RaqmSidebarMenuItemDirective,\r\n RaqmSidebarMenuSkeletonComponent,\r\n RaqmSidebarMenuSubButtonDirective,\r\n RaqmSidebarMenuSubDirective,\r\n RaqmSidebarMenuSubItemDirective,\r\n RaqmSidebarRailDirective,\r\n RaqmSidebarSeparatorDirective,\r\n RaqmSidebarTriggerComponent,\r\n} from './sidebar-parts';\r\nimport { RaqmSidebarProviderComponent } from './sidebar-provider.component';\r\n\r\nexport { RAQM_SIDEBAR, type RaqmSidebarContext, useSidebar } from './sidebar-context';\r\nexport { RaqmSidebarProviderComponent } from './sidebar-provider.component';\r\nexport { RaqmSidebarComponent } from './sidebar.component';\r\nexport {\r\n RaqmSidebarHeaderDirective,\r\n RaqmSidebarFooterDirective,\r\n RaqmSidebarContentDirective,\r\n RaqmSidebarGroupDirective,\r\n RaqmSidebarGroupLabelDirective,\r\n RaqmSidebarGroupContentDirective,\r\n RaqmSidebarGroupActionDirective,\r\n RaqmSidebarMenuDirective,\r\n RaqmSidebarMenuItemDirective,\r\n RaqmSidebarMenuSubDirective,\r\n RaqmSidebarMenuSubItemDirective,\r\n RaqmSidebarMenuBadgeDirective,\r\n RaqmSidebarInsetDirective,\r\n RaqmSidebarInputDirective,\r\n RaqmSidebarSeparatorDirective,\r\n RaqmSidebarMenuActionDirective,\r\n RaqmSidebarMenuButtonComponent,\r\n RaqmSidebarMenuSubButtonDirective,\r\n RaqmSidebarTriggerComponent,\r\n RaqmSidebarRailDirective,\r\n RaqmSidebarMenuSkeletonComponent,\r\n} from './sidebar-parts';\r\nexport type { RaqmSidebarTooltip } from './sidebar-parts';\r\n\r\nexport const RaqmSidebar = [\r\n RaqmSidebarProviderComponent,\r\n RaqmSidebarComponent,\r\n RaqmSidebarTriggerComponent,\r\n RaqmSidebarRailDirective,\r\n RaqmSidebarInsetDirective,\r\n RaqmSidebarInputDirective,\r\n RaqmSidebarHeaderDirective,\r\n RaqmSidebarFooterDirective,\r\n RaqmSidebarSeparatorDirective,\r\n RaqmSidebarContentDirective,\r\n RaqmSidebarGroupDirective,\r\n RaqmSidebarGroupLabelDirective,\r\n RaqmSidebarGroupActionDirective,\r\n RaqmSidebarGroupContentDirective,\r\n RaqmSidebarMenuDirective,\r\n RaqmSidebarMenuItemDirective,\r\n RaqmSidebarMenuButtonComponent,\r\n RaqmSidebarMenuActionDirective,\r\n RaqmSidebarMenuBadgeDirective,\r\n RaqmSidebarMenuSkeletonComponent,\r\n RaqmSidebarMenuSubDirective,\r\n RaqmSidebarMenuSubItemDirective,\r\n RaqmSidebarMenuSubButtonDirective,\r\n] as const;\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"raqm-ui-sidebar.mjs","names":[],"sources":["../../../projects/ui/sidebar/sidebar-context.ts","../../../projects/ui/sidebar/sidebar-mobile.component.ts","../../../projects/ui/dialog/dialog.component.html","../../../projects/ui/sidebar/sidebar.component.ts","../../../projects/ui/sidebar/sidebar.component.html","../../../projects/ui/sidebar/sidebar-parts.ts","../../../projects/ui/sidebar/sidebar-provider.component.ts","../../../projects/ui/sidebar/public-api.ts"],"sourcesContent":["import { InjectionToken, Signal, inject } from '@angular/core';\r\n\r\n/** Nearest provider's reactive state; readable only in an injection context. */\r\nexport interface RaqmSidebarContext {\r\n readonly open: Signal<boolean>;\r\n readonly openMobile: Signal<boolean>;\r\n readonly mobile: Signal<boolean>;\r\n readonly state: Signal<'expanded' | 'collapsed'>;\r\n setOpen(value: boolean | ((open: boolean) => boolean)): void;\r\n setOpenMobile(value: boolean | ((open: boolean) => boolean)): void;\r\n toggleSidebar(): void;\r\n}\r\nexport const RAQM_SIDEBAR = new InjectionToken<RaqmSidebarContext>('RaqmSidebar');\r\nexport function useSidebar(): RaqmSidebarContext {\r\n return inject(RAQM_SIDEBAR);\r\n}\r\n","import { ChangeDetectionStrategy, Component, signal } from '@angular/core';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { RaqmButton } from '@raqm/ui/button';\r\nimport { RaqmSheetComponent } from '@raqm/ui/sheet';\r\nimport { RAQM_DIALOG, RAQM_DIALOG_POLICY, RaqmDialogPolicy } from '@raqm/ui/dialog';\r\n\r\n/** Internal Sheet specialization, sharing the shipped modal stack/focus lifecycle. */\r\n@Component({\r\n selector: 'raqm-sidebar-mobile',\r\n imports: [NgTemplateOutlet, RaqmButton],\r\n templateUrl: '../dialog/dialog.component.html',\r\n styleUrls: ['../dialog/dialog.component.scss', '../sheet/sheet.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n { provide: RAQM_DIALOG, useExisting: RaqmSidebarMobileComponent },\r\n {\r\n provide: RAQM_DIALOG_POLICY,\r\n useFactory: (): RaqmDialogPolicy => ({\r\n role: 'dialog',\r\n contentClass: 'raqm-sheet-content',\r\n touchOpening: signal(false),\r\n dismissOnBackdrop: true,\r\n side: signal('left'),\r\n paneClass: 'raqm-sheet-overlay-pane',\r\n backdropClass: 'raqm-sheet-overlay-backdrop',\r\n exitAnimationMs: 200,\r\n allowWithoutTrigger: true,\r\n }),\r\n },\r\n ],\r\n})\r\nexport class RaqmSidebarMobileComponent extends RaqmSheetComponent {}\r\n","<ng-content />\r\n\r\n<!-- The CDK container, not this wrapper, is the role=dialog element. -->\r\n<ng-template #panel>\r\n <div\r\n class=\"raqm-dialog-content\"\r\n [class]=\"policy?.contentClass ?? ''\"\r\n [attr.data-raqm-small]=\"policy?.small?.() ? '' : null\"\r\n [attr.data-raqm-side]=\"policy?.side?.() ?? null\"\r\n [attr.dir]=\"panelDir()\"\r\n [class.raqm-dialog-content--entering]=\"entering()\"\r\n [class.raqm-dialog-content--closing]=\"closing()\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"contentTemplate()\" />\r\n\r\n <!-- showCloseButton=false hides only this control; Escape and backdrop dismissal still close. -->\r\n @if (closeButtonVisible()) {\r\n <button\r\n raqm-button=\"ghost\"\r\n icon-small\r\n class=\"raqm-dialog-close\"\r\n [attr.aria-label]=\"closeLabelText()\"\r\n (click)=\"onCloseButtonClick()\"\r\n >\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 aria-hidden=\"true\"\r\n focusable=\"false\"\r\n >\r\n <path d=\"M18 6 6 18\" />\r\n <path d=\"m6 6 12 12\" />\r\n </svg>\r\n </button>\r\n }\r\n </div>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, effect, input, isDevMode } from '@angular/core';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n RaqmSheetContentDirective,\r\n RaqmSheetDescriptionDirective,\r\n RaqmSheetTitleDirective,\r\n} from '@raqm/ui/sheet';\r\nimport { useSidebar } from './sidebar-context';\r\nimport { RaqmSidebarMobileComponent } from './sidebar-mobile.component';\r\n\r\n@Component({\r\n imports: [\r\n NgTemplateOutlet,\r\n RaqmSidebarMobileComponent,\r\n RaqmSheetContentDirective,\r\n RaqmSheetTitleDirective,\r\n RaqmSheetDescriptionDirective,\r\n ],\r\n selector: 'raqm-sidebar',\r\n styleUrl: './sidebar.component.scss',\r\n templateUrl: './sidebar.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'raqm-sidebar',\r\n 'data-raqm-slot': 'sidebar',\r\n '[attr.data-raqm-state]': 'context.state()',\r\n '[attr.data-raqm-collapsible]': 'context.mobile() || context.open() ? \"\" : collapsible()',\r\n '[attr.data-raqm-variant]': 'variant()',\r\n '[attr.data-raqm-side]': 'side()',\r\n '[attr.data-raqm-mobile]': 'context.mobile() && collapsible() !== \"none\" ? \"true\" : null',\r\n '[attr.data-raqm-static]': 'collapsible() === \"none\" ? \"true\" : null',\r\n },\r\n})\r\nexport class RaqmSidebarComponent {\r\n readonly context = useSidebar();\r\n readonly side = input<'left' | 'right'>('left');\r\n readonly variant = input<'sidebar' | 'floating' | 'inset'>('sidebar');\r\n readonly collapsible = input<'offcanvas' | 'icon' | 'none'>('offcanvas');\r\n readonly dir = input<'ltr' | 'rtl' | undefined>(undefined);\r\n\r\n /** The mobile sheet's accessible name and visible title; application-supplied. */\r\n readonly label = input<string | undefined>(undefined);\r\n\r\n readonly description = input<string | undefined>(undefined);\r\n\r\n constructor() {\r\n effect(() => {\r\n if (isDevMode() && this.context.mobile() && this.collapsible() !== 'none' && !this.label()) {\r\n console.error('[raqm-sidebar] The mobile sheet has no accessible name. Provide `label`.');\r\n }\r\n });\r\n }\r\n\r\n protected onMobileKeydown(event: KeyboardEvent): void {\r\n if (\r\n !event.defaultPrevented &&\r\n !event.repeat &&\r\n event.key.toLowerCase() === 'b' &&\r\n (event.ctrlKey || event.metaKey)\r\n ) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.context.toggleSidebar();\r\n }\r\n }\r\n}\r\n","<ng-template #body><ng-content /></ng-template>\r\n@if (context.mobile() && collapsible() !== 'none') {\r\n <raqm-sidebar-mobile\r\n [open]=\"context.openMobile()\"\r\n (openChange)=\"context.setOpenMobile($event)\"\r\n [dir]=\"dir()\"\r\n [label]=\"label()\"\r\n panelClass=\"raqm-sidebar-mobile-pane\"\r\n [side]=\"side()\"\r\n [showCloseButton]=\"false\"\r\n >\r\n <ng-template raqm-sheet-content>\r\n <div\r\n class=\"raqm-sidebar-mobile-body\"\r\n data-raqm-slot=\"sidebar\"\r\n data-raqm-mobile=\"true\"\r\n [attr.dir]=\"dir()\"\r\n (keydown)=\"onMobileKeydown($event)\"\r\n >\r\n @if (label() || description()) {\r\n <div class=\"raqm-sidebar-sr-only\">\r\n @if (label()) {\r\n <h2 raqm-sheet-title>{{ label() }}</h2>\r\n }\r\n @if (description()) {\r\n <p raqm-sheet-description>{{ description() }}</p>\r\n }\r\n </div>\r\n }\r\n <ng-container [ngTemplateOutlet]=\"body\" />\r\n </div>\r\n </ng-template>\r\n </raqm-sidebar-mobile>\r\n} @else {\r\n <div class=\"raqm-sidebar-gap\" data-raqm-slot=\"sidebar-gap\"></div>\r\n <div\r\n class=\"raqm-sidebar-container\"\r\n data-raqm-slot=\"sidebar-container\"\r\n [attr.data-raqm-side]=\"side()\"\r\n [attr.dir]=\"dir()\"\r\n >\r\n <div\r\n class=\"raqm-sidebar-inner\"\r\n data-raqm-slot=\"sidebar-inner\"\r\n [attr.inert]=\"!context.open() && collapsible() === 'offcanvas' ? '' : null\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"body\" />\r\n </div>\r\n <ng-content select=\"[raqm-sidebar-rail]\" />\r\n </div>\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Directive,\r\n ElementRef,\r\n afterNextRender,\r\n booleanAttribute,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n isDevMode,\r\n untracked,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { RaqmInput } from '@raqm/ui/input';\r\nimport { RaqmSkeleton } from '@raqm/ui/skeleton';\r\nimport { RaqmTooltip, RaqmTooltipComponent, RaqmTooltipTriggerRef } from '@raqm/ui/tooltip';\r\nimport { useSidebar } from './sidebar-context';\r\n\r\n@Directive({\r\n selector: '[raqm-sidebar-header]',\r\n host: {\r\n class: 'raqm-sidebar-header',\r\n 'data-raqm-slot': 'sidebar-header',\r\n 'data-raqm-sidebar': 'header',\r\n },\r\n})\r\nexport class RaqmSidebarHeaderDirective {}\r\n@Directive({\r\n selector: '[raqm-sidebar-footer]',\r\n host: {\r\n class: 'raqm-sidebar-footer',\r\n 'data-raqm-slot': 'sidebar-footer',\r\n 'data-raqm-sidebar': 'footer',\r\n },\r\n})\r\nexport class RaqmSidebarFooterDirective {}\r\n@Directive({\r\n selector: '[raqm-sidebar-content]',\r\n host: {\r\n class: 'raqm-sidebar-content',\r\n 'data-raqm-slot': 'sidebar-content',\r\n 'data-raqm-sidebar': 'content',\r\n },\r\n})\r\nexport class RaqmSidebarContentDirective {}\r\n@Directive({\r\n selector: '[raqm-sidebar-group]',\r\n host: {\r\n class: 'raqm-sidebar-group',\r\n 'data-raqm-slot': 'sidebar-group',\r\n 'data-raqm-sidebar': 'group',\r\n },\r\n})\r\nexport class RaqmSidebarGroupDirective {}\r\n@Directive({\r\n selector: '[raqm-sidebar-group-label]',\r\n host: {\r\n class: 'raqm-sidebar-group-label',\r\n 'data-raqm-slot': 'sidebar-group-label',\r\n 'data-raqm-sidebar': 'group-label',\r\n },\r\n})\r\nexport class RaqmSidebarGroupLabelDirective {}\r\n@Directive({\r\n selector: '[raqm-sidebar-group-content]',\r\n host: {\r\n class: 'raqm-sidebar-group-content',\r\n 'data-raqm-slot': 'sidebar-group-content',\r\n 'data-raqm-sidebar': 'group-content',\r\n },\r\n})\r\nexport class RaqmSidebarGroupContentDirective {}\r\n@Directive({\r\n selector: 'button[raqm-sidebar-group-action]',\r\n host: {\r\n class: 'raqm-sidebar-group-action',\r\n 'data-raqm-slot': 'sidebar-group-action',\r\n 'data-raqm-sidebar': 'group-action',\r\n },\r\n})\r\nexport class RaqmSidebarGroupActionDirective {\r\n constructor() {\r\n const host = inject<ElementRef<HTMLButtonElement>>(ElementRef).nativeElement;\r\n if (!host.hasAttribute('type')) host.setAttribute('type', 'button');\r\n }\r\n}\r\n@Directive({\r\n selector: 'ul[raqm-sidebar-menu]',\r\n host: {\r\n class: 'raqm-sidebar-menu',\r\n 'data-raqm-slot': 'sidebar-menu',\r\n 'data-raqm-sidebar': 'menu',\r\n },\r\n})\r\nexport class RaqmSidebarMenuDirective {}\r\n@Directive({\r\n selector: 'li[raqm-sidebar-menu-item]',\r\n host: {\r\n class: 'raqm-sidebar-menu-item',\r\n 'data-raqm-slot': 'sidebar-menu-item',\r\n 'data-raqm-sidebar': 'menu-item',\r\n },\r\n})\r\nexport class RaqmSidebarMenuItemDirective {}\r\n@Directive({\r\n selector: 'ul[raqm-sidebar-menu-sub]',\r\n host: {\r\n class: 'raqm-sidebar-menu-sub',\r\n 'data-raqm-slot': 'sidebar-menu-sub',\r\n 'data-raqm-sidebar': 'menu-sub',\r\n },\r\n})\r\nexport class RaqmSidebarMenuSubDirective {}\r\n@Directive({\r\n selector: 'li[raqm-sidebar-menu-sub-item]',\r\n host: {\r\n class: 'raqm-sidebar-menu-sub-item',\r\n 'data-raqm-slot': 'sidebar-menu-sub-item',\r\n 'data-raqm-sidebar': 'menu-sub-item',\r\n },\r\n})\r\nexport class RaqmSidebarMenuSubItemDirective {}\r\n@Directive({\r\n selector: '[raqm-sidebar-menu-badge]',\r\n host: {\r\n class: 'raqm-sidebar-menu-badge',\r\n 'data-raqm-slot': 'sidebar-menu-badge',\r\n 'data-raqm-sidebar': 'menu-badge',\r\n },\r\n})\r\nexport class RaqmSidebarMenuBadgeDirective {}\r\n@Directive({\r\n selector: 'main[raqm-sidebar-inset]',\r\n host: { class: 'raqm-sidebar-inset', 'data-raqm-slot': 'sidebar-inset' },\r\n})\r\nexport class RaqmSidebarInsetDirective {}\r\n@Directive({\r\n selector: 'input[raqm-sidebar-input]',\r\n hostDirectives: [RaqmInput],\r\n host: {\r\n class: 'raqm-sidebar-input',\r\n 'data-raqm-slot': 'sidebar-input',\r\n 'data-raqm-sidebar': 'input',\r\n },\r\n})\r\nexport class RaqmSidebarInputDirective {}\r\n/** Separator part; keeps the shipped raqm-separator's semantic orientation. */\r\n@Directive({\r\n selector: 'raqm-separator[raqm-sidebar-separator]',\r\n host: {\r\n class: 'raqm-sidebar-separator',\r\n 'data-raqm-slot': 'sidebar-separator',\r\n 'data-raqm-sidebar': 'separator',\r\n },\r\n})\r\nexport class RaqmSidebarSeparatorDirective {}\r\n\r\n@Directive({\r\n selector: 'button[raqm-sidebar-menu-action]',\r\n host: {\r\n class: 'raqm-sidebar-menu-action',\r\n 'data-raqm-slot': 'sidebar-menu-action',\r\n 'data-raqm-sidebar': 'menu-action',\r\n '[attr.data-raqm-show-on-hover]': 'showOnHover() ? \"true\" : null',\r\n },\r\n})\r\nexport class RaqmSidebarMenuActionDirective {\r\n readonly showOnHover = input(false, { transform: booleanAttribute });\r\n constructor() {\r\n const host = inject<ElementRef<HTMLButtonElement>>(ElementRef).nativeElement;\r\n if (!host.hasAttribute('type')) host.setAttribute('type', 'button');\r\n }\r\n}\r\n\r\n/** Native button/anchor host; routerLink and menu directives compose on it directly. */\r\n@Component({\r\n selector: 'button[raqm-sidebar-menu-button], a[raqm-sidebar-menu-button]',\r\n imports: [RaqmTooltip],\r\n template: `<ng-content />\r\n @if (showTooltip()) {\r\n <raqm-tooltip [side]=\"tooltipSide()\" [align]=\"tooltipAlign()\" [sideOffset]=\"tooltipOffset()\">\r\n <ng-template raqm-tooltip-content>{{ tooltipText() }}</ng-template>\r\n </raqm-tooltip>\r\n }`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'raqm-sidebar-menu-button',\r\n 'data-raqm-slot': 'sidebar-menu-button',\r\n 'data-raqm-sidebar': 'menu-button',\r\n '[attr.data-raqm-size]': 'activeSize()',\r\n '[attr.data-raqm-variant]': 'activeVariant()',\r\n '[attr.data-raqm-active]': 'active() ? \"true\" : null',\r\n '(pointerenter)': 'pointer($event, true)',\r\n '(pointerleave)': 'pointer($event, false)',\r\n '(focus)': 'focus(true)',\r\n '(blur)': 'focus(false)',\r\n '(pointerdown)': 'dismiss()',\r\n '(click)': 'dismiss()',\r\n '(keydown.escape)': 'dismiss()',\r\n },\r\n})\r\nexport class RaqmSidebarMenuButtonComponent {\r\n /** Bare or empty marker uses the default appearance. */\r\n readonly appearance = input<'' | 'default' | 'outline'>('', {\r\n alias: 'raqm-sidebar-menu-button',\r\n });\r\n readonly small = input(false, { transform: booleanAttribute });\r\n readonly large = input(false, { transform: booleanAttribute });\r\n readonly active = input(false, { transform: booleanAttribute });\r\n protected readonly activeVariant = computed(() => this.appearance() || 'default');\r\n protected readonly activeSize = computed<'sm' | 'lg' | null>(() => {\r\n if (this.small() && this.large()) {\r\n throw new Error('RaqmSidebarMenuButton: use only one size attribute per button.');\r\n }\r\n return this.small() ? 'sm' : this.large() ? 'lg' : null;\r\n });\r\n readonly tooltip = input<string | RaqmSidebarTooltip | undefined>(undefined);\r\n private readonly context = useSidebar();\r\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\r\n private readonly tip = viewChild(RaqmTooltipComponent);\r\n protected readonly tooltipText = computed(() => {\r\n const tip = this.tooltip();\r\n return typeof tip === 'string' ? tip : (tip?.text ?? '');\r\n });\r\n protected readonly tooltipSide = computed(() => {\r\n const tip = this.tooltip();\r\n return typeof tip === 'object' ? (tip.side ?? 'right') : 'right';\r\n });\r\n protected readonly tooltipAlign = computed(() => {\r\n const tip = this.tooltip();\r\n return typeof tip === 'object' ? (tip.align ?? 'center') : 'center';\r\n });\r\n protected readonly tooltipOffset = computed(() => {\r\n const tip = this.tooltip();\r\n return typeof tip === 'object' ? (tip.sideOffset ?? 4) : 4;\r\n });\r\n protected readonly showTooltip = computed(() => {\r\n const tip = this.tooltip();\r\n return (\r\n !!this.tooltipText() &&\r\n this.context.state() === 'collapsed' &&\r\n !this.context.mobile() &&\r\n !(typeof tip === 'object' && tip.hidden)\r\n );\r\n });\r\n private readonly ref: RaqmTooltipTriggerRef = {\r\n element: this.host,\r\n get disabled() {\r\n return (\r\n (this.element as HTMLButtonElement).disabled ||\r\n this.element.getAttribute('aria-disabled') === 'true'\r\n );\r\n },\r\n };\r\n constructor() {\r\n if (this.host.tagName === 'BUTTON' && !this.host.hasAttribute('type'))\r\n this.host.setAttribute('type', 'button');\r\n effect((onCleanup) => {\r\n const tip = this.tip();\r\n untracked(() => tip?.registerTrigger(this.ref));\r\n onCleanup(() => untracked(() => tip?.unregisterTrigger(this.ref)));\r\n });\r\n effect((onCleanup) => {\r\n const tip = this.tip();\r\n const id = tip?.open() ? tip.tooltipId() : null;\r\n if (!id) return;\r\n const tokens = new Set(\r\n (this.host.getAttribute('aria-describedby') ?? '').split(/\\s+/).filter(Boolean),\r\n );\r\n tokens.add(id);\r\n this.host.setAttribute('aria-describedby', [...tokens].join(' '));\r\n onCleanup(() => {\r\n const remaining = (this.host.getAttribute('aria-describedby') ?? '')\r\n .split(/\\s+/)\r\n .filter((token) => token && token !== id);\r\n if (remaining.length) this.host.setAttribute('aria-describedby', remaining.join(' '));\r\n else this.host.removeAttribute('aria-describedby');\r\n });\r\n });\r\n }\r\n protected pointer(event: Event, entering: boolean): void {\r\n if ((event as PointerEvent).pointerType !== 'mouse') return;\r\n if (entering) this.tip()?.requestOpen(this.ref, 'mouse');\r\n else this.tip()?.requestClose(this.ref, 'mouse');\r\n }\r\n protected focus(entering: boolean): void {\r\n if (entering) this.tip()?.requestOpen(this.ref, 'focus');\r\n else this.tip()?.requestClose(this.ref, 'focus');\r\n }\r\n protected dismiss(): void {\r\n this.tip()?.requestClose(this.ref, 'press');\r\n }\r\n}\r\n\r\nexport interface RaqmSidebarTooltip {\r\n text: string;\r\n side?: 'top' | 'right' | 'bottom' | 'left';\r\n align?: 'start' | 'center' | 'end';\r\n sideOffset?: number;\r\n hidden?: boolean;\r\n}\r\n\r\n@Directive({\r\n selector: 'a[raqm-sidebar-menu-sub-button], button[raqm-sidebar-menu-sub-button]',\r\n host: {\r\n class: 'raqm-sidebar-menu-sub-button',\r\n 'data-raqm-slot': 'sidebar-menu-sub-button',\r\n 'data-raqm-sidebar': 'menu-sub-button',\r\n '[attr.data-raqm-size]': 'small() ? \"sm\" : null',\r\n '[attr.data-raqm-active]': 'active() ? \"true\" : null',\r\n },\r\n})\r\nexport class RaqmSidebarMenuSubButtonDirective {\r\n readonly small = input(false, { transform: booleanAttribute });\r\n readonly active = input(false, { transform: booleanAttribute });\r\n constructor() {\r\n const host = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\r\n if (host.tagName === 'BUTTON' && !host.hasAttribute('type'))\r\n host.setAttribute('type', 'button');\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'button[raqm-sidebar-trigger]',\r\n template:\r\n '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"/><path d=\"M9 3v18\"/></svg>',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'raqm-sidebar-trigger raqm-button',\r\n 'data-raqm-slot': 'sidebar-trigger',\r\n 'data-raqm-sidebar': 'trigger',\r\n 'data-raqm-variant': 'ghost',\r\n 'data-raqm-size': 'icon-sm',\r\n '(click)': 'toggle($event)',\r\n },\r\n})\r\nexport class RaqmSidebarTriggerComponent {\r\n private readonly context = useSidebar();\r\n constructor() {\r\n const host = inject<ElementRef<HTMLButtonElement>>(ElementRef).nativeElement;\r\n if (!host.hasAttribute('type')) host.setAttribute('type', 'button');\r\n afterNextRender(() => {\r\n if (isDevMode() && !host.hasAttribute('aria-label')) {\r\n console.error('[raqm-sidebar] The trigger has no accessible name. Provide `aria-label`.');\r\n }\r\n });\r\n }\r\n protected toggle(event: MouseEvent): void {\r\n if (!event.defaultPrevented) this.context.toggleSidebar();\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: 'button[raqm-sidebar-rail]',\r\n host: {\r\n class: 'raqm-sidebar-rail',\r\n tabindex: '-1',\r\n 'data-raqm-slot': 'sidebar-rail',\r\n 'data-raqm-sidebar': 'rail',\r\n '(click)': 'context.toggleSidebar()',\r\n },\r\n})\r\nexport class RaqmSidebarRailDirective {\r\n protected readonly context = useSidebar();\r\n constructor() {\r\n const host = inject<ElementRef<HTMLButtonElement>>(ElementRef).nativeElement;\r\n if (!host.hasAttribute('type')) host.setAttribute('type', 'button');\r\n afterNextRender(() => {\r\n if (isDevMode() && !host.hasAttribute('aria-label')) {\r\n console.error('[raqm-sidebar] The rail has no accessible name. Provide `aria-label`.');\r\n }\r\n });\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'raqm-sidebar-menu-skeleton',\r\n imports: [RaqmSkeleton],\r\n template:\r\n '@if (showIcon()) { <raqm-skeleton class=\"raqm-sidebar-menu-skeleton-icon\" data-raqm-sidebar=\"menu-skeleton-icon\" /> }<raqm-skeleton class=\"raqm-sidebar-menu-skeleton-text\" data-raqm-sidebar=\"menu-skeleton-text\" />',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'raqm-sidebar-menu-skeleton',\r\n 'data-raqm-slot': 'sidebar-menu-skeleton',\r\n 'data-raqm-sidebar': 'menu-skeleton',\r\n 'aria-hidden': 'true',\r\n },\r\n})\r\nexport class RaqmSidebarMenuSkeletonComponent {\r\n readonly showIcon = input(false, { transform: booleanAttribute });\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n ElementRef,\r\n afterNextRender,\r\n booleanAttribute,\r\n computed,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { RAQM_SIDEBAR, RaqmSidebarContext } from './sidebar-context';\r\n\r\n/** Provider-scoped state; the shortcut toggles only this provider and cookies are write-only. */\r\n@Component({\r\n selector: 'raqm-sidebar-provider',\r\n exportAs: 'raqmSidebarProvider',\r\n template: '<ng-content />',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: RAQM_SIDEBAR, useExisting: RaqmSidebarProviderComponent }],\r\n host: {\r\n class: 'raqm-sidebar-provider',\r\n 'data-raqm-slot': 'sidebar-wrapper',\r\n '(keydown)': 'onKeydown($event)',\r\n },\r\n})\r\nexport class RaqmSidebarProviderComponent implements RaqmSidebarContext {\r\n readonly defaultOpen = input(true, { transform: booleanAttribute });\r\n readonly openInput = input<boolean | undefined>(undefined, { alias: 'open' });\r\n readonly openMobileInput = input<boolean | undefined>(undefined, { alias: 'openMobile' });\r\n readonly openChange = output<boolean>();\r\n readonly openMobileChange = output<boolean>();\r\n private readonly desktop = signal<boolean | undefined>(undefined);\r\n private readonly mobileOpen = signal(false);\r\n private readonly mobileState = signal(false);\r\n readonly open = computed(() => this.openInput() ?? this.desktop() ?? this.defaultOpen());\r\n readonly openMobile = computed(() => this.openMobileInput() ?? this.mobileOpen());\r\n readonly mobile = this.mobileState.asReadonly();\r\n readonly state = computed(() => (this.open() ? ('expanded' as const) : ('collapsed' as const)));\r\n private readonly document = inject(DOCUMENT);\r\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly destroy = inject(DestroyRef);\r\n\r\n constructor() {\r\n afterNextRender(() => {\r\n const media = this.document.defaultView?.matchMedia('(max-width: 767px)');\r\n if (!media) return;\r\n const update = () => this.mobileState.set(media.matches);\r\n update();\r\n media.addEventListener('change', update);\r\n this.destroy.onDestroy(() => media.removeEventListener('change', update));\r\n });\r\n }\r\n setOpen(value: boolean | ((open: boolean) => boolean)): void {\r\n const next = typeof value === 'function' ? value(this.open()) : value;\r\n if (this.openInput() === undefined) this.desktop.set(next);\r\n this.openChange.emit(next);\r\n if (this.document.defaultView) {\r\n try {\r\n this.document.cookie = `sidebar_state=${next}; path=/; max-age=604800; SameSite=Lax`;\r\n } catch {\r\n /* Blocked storage must not break disclosure. */\r\n }\r\n }\r\n }\r\n setOpenMobile(value: boolean | ((open: boolean) => boolean)): void {\r\n const next = typeof value === 'function' ? value(this.openMobile()) : value;\r\n if (this.openMobileInput() === undefined) this.mobileOpen.set(next);\r\n this.openMobileChange.emit(next);\r\n }\r\n toggleSidebar(): void {\r\n if (this.mobile()) this.setOpenMobile((open) => !open);\r\n else this.setOpen((open) => !open);\r\n }\r\n protected onKeydown(event: KeyboardEvent): void {\r\n const target = event.target as HTMLElement | null;\r\n if (\r\n event.defaultPrevented ||\r\n event.repeat ||\r\n event.key.toLowerCase() !== 'b' ||\r\n !(event.metaKey || event.ctrlKey)\r\n )\r\n return;\r\n if (target?.closest('raqm-sidebar-provider') !== this.host.nativeElement) return;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.toggleSidebar();\r\n }\r\n}\r\n","// Public API for the `@raqm/ui/sidebar` entry point; the root entry re-exports these.\r\nimport { RaqmSidebarComponent } from './sidebar.component';\r\nimport {\r\n RaqmSidebarContentDirective,\r\n RaqmSidebarFooterDirective,\r\n RaqmSidebarGroupActionDirective,\r\n RaqmSidebarGroupContentDirective,\r\n RaqmSidebarGroupDirective,\r\n RaqmSidebarGroupLabelDirective,\r\n RaqmSidebarHeaderDirective,\r\n RaqmSidebarInputDirective,\r\n RaqmSidebarInsetDirective,\r\n RaqmSidebarMenuActionDirective,\r\n RaqmSidebarMenuBadgeDirective,\r\n RaqmSidebarMenuButtonComponent,\r\n RaqmSidebarMenuDirective,\r\n RaqmSidebarMenuItemDirective,\r\n RaqmSidebarMenuSkeletonComponent,\r\n RaqmSidebarMenuSubButtonDirective,\r\n RaqmSidebarMenuSubDirective,\r\n RaqmSidebarMenuSubItemDirective,\r\n RaqmSidebarRailDirective,\r\n RaqmSidebarSeparatorDirective,\r\n RaqmSidebarTriggerComponent,\r\n} from './sidebar-parts';\r\nimport { RaqmSidebarProviderComponent } from './sidebar-provider.component';\r\n\r\nexport { RAQM_SIDEBAR, type RaqmSidebarContext, useSidebar } from './sidebar-context';\r\nexport { RaqmSidebarProviderComponent } from './sidebar-provider.component';\r\nexport { RaqmSidebarComponent } from './sidebar.component';\r\nexport {\r\n RaqmSidebarHeaderDirective,\r\n RaqmSidebarFooterDirective,\r\n RaqmSidebarContentDirective,\r\n RaqmSidebarGroupDirective,\r\n RaqmSidebarGroupLabelDirective,\r\n RaqmSidebarGroupContentDirective,\r\n RaqmSidebarGroupActionDirective,\r\n RaqmSidebarMenuDirective,\r\n RaqmSidebarMenuItemDirective,\r\n RaqmSidebarMenuSubDirective,\r\n RaqmSidebarMenuSubItemDirective,\r\n RaqmSidebarMenuBadgeDirective,\r\n RaqmSidebarInsetDirective,\r\n RaqmSidebarInputDirective,\r\n RaqmSidebarSeparatorDirective,\r\n RaqmSidebarMenuActionDirective,\r\n RaqmSidebarMenuButtonComponent,\r\n RaqmSidebarMenuSubButtonDirective,\r\n RaqmSidebarTriggerComponent,\r\n RaqmSidebarRailDirective,\r\n RaqmSidebarMenuSkeletonComponent,\r\n} from './sidebar-parts';\r\nexport type { RaqmSidebarTooltip } from './sidebar-parts';\r\n\r\nexport const RaqmSidebar = [\r\n RaqmSidebarProviderComponent,\r\n RaqmSidebarComponent,\r\n RaqmSidebarTriggerComponent,\r\n RaqmSidebarRailDirective,\r\n RaqmSidebarInsetDirective,\r\n RaqmSidebarInputDirective,\r\n RaqmSidebarHeaderDirective,\r\n RaqmSidebarFooterDirective,\r\n RaqmSidebarSeparatorDirective,\r\n RaqmSidebarContentDirective,\r\n RaqmSidebarGroupDirective,\r\n RaqmSidebarGroupLabelDirective,\r\n RaqmSidebarGroupActionDirective,\r\n RaqmSidebarGroupContentDirective,\r\n RaqmSidebarMenuDirective,\r\n RaqmSidebarMenuItemDirective,\r\n RaqmSidebarMenuButtonComponent,\r\n RaqmSidebarMenuActionDirective,\r\n RaqmSidebarMenuBadgeDirective,\r\n RaqmSidebarMenuSkeletonComponent,\r\n RaqmSidebarMenuSubDirective,\r\n RaqmSidebarMenuSubItemDirective,\r\n RaqmSidebarMenuSubButtonDirective,\r\n] as const;\r\n"],"mappings":"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"}
|
|
@@ -98,6 +98,9 @@ var RaqmSliderPointer = class {
|
|
|
98
98
|
dragOffset = 0;
|
|
99
99
|
dragPointerId = null;
|
|
100
100
|
dragControl = null;
|
|
101
|
+
dragMetrics = null;
|
|
102
|
+
invalidationFrame;
|
|
103
|
+
dragListenersAttached = false;
|
|
101
104
|
constructor(host) {
|
|
102
105
|
this.host = host;
|
|
103
106
|
}
|
|
@@ -114,7 +117,8 @@ var RaqmSliderPointer = class {
|
|
|
114
117
|
this.host.setActive(pressed.index);
|
|
115
118
|
this.host.setLastUsed(pressed.index);
|
|
116
119
|
this.focusThumb(pressed.index);
|
|
117
|
-
this.setFromPointer(event
|
|
120
|
+
this.setFromPointer(event);
|
|
121
|
+
this.attachDragListeners();
|
|
118
122
|
document.addEventListener("pointermove", this.onPointerMove);
|
|
119
123
|
document.addEventListener("pointerup", this.onPointerUp);
|
|
120
124
|
document.addEventListener("pointercancel", this.onPointerUp);
|
|
@@ -123,11 +127,15 @@ var RaqmSliderPointer = class {
|
|
|
123
127
|
document.removeEventListener("pointermove", this.onPointerMove);
|
|
124
128
|
document.removeEventListener("pointerup", this.onPointerUp);
|
|
125
129
|
document.removeEventListener("pointercancel", this.onPointerUp);
|
|
130
|
+
this.detachDragListeners();
|
|
131
|
+
if (this.invalidationFrame !== void 0 && typeof cancelAnimationFrame !== "undefined") cancelAnimationFrame(this.invalidationFrame);
|
|
132
|
+
this.invalidationFrame = void 0;
|
|
126
133
|
this.dragValues = null;
|
|
127
134
|
this.dragIndex = -1;
|
|
128
135
|
this.dragOffset = 0;
|
|
129
136
|
this.dragPointerId = null;
|
|
130
137
|
this.dragControl = null;
|
|
138
|
+
this.dragMetrics = null;
|
|
131
139
|
this.host.setActive(-1);
|
|
132
140
|
}
|
|
133
141
|
pressedThumb(event) {
|
|
@@ -159,25 +167,49 @@ var RaqmSliderPointer = class {
|
|
|
159
167
|
offset: 0
|
|
160
168
|
};
|
|
161
169
|
}
|
|
162
|
-
setFromPointer(event
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
const value = this.valueFromPointer(event, control, index);
|
|
170
|
+
setFromPointer(event) {
|
|
171
|
+
if (this.dragControl === null) return;
|
|
172
|
+
const value = this.valueFromPointer(event);
|
|
166
173
|
if (value === null) return;
|
|
167
174
|
const values = this.host.values();
|
|
168
175
|
if (values.length <= 1) {
|
|
169
176
|
this.host.setValues([value]);
|
|
170
177
|
return;
|
|
171
178
|
}
|
|
172
|
-
this.host.setValues(pushThumbValues(values,
|
|
179
|
+
this.host.setValues(pushThumbValues(values, this.dragIndex, value, this.host.min(), Math.max(this.host.max(), this.host.min()), this.dragValues ?? values));
|
|
173
180
|
}
|
|
174
|
-
|
|
175
|
-
const
|
|
176
|
-
|
|
177
|
-
|
|
181
|
+
measureDragMetrics(vertical) {
|
|
182
|
+
const control = this.dragControl;
|
|
183
|
+
const thumb = this.host.thumbElements()[this.dragIndex]?.nativeElement;
|
|
184
|
+
if (control === null || thumb === void 0) return null;
|
|
178
185
|
const controlRect = control.getBoundingClientRect();
|
|
179
186
|
const thumbRect = thumb.getBoundingClientRect();
|
|
180
|
-
const
|
|
187
|
+
const metrics = {
|
|
188
|
+
controlRect,
|
|
189
|
+
thumbSize: vertical ? thumbRect.height : thumbRect.width,
|
|
190
|
+
vertical
|
|
191
|
+
};
|
|
192
|
+
this.dragMetrics = metrics;
|
|
193
|
+
this.scheduleInvalidation();
|
|
194
|
+
return metrics;
|
|
195
|
+
}
|
|
196
|
+
scheduleInvalidation() {
|
|
197
|
+
if (typeof requestAnimationFrame === "undefined") {
|
|
198
|
+
this.dragMetrics = null;
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
if (this.invalidationFrame !== void 0) return;
|
|
202
|
+
this.invalidationFrame = requestAnimationFrame(() => {
|
|
203
|
+
this.invalidationFrame = void 0;
|
|
204
|
+
this.dragMetrics = null;
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
valueFromPointer(event) {
|
|
208
|
+
const vertical = this.host.vertical();
|
|
209
|
+
const cached = this.dragMetrics;
|
|
210
|
+
const metrics = cached !== null && cached.vertical === vertical ? cached : this.measureDragMetrics(vertical);
|
|
211
|
+
if (metrics === null) return null;
|
|
212
|
+
const { controlRect, thumbSize } = metrics;
|
|
181
213
|
const controlSize = (vertical ? controlRect.height : controlRect.width) - thumbSize;
|
|
182
214
|
if (controlSize <= 0) return null;
|
|
183
215
|
const coordinate = (vertical ? event.clientY : event.clientX) - this.dragOffset;
|
|
@@ -185,6 +217,21 @@ var RaqmSliderPointer = class {
|
|
|
185
217
|
const min = this.host.min();
|
|
186
218
|
return this.host.round(min + (Math.max(this.host.max(), min) - min) * position);
|
|
187
219
|
}
|
|
220
|
+
invalidateDragMetrics = () => {
|
|
221
|
+
this.dragMetrics = null;
|
|
222
|
+
};
|
|
223
|
+
attachDragListeners() {
|
|
224
|
+
if (this.dragListenersAttached) return;
|
|
225
|
+
this.dragListenersAttached = true;
|
|
226
|
+
window.addEventListener("scroll", this.invalidateDragMetrics, true);
|
|
227
|
+
window.addEventListener("resize", this.invalidateDragMetrics);
|
|
228
|
+
}
|
|
229
|
+
detachDragListeners() {
|
|
230
|
+
if (!this.dragListenersAttached) return;
|
|
231
|
+
this.dragListenersAttached = false;
|
|
232
|
+
window.removeEventListener("scroll", this.invalidateDragMetrics, true);
|
|
233
|
+
window.removeEventListener("resize", this.invalidateDragMetrics);
|
|
234
|
+
}
|
|
188
235
|
onPointerMove = (event) => {
|
|
189
236
|
if (event.pointerId !== this.dragPointerId) return;
|
|
190
237
|
if (this.host.disabled()) {
|
|
@@ -195,7 +242,7 @@ var RaqmSliderPointer = class {
|
|
|
195
242
|
this.endPointerInteraction();
|
|
196
243
|
return;
|
|
197
244
|
}
|
|
198
|
-
this.setFromPointer(event
|
|
245
|
+
this.setFromPointer(event);
|
|
199
246
|
};
|
|
200
247
|
onPointerUp = (event) => {
|
|
201
248
|
if (event.pointerId === this.dragPointerId) this.endPointerInteraction();
|
|
@@ -1 +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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"}
|
|
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\ninterface DragMetrics {\r\n controlRect: DOMRect;\r\n thumbSize: number;\r\n /** Orientation the rect was measured for; a mid-drag switch invalidates the measurement. */\r\n vertical: boolean;\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 // Layout can move the control mid-drag, so measurements expire every frame and on scroll/resize.\r\n private dragMetrics: DragMetrics | null = null;\r\n private invalidationFrame: number | undefined;\r\n private dragListenersAttached = false;\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);\r\n\r\n this.attachDragListeners();\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.detachDragListeners();\r\n if (this.invalidationFrame !== undefined && typeof cancelAnimationFrame !== 'undefined') {\r\n cancelAnimationFrame(this.invalidationFrame);\r\n }\r\n this.invalidationFrame = undefined;\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.dragMetrics = 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): void {\r\n if (this.dragControl === null) {\r\n return;\r\n }\r\n const value = this.valueFromPointer(event);\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 this.dragIndex,\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 measureDragMetrics(vertical: boolean): DragMetrics | null {\r\n const control = this.dragControl;\r\n const thumb = this.host.thumbElements()[this.dragIndex]?.nativeElement;\r\n if (control === null || thumb === undefined) {\r\n return null;\r\n }\r\n const controlRect = control.getBoundingClientRect();\r\n const thumbRect = thumb.getBoundingClientRect();\r\n const metrics: DragMetrics = {\r\n controlRect,\r\n thumbSize: vertical ? thumbRect.height : thumbRect.width,\r\n vertical,\r\n };\r\n this.dragMetrics = metrics;\r\n this.scheduleInvalidation();\r\n return metrics;\r\n }\r\n\r\n private scheduleInvalidation(): void {\r\n if (typeof requestAnimationFrame === 'undefined') {\r\n this.dragMetrics = null;\r\n return;\r\n }\r\n if (this.invalidationFrame !== undefined) {\r\n return;\r\n }\r\n this.invalidationFrame = requestAnimationFrame(() => {\r\n this.invalidationFrame = undefined;\r\n this.dragMetrics = null;\r\n });\r\n }\r\n\r\n private valueFromPointer(event: PointerEvent): number | null {\r\n // Orientation and direction are read per event: both can change without a frame boundary.\r\n const vertical = this.host.vertical();\r\n const cached = this.dragMetrics;\r\n const metrics =\r\n cached !== null && cached.vertical === vertical ? cached : this.measureDragMetrics(vertical);\r\n if (metrics === null) {\r\n return null;\r\n }\r\n const { controlRect, thumbSize } = metrics;\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 invalidateDragMetrics = (): void => {\r\n this.dragMetrics = null;\r\n };\r\n\r\n private attachDragListeners(): void {\r\n if (this.dragListenersAttached) {\r\n return;\r\n }\r\n this.dragListenersAttached = true;\r\n window.addEventListener('scroll', this.invalidateDragMetrics, true);\r\n window.addEventListener('resize', this.invalidateDragMetrics);\r\n }\r\n\r\n private detachDragListeners(): void {\r\n if (!this.dragListenersAttached) {\r\n return;\r\n }\r\n this.dragListenersAttached = false;\r\n window.removeEventListener('scroll', this.invalidateDragMetrics, true);\r\n window.removeEventListener('resize', this.invalidateDragMetrics);\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);\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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"}
|