@frame-ui-ng/components 0.2.0-beta.0 → 0.4.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/button/src/styles/button.css +20 -4
  2. package/button-group/src/styles/button-group.css +6 -0
  3. package/dropdown-menu/src/styles/_vars.css +1 -1
  4. package/dropdown-menu/src/styles/dropdown-menu-item.css +87 -87
  5. package/fesm2022/frame-ui-ng-components-calendar.mjs +369 -263
  6. package/fesm2022/frame-ui-ng-components-calendar.mjs.map +1 -1
  7. package/fesm2022/frame-ui-ng-components-combobox.mjs +48 -51
  8. package/fesm2022/frame-ui-ng-components-combobox.mjs.map +1 -1
  9. package/fesm2022/frame-ui-ng-components-command.mjs +1 -1
  10. package/fesm2022/frame-ui-ng-components-command.mjs.map +1 -1
  11. package/fesm2022/frame-ui-ng-components-confirm-modal.mjs +162 -0
  12. package/fesm2022/frame-ui-ng-components-confirm-modal.mjs.map +1 -0
  13. package/fesm2022/frame-ui-ng-components-date-picker.mjs +232 -226
  14. package/fesm2022/frame-ui-ng-components-date-picker.mjs.map +1 -1
  15. package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs +45 -22
  16. package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs.map +1 -1
  17. package/fesm2022/frame-ui-ng-components-input-otp.mjs +64 -69
  18. package/fesm2022/frame-ui-ng-components-input-otp.mjs.map +1 -1
  19. package/fesm2022/frame-ui-ng-components-input.mjs +6 -3
  20. package/fesm2022/frame-ui-ng-components-input.mjs.map +1 -1
  21. package/fesm2022/frame-ui-ng-components-modal.mjs +93 -15
  22. package/fesm2022/frame-ui-ng-components-modal.mjs.map +1 -1
  23. package/fesm2022/frame-ui-ng-components-pagination.mjs +37 -36
  24. package/fesm2022/frame-ui-ng-components-pagination.mjs.map +1 -1
  25. package/fesm2022/frame-ui-ng-components-progress.mjs +2 -1
  26. package/fesm2022/frame-ui-ng-components-progress.mjs.map +1 -1
  27. package/fesm2022/frame-ui-ng-components-resizable.mjs +16 -26
  28. package/fesm2022/frame-ui-ng-components-resizable.mjs.map +1 -1
  29. package/fesm2022/frame-ui-ng-components-select.mjs +6 -3
  30. package/fesm2022/frame-ui-ng-components-select.mjs.map +1 -1
  31. package/fesm2022/frame-ui-ng-components-sheet.mjs +19 -16
  32. package/fesm2022/frame-ui-ng-components-sheet.mjs.map +1 -1
  33. package/fesm2022/frame-ui-ng-components-sidebar.mjs +59 -10
  34. package/fesm2022/frame-ui-ng-components-sidebar.mjs.map +1 -1
  35. package/fesm2022/frame-ui-ng-components-slider.mjs +53 -59
  36. package/fesm2022/frame-ui-ng-components-slider.mjs.map +1 -1
  37. package/fesm2022/frame-ui-ng-components-tooltip.mjs +307 -254
  38. package/fesm2022/frame-ui-ng-components-tooltip.mjs.map +1 -1
  39. package/fesm2022/frame-ui-ng-components-utils.mjs +20 -0
  40. package/fesm2022/frame-ui-ng-components-utils.mjs.map +1 -0
  41. package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs +10 -12
  42. package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs.map +1 -1
  43. package/fesm2022/frame-ui-ng-components.mjs +1047 -806
  44. package/fesm2022/frame-ui-ng-components.mjs.map +1 -1
  45. package/input/src/styles/input-group.css +50 -0
  46. package/item/src/styles/item.css +188 -187
  47. package/modal/src/styles/modal.css +10 -1
  48. package/package.json +10 -2
  49. package/select/src/styles/select-trigger.css +7 -36
  50. package/sidebar/src/styles/sidebar.css +10 -4
  51. package/src/styles/blueprint.css +102 -11
  52. package/src/styles/components.css +4 -4
  53. package/styles/blueprint.css +102 -11
  54. package/styles/components.css +4 -4
  55. package/styles.css +4 -4
  56. package/tooltip/src/styles/tooltip.css +7 -13
  57. package/types/frame-ui-ng-components-calendar.d.ts +14 -0
  58. package/types/frame-ui-ng-components-combobox.d.ts +1 -1
  59. package/types/frame-ui-ng-components-confirm-modal.d.ts +48 -0
  60. package/types/frame-ui-ng-components-context-menu.d.ts +2 -2
  61. package/types/frame-ui-ng-components-date-picker.d.ts +3 -1
  62. package/types/frame-ui-ng-components-dropdown-menu.d.ts +3 -3
  63. package/types/frame-ui-ng-components-input-otp.d.ts +1 -1
  64. package/types/frame-ui-ng-components-input.d.ts +6 -3
  65. package/types/frame-ui-ng-components-modal.d.ts +18 -7
  66. package/types/frame-ui-ng-components-select.d.ts +6 -3
  67. package/types/frame-ui-ng-components-sheet.d.ts +2 -0
  68. package/types/frame-ui-ng-components-sidebar.d.ts +8 -1
  69. package/types/frame-ui-ng-components-tooltip.d.ts +48 -73
  70. package/types/frame-ui-ng-components-utils.d.ts +5 -0
  71. package/types/frame-ui-ng-components.d.ts +87 -45
@@ -1,6 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, ElementRef, signal, input, booleanAttribute, output, computed, effect, HostListener, Directive, NgModule } from '@angular/core';
2
+ import { InjectionToken, numberAttribute, inject, ElementRef, signal, input, booleanAttribute, output, computed, effect, Directive, NgModule } from '@angular/core';
3
3
  import { DOCUMENT } from '@angular/common';
4
+ import { clampNumber } from '@frame-ui-ng/components/utils';
4
5
 
5
6
  const FR_SIDEBAR_SIDES = ['left', 'right'];
6
7
  const FR_SIDEBAR_VARIANTS = ['sidebar', 'floating', 'inset'];
@@ -23,6 +24,13 @@ function coerceMenuButtonSize(value) {
23
24
  function coerceMenuButtonVariant(value) {
24
25
  return value === 'outline' ? 'outline' : 'default';
25
26
  }
27
+ function coerceOptionalNumber(value) {
28
+ if (value === null || value === undefined || value === '') {
29
+ return null;
30
+ }
31
+ const coerced = numberAttribute(value, Number.NaN);
32
+ return Number.isFinite(coerced) ? coerced : null;
33
+ }
26
34
  class FrSidebarProvider {
27
35
  document = inject(DOCUMENT);
28
36
  elementRef = inject(ElementRef);
@@ -118,20 +126,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
118
126
  '[attr.data-mobile-open]': 'openMobile()',
119
127
  '[attr.data-mobile]': 'isMobile() ? "" : null',
120
128
  '[attr.data-resizing]': 'resizing() ? "" : null',
129
+ '(document:keydown)': 'handleKeydown($event)',
121
130
  },
122
131
  }]
123
- }], ctorParameters: () => [], propDecorators: { defaultOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultOpen", required: false }] }], openInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }], openChange: [{ type: i0.Output, args: ["openChange"] }], openMobileChange: [{ type: i0.Output, args: ["openMobileChange"] }], shortcut: [{ type: i0.Input, args: [{ isSignal: true, alias: "shortcut", required: false }] }], keyboardShortcut: [{ type: i0.Input, args: [{ isSignal: true, alias: "keyboardShortcut", required: false }] }], handleKeydown: [{
124
- type: HostListener,
125
- args: ['document:keydown', ['$event']]
126
- }] } });
132
+ }], ctorParameters: () => [], propDecorators: { defaultOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultOpen", required: false }] }], openInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }], openChange: [{ type: i0.Output, args: ["openChange"] }], openMobileChange: [{ type: i0.Output, args: ["openMobileChange"] }], shortcut: [{ type: i0.Input, args: [{ isSignal: true, alias: "shortcut", required: false }] }], keyboardShortcut: [{ type: i0.Input, args: [{ isSignal: true, alias: "keyboardShortcut", required: false }] }] } });
127
133
  class FrSidebar {
128
134
  elementRef = inject(ElementRef);
129
135
  provider = inject(FR_SIDEBAR_PROVIDER, { optional: true });
130
136
  side = input('left', { ...(ngDevMode ? { debugName: "side" } : /* istanbul ignore next */ {}), transform: coerceSide });
131
137
  variant = input('sidebar', { ...(ngDevMode ? { debugName: "variant" } : /* istanbul ignore next */ {}), transform: coerceVariant });
132
138
  collapsible = input('offcanvas', { ...(ngDevMode ? { debugName: "collapsible" } : /* istanbul ignore next */ {}), transform: coerceCollapsible });
139
+ minSize = input(null, { ...(ngDevMode ? { debugName: "minSize" } : /* istanbul ignore next */ {}), transform: coerceOptionalNumber });
140
+ maxSize = input(384, { ...(ngDevMode ? { debugName: "maxSize" } : /* istanbul ignore next */ {}), transform: coerceOptionalNumber });
141
+ resizable = input(true, { ...(ngDevMode ? { debugName: "resizable" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
133
142
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebar, deps: [], target: i0.ɵɵFactoryTarget.Directive });
134
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrSidebar, isStandalone: true, selector: "[frSidebar], frame-sidebar", inputs: { side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-side": "side()", "attr.data-variant": "variant()", "attr.data-collapsible": "collapsible()", "attr.data-state": "provider?.state() ?? \"expanded\"", "attr.data-mobile-open": "provider?.openMobile() ?? false" }, classAttribute: "frame-sidebar" }, ngImport: i0 });
143
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrSidebar, isStandalone: true, selector: "[frSidebar], frame-sidebar", inputs: { side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, minSize: { classPropertyName: "minSize", publicName: "minSize", isSignal: true, isRequired: false, transformFunction: null }, maxSize: { classPropertyName: "maxSize", publicName: "maxSize", isSignal: true, isRequired: false, transformFunction: null }, resizable: { classPropertyName: "resizable", publicName: "resizable", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-side": "side()", "attr.data-variant": "variant()", "attr.data-collapsible": "collapsible()", "attr.data-resizable": "resizable() ? \"\" : null", "attr.data-state": "provider?.state() ?? \"expanded\"", "attr.data-mobile-open": "provider?.openMobile() ?? false" }, classAttribute: "frame-sidebar" }, ngImport: i0 });
135
144
  }
136
145
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebar, decorators: [{
137
146
  type: Directive,
@@ -142,11 +151,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
142
151
  '[attr.data-side]': 'side()',
143
152
  '[attr.data-variant]': 'variant()',
144
153
  '[attr.data-collapsible]': 'collapsible()',
154
+ '[attr.data-resizable]': 'resizable() ? "" : null',
145
155
  '[attr.data-state]': 'provider?.state() ?? "expanded"',
146
156
  '[attr.data-mobile-open]': 'provider?.openMobile() ?? false',
147
157
  },
148
158
  }]
149
- }], propDecorators: { side: [{ type: i0.Input, args: [{ isSignal: true, alias: "side", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], collapsible: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsible", required: false }] }] } });
159
+ }], propDecorators: { side: [{ type: i0.Input, args: [{ isSignal: true, alias: "side", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], collapsible: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsible", required: false }] }], minSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "minSize", required: false }] }], maxSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxSize", required: false }] }], resizable: [{ type: i0.Input, args: [{ isSignal: true, alias: "resizable", required: false }] }] } });
150
160
  class FrSidebarTrigger {
151
161
  provider = inject(FR_SIDEBAR_PROVIDER, { optional: true });
152
162
  ariaLabel = input('Toggle sidebar', { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: 'aria-label' });
@@ -178,32 +188,42 @@ class FrSidebarRail {
178
188
  suppressClick = false;
179
189
  frameId = -1;
180
190
  pendingWidth = 0;
191
+ resizeMinSize = 192;
192
+ resizeMaxSize = 384;
181
193
  provider = inject(FR_SIDEBAR_PROVIDER, { optional: true });
182
194
  toggle() {
183
195
  if (this.suppressClick) {
184
196
  return;
185
197
  }
198
+ if (this.sidebar?.collapsible() === 'icon') {
199
+ return;
200
+ }
186
201
  this.provider?.toggleSidebar();
187
202
  }
188
203
  startResize(event) {
189
- if (!this.sidebar || !this.provider || this.provider.isMobile()) {
204
+ if (!this.sidebar || !this.provider || this.provider.isMobile() || !this.sidebar.resizable()) {
190
205
  return;
191
206
  }
192
207
  this.startX = event.clientX;
193
208
  this.startWidth = this.sidebar.elementRef.nativeElement.getBoundingClientRect().width;
194
209
  this.dragging = false;
195
210
  this.pendingWidth = this.startWidth;
211
+ this.captureResizeBounds();
196
212
  this.provider.setResizing(true);
197
213
  event.preventDefault();
198
214
  const move = (moveEvent) => this.resize(moveEvent);
199
215
  const up = () => {
200
216
  this.document.removeEventListener('pointermove', move);
201
217
  this.document.removeEventListener('pointerup', up);
202
- this.flushResize();
218
+ if (this.dragging) {
219
+ this.flushResize();
220
+ }
203
221
  this.provider?.setResizing(false);
204
222
  this.suppressClick = this.dragging;
205
223
  this.dragging = false;
206
224
  this.pendingWidth = 0;
225
+ this.resizeMinSize = 192;
226
+ this.resizeMaxSize = 384;
207
227
  setTimeout(() => {
208
228
  this.suppressClick = false;
209
229
  });
@@ -217,9 +237,12 @@ class FrSidebarRail {
217
237
  }
218
238
  const delta = event.clientX - this.startX;
219
239
  const direction = this.sidebar.side() === 'right' ? -1 : 1;
220
- const nextWidth = Math.min(Math.max(this.startWidth + delta * direction, 192), 384);
240
+ const nextWidth = clampNumber(this.startWidth + delta * direction, this.resizeMinSize, this.resizeMaxSize);
221
241
  if (Math.abs(delta) > 3) {
222
242
  this.dragging = true;
243
+ if (this.sidebar.collapsible() === 'icon' && !this.provider.open()) {
244
+ this.provider.setOpen(true);
245
+ }
223
246
  }
224
247
  this.pendingWidth = nextWidth;
225
248
  if (this.frameId !== -1) {
@@ -239,6 +262,32 @@ class FrSidebarRail {
239
262
  this.provider?.setSidebarWidth(this.pendingWidth);
240
263
  }
241
264
  }
265
+ captureResizeBounds() {
266
+ if (!this.sidebar) {
267
+ return;
268
+ }
269
+ const minSize = this.sidebar.minSize() ?? this.measureContentMinSize();
270
+ const maxSize = this.sidebar.maxSize() ?? Number.POSITIVE_INFINITY;
271
+ this.resizeMinSize = minSize;
272
+ this.resizeMaxSize = Math.max(minSize, maxSize);
273
+ }
274
+ measureContentMinSize() {
275
+ if (!this.sidebar) {
276
+ return 192;
277
+ }
278
+ const sidebarElement = this.sidebar.elementRef.nativeElement;
279
+ const sidebarRect = sidebarElement.getBoundingClientRect();
280
+ let measuredWidth = 0;
281
+ for (const element of Array.from(sidebarElement.querySelectorAll('*'))) {
282
+ if (element.hasAttribute('frSidebarRail') || element.tagName.toLowerCase() === 'frame-sidebar-rail') {
283
+ continue;
284
+ }
285
+ const rect = element.getBoundingClientRect();
286
+ const inlineStart = Math.max(0, rect.left - sidebarRect.left);
287
+ measuredWidth = Math.max(measuredWidth, inlineStart + element.scrollWidth);
288
+ }
289
+ return Math.max(Math.ceil(measuredWidth), 192);
290
+ }
242
291
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarRail, deps: [], target: i0.ɵɵFactoryTarget.Directive });
243
292
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSidebarRail, isStandalone: true, selector: "[frSidebarRail], frame-sidebar-rail", host: { attributes: { "role": "separator", "tabindex": "0", "aria-label": "Resize sidebar", "aria-orientation": "vertical" }, listeners: { "click": "toggle()", "pointerdown": "startResize($event)", "keydown.enter": "toggle()", "keydown.space": "toggle(); $event.preventDefault()" }, classAttribute: "frame-sidebar__rail" }, ngImport: i0 });
244
293
  }
@@ -1 +1 @@
1
- {"version":3,"file":"frame-ui-ng-components-sidebar.mjs","sources":["../../../projects/components/sidebar/src/sidebar.ts","../../../projects/components/sidebar/sidebar.module.ts","../../../projects/components/sidebar/frame-ui-ng-components-sidebar.ts"],"sourcesContent":["import {\n Directive,\n ElementRef,\n HostListener,\n InjectionToken,\n booleanAttribute,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\nexport const FR_SIDEBAR_SIDES = ['left', 'right'] as const;\nexport const FR_SIDEBAR_VARIANTS = ['sidebar', 'floating', 'inset'] as const;\nexport const FR_SIDEBAR_COLLAPSIBLES = ['offcanvas', 'icon', 'none'] as const;\nexport const FR_SIDEBAR_MENU_BUTTON_SIZES = ['default', 'sm', 'lg'] as const;\nexport const FR_SIDEBAR_MENU_BUTTON_VARIANTS = ['default', 'outline'] as const;\n\nexport type FrSidebarSide = (typeof FR_SIDEBAR_SIDES)[number];\nexport type FrSidebarVariant = (typeof FR_SIDEBAR_VARIANTS)[number];\nexport type FrSidebarCollapsible = (typeof FR_SIDEBAR_COLLAPSIBLES)[number];\nexport type FrSidebarState = 'expanded' | 'collapsed';\nexport type FrSidebarMenuButtonSize = (typeof FR_SIDEBAR_MENU_BUTTON_SIZES)[number];\nexport type FrSidebarMenuButtonVariant = (typeof FR_SIDEBAR_MENU_BUTTON_VARIANTS)[number];\n\nexport const FR_SIDEBAR_PROVIDER = new InjectionToken<FrSidebarProvider>('FR_SIDEBAR_PROVIDER');\n\nfunction coerceSide(value: unknown): FrSidebarSide {\n return value === 'right' ? 'right' : 'left';\n}\n\nfunction coerceVariant(value: unknown): FrSidebarVariant {\n return value === 'floating' || value === 'inset' ? value : 'sidebar';\n}\n\nfunction coerceCollapsible(value: unknown): FrSidebarCollapsible {\n return value === 'icon' || value === 'none' ? value : 'offcanvas';\n}\n\nfunction coerceMenuButtonSize(value: unknown): FrSidebarMenuButtonSize {\n return value === 'sm' || value === 'lg' ? value : 'default';\n}\n\nfunction coerceMenuButtonVariant(value: unknown): FrSidebarMenuButtonVariant {\n return value === 'outline' ? 'outline' : 'default';\n}\n\n@Directive({\n selector: '[frSidebarProvider], frame-sidebar-provider',\n exportAs: 'frSidebarProvider',\n providers: [\n {\n provide: FR_SIDEBAR_PROVIDER,\n useExisting: FrSidebarProvider,\n },\n ],\n host: {\n class: 'frame-sidebar-provider',\n '[attr.data-state]': 'state()',\n '[attr.data-open]': 'open()',\n '[attr.data-mobile-open]': 'openMobile()',\n '[attr.data-mobile]': 'isMobile() ? \"\" : null',\n '[attr.data-resizing]': 'resizing() ? \"\" : null',\n },\n})\nexport class FrSidebarProvider {\n private readonly document = inject(DOCUMENT);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly internalOpen = signal(true);\n private readonly internalOpenMobile = signal(false);\n protected readonly resizing = signal(false);\n\n readonly defaultOpen = input(true, { transform: booleanAttribute });\n readonly openInput = input<boolean | null>(null, { alias: 'open' });\n readonly openChange = output<boolean>();\n readonly openMobileChange = output<boolean>();\n readonly shortcut = input('b');\n readonly keyboardShortcut = input(true, { transform: booleanAttribute });\n readonly isMobile = signal(false);\n\n readonly open = computed(() => this.openInput() ?? this.internalOpen());\n readonly openMobile = computed(() => this.internalOpenMobile());\n readonly state = computed<FrSidebarState>(() => (this.open() ? 'expanded' : 'collapsed'));\n\n constructor() {\n this.internalOpen.set(this.defaultOpen());\n\n effect(() => {\n if (this.openInput() === null) {\n this.internalOpen.set(this.defaultOpen());\n }\n });\n\n effect(() => {\n this.elementRef.nativeElement.style.setProperty('--frame-sidebar-state', this.state());\n });\n\n const defaultView = this.document.defaultView;\n if (!defaultView?.matchMedia) {\n return;\n }\n\n const mediaQuery = defaultView.matchMedia('(max-width: 768px)');\n const updateMobile = () => this.isMobile.set(mediaQuery.matches);\n updateMobile();\n mediaQuery.addEventListener?.('change', updateMobile);\n }\n\n setOpen(open: boolean): void {\n if (this.openInput() === null) {\n this.internalOpen.set(open);\n }\n\n this.openChange.emit(open);\n }\n\n setOpenMobile(open: boolean): void {\n this.internalOpenMobile.set(open);\n this.openMobileChange.emit(open);\n }\n\n setSidebarWidth(width: number): void {\n this.elementRef.nativeElement.style.setProperty('--frame-sidebar-width', `${width}px`);\n }\n\n setResizing(resizing: boolean): void {\n this.resizing.set(resizing);\n }\n\n toggleSidebar(): void {\n if (this.isMobile()) {\n this.setOpenMobile(!this.openMobile());\n return;\n }\n\n this.setOpen(!this.open());\n }\n\n @HostListener('document:keydown', ['$event'])\n handleKeydown(event: KeyboardEvent): void {\n if (!this.keyboardShortcut()) {\n return;\n }\n\n const key = this.shortcut().toLowerCase();\n if (event.key.toLowerCase() !== key || (!event.metaKey && !event.ctrlKey)) {\n return;\n }\n\n event.preventDefault();\n this.toggleSidebar();\n }\n}\n\n@Directive({\n selector: '[frSidebar], frame-sidebar',\n host: {\n class: 'frame-sidebar',\n '[attr.data-side]': 'side()',\n '[attr.data-variant]': 'variant()',\n '[attr.data-collapsible]': 'collapsible()',\n '[attr.data-state]': 'provider?.state() ?? \"expanded\"',\n '[attr.data-mobile-open]': 'provider?.openMobile() ?? false',\n },\n})\nexport class FrSidebar {\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly provider = inject(FR_SIDEBAR_PROVIDER, { optional: true });\n readonly side = input<FrSidebarSide, unknown>('left', { transform: coerceSide });\n readonly variant = input<FrSidebarVariant, unknown>('sidebar', { transform: coerceVariant });\n readonly collapsible = input<FrSidebarCollapsible, unknown>('offcanvas', {\n transform: coerceCollapsible,\n });\n}\n\n@Directive({\n selector: '[frSidebarTrigger]',\n host: {\n class: 'frame-sidebar__trigger',\n type: 'button',\n '[attr.aria-expanded]': 'provider?.open() ?? true',\n '[attr.aria-label]': 'ariaLabel()',\n '(click)': 'toggle()',\n },\n})\nexport class FrSidebarTrigger {\n readonly provider = inject(FR_SIDEBAR_PROVIDER, { optional: true });\n readonly ariaLabel = input('Toggle sidebar', { alias: 'aria-label' });\n\n toggle(): void {\n this.provider?.toggleSidebar();\n }\n}\n\n@Directive({\n selector: '[frSidebarRail], frame-sidebar-rail',\n host: {\n class: 'frame-sidebar__rail',\n role: 'separator',\n tabindex: '0',\n 'aria-label': 'Resize sidebar',\n 'aria-orientation': 'vertical',\n '(click)': 'toggle()',\n '(pointerdown)': 'startResize($event)',\n '(keydown.enter)': 'toggle()',\n '(keydown.space)': 'toggle(); $event.preventDefault()',\n },\n})\nexport class FrSidebarRail {\n private readonly document = inject(DOCUMENT);\n private readonly sidebar = inject(FrSidebar, { optional: true });\n private startX = 0;\n private startWidth = 0;\n private dragging = false;\n private suppressClick = false;\n private frameId = -1;\n private pendingWidth = 0;\n\n readonly provider = inject(FR_SIDEBAR_PROVIDER, { optional: true });\n\n toggle(): void {\n if (this.suppressClick) {\n return;\n }\n\n this.provider?.toggleSidebar();\n }\n\n startResize(event: PointerEvent): void {\n if (!this.sidebar || !this.provider || this.provider.isMobile()) {\n return;\n }\n\n this.startX = event.clientX;\n this.startWidth = this.sidebar.elementRef.nativeElement.getBoundingClientRect().width;\n this.dragging = false;\n this.pendingWidth = this.startWidth;\n this.provider.setResizing(true);\n event.preventDefault();\n\n const move = (moveEvent: PointerEvent) => this.resize(moveEvent);\n const up = () => {\n this.document.removeEventListener('pointermove', move);\n this.document.removeEventListener('pointerup', up);\n this.flushResize();\n this.provider?.setResizing(false);\n this.suppressClick = this.dragging;\n this.dragging = false;\n this.pendingWidth = 0;\n setTimeout(() => {\n this.suppressClick = false;\n });\n };\n\n this.document.addEventListener('pointermove', move);\n this.document.addEventListener('pointerup', up, { once: true });\n }\n\n private resize(event: PointerEvent): void {\n if (!this.sidebar || !this.provider) {\n return;\n }\n\n const delta = event.clientX - this.startX;\n const direction = this.sidebar.side() === 'right' ? -1 : 1;\n const nextWidth = Math.min(Math.max(this.startWidth + delta * direction, 192), 384);\n\n if (Math.abs(delta) > 3) {\n this.dragging = true;\n }\n\n this.pendingWidth = nextWidth;\n\n if (this.frameId !== -1) {\n return;\n }\n\n this.frameId = requestAnimationFrame(() => {\n this.provider?.setSidebarWidth(this.pendingWidth);\n this.frameId = -1;\n });\n }\n\n private flushResize(): void {\n if (this.frameId !== -1) {\n cancelAnimationFrame(this.frameId);\n this.frameId = -1;\n }\n\n if (this.pendingWidth) {\n this.provider?.setSidebarWidth(this.pendingWidth);\n }\n }\n}\n\n@Directive({\n selector: '[frSidebarInset], frame-sidebar-inset',\n host: {\n class: 'frame-sidebar-inset',\n },\n})\nexport class FrSidebarInset {}\n\n@Directive({\n selector: '[frSidebarHeader], frame-sidebar-header',\n host: {\n class: 'frame-sidebar__header',\n },\n})\nexport class FrSidebarHeader {}\n\n@Directive({\n selector: '[frSidebarFooter], frame-sidebar-footer',\n host: {\n class: 'frame-sidebar__footer',\n },\n})\nexport class FrSidebarFooter {}\n\n@Directive({\n selector: '[frSidebarContent], frame-sidebar-content',\n host: {\n class: 'frame-sidebar__content',\n },\n})\nexport class FrSidebarContent {}\n\n@Directive({\n selector: '[frSidebarGroup], frame-sidebar-group',\n host: {\n class: 'frame-sidebar__group',\n },\n})\nexport class FrSidebarGroup {}\n\n@Directive({\n selector: '[frSidebarGroupLabel], frame-sidebar-group-label',\n host: {\n class: 'frame-sidebar__group-label',\n },\n})\nexport class FrSidebarGroupLabel {}\n\n@Directive({\n selector: '[frSidebarGroupAction], frame-sidebar-group-action',\n host: {\n class: 'frame-sidebar__group-action',\n type: 'button',\n },\n})\nexport class FrSidebarGroupAction {}\n\n@Directive({\n selector: '[frSidebarGroupContent], frame-sidebar-group-content',\n host: {\n class: 'frame-sidebar__group-content',\n },\n})\nexport class FrSidebarGroupContent {}\n\n@Directive({\n selector: '[frSidebarMenu], frame-sidebar-menu',\n host: {\n class: 'frame-sidebar__menu',\n role: 'list',\n },\n})\nexport class FrSidebarMenu {}\n\n@Directive({\n selector: '[frSidebarMenuItem], frame-sidebar-menu-item',\n host: {\n class: 'frame-sidebar__menu-item',\n role: 'listitem',\n },\n})\nexport class FrSidebarMenuItem {}\n\n@Directive({\n selector: '[frSidebarMenuButton], a[frSidebarMenuButton], button[frSidebarMenuButton]',\n host: {\n class: 'frame-sidebar__menu-button',\n '[attr.data-active]': 'active() ? \"\" : null',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.data-size]': 'size()',\n '[attr.data-variant]': 'variant()',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\n '[attr.tabindex]': 'disabled() ? -1 : null',\n '(click)': 'handleClick($event)',\n },\n})\nexport class FrSidebarMenuButton {\n readonly active = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly size = input<FrSidebarMenuButtonSize, unknown>('default', {\n transform: coerceMenuButtonSize,\n });\n readonly variant = input<FrSidebarMenuButtonVariant, unknown>('default', {\n transform: coerceMenuButtonVariant,\n });\n readonly tooltip = input<string | null>(null);\n\n handleClick(event: Event): void {\n if (this.disabled()) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n}\n\n@Directive({\n selector: '[frSidebarMenuAction], frame-sidebar-menu-action',\n host: {\n class: 'frame-sidebar__menu-action',\n type: 'button',\n '[attr.data-show-on-hover]': 'showOnHover() ? \"\" : null',\n },\n})\nexport class FrSidebarMenuAction {\n readonly showOnHover = input(false, { transform: booleanAttribute });\n}\n\n@Directive({\n selector: '[frSidebarMenuBadge], frame-sidebar-menu-badge',\n host: {\n class: 'frame-sidebar__menu-badge',\n },\n})\nexport class FrSidebarMenuBadge {}\n\n@Directive({\n selector: '[frSidebarMenuSub], frame-sidebar-menu-sub',\n host: {\n class: 'frame-sidebar__menu-sub',\n role: 'list',\n },\n})\nexport class FrSidebarMenuSub {}\n\n@Directive({\n selector: '[frSidebarMenuSubItem], frame-sidebar-menu-sub-item',\n host: {\n class: 'frame-sidebar__menu-sub-item',\n role: 'listitem',\n },\n})\nexport class FrSidebarMenuSubItem {}\n\n@Directive({\n selector: '[frSidebarMenuSubButton], a[frSidebarMenuSubButton], button[frSidebarMenuSubButton]',\n host: {\n class: 'frame-sidebar__menu-sub-button',\n '[attr.data-active]': 'active() ? \"\" : null',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\n '(click)': 'handleClick($event)',\n },\n})\nexport class FrSidebarMenuSubButton {\n readonly active = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n\n handleClick(event: Event): void {\n if (this.disabled()) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n}\n\n@Directive({\n selector: '[frSidebarMenuSkeleton], frame-sidebar-menu-skeleton',\n host: {\n class: 'frame-sidebar__menu-skeleton',\n '[attr.data-show-icon]': 'showIcon() ? \"\" : null',\n '[style.--frame-sidebar-skeleton-width]': 'width()',\n },\n})\nexport class FrSidebarMenuSkeleton {\n readonly showIcon = input(false, { transform: booleanAttribute });\n readonly width = input('72%');\n}\n","import { NgModule } from '@angular/core';\nimport {\n FrSidebar,\n FrSidebarContent,\n FrSidebarFooter,\n FrSidebarGroup,\n FrSidebarGroupAction,\n FrSidebarGroupContent,\n FrSidebarGroupLabel,\n FrSidebarHeader,\n FrSidebarInset,\n FrSidebarMenu,\n FrSidebarMenuAction,\n FrSidebarMenuBadge,\n FrSidebarMenuButton,\n FrSidebarMenuItem,\n FrSidebarMenuSkeleton,\n FrSidebarMenuSub,\n FrSidebarMenuSubButton,\n FrSidebarMenuSubItem,\n FrSidebarProvider,\n FrSidebarRail,\n FrSidebarTrigger,\n} from './src/sidebar';\n\n@NgModule({\n imports: [\n FrSidebar,\n FrSidebarContent,\n FrSidebarFooter,\n FrSidebarGroup,\n FrSidebarGroupAction,\n FrSidebarGroupContent,\n FrSidebarGroupLabel,\n FrSidebarHeader,\n FrSidebarInset,\n FrSidebarMenu,\n FrSidebarMenuAction,\n FrSidebarMenuBadge,\n FrSidebarMenuButton,\n FrSidebarMenuItem,\n FrSidebarMenuSkeleton,\n FrSidebarMenuSub,\n FrSidebarMenuSubButton,\n FrSidebarMenuSubItem,\n FrSidebarProvider,\n FrSidebarRail,\n FrSidebarTrigger,\n ],\n exports: [\n FrSidebar,\n FrSidebarContent,\n FrSidebarFooter,\n FrSidebarGroup,\n FrSidebarGroupAction,\n FrSidebarGroupContent,\n FrSidebarGroupLabel,\n FrSidebarHeader,\n FrSidebarInset,\n FrSidebarMenu,\n FrSidebarMenuAction,\n FrSidebarMenuBadge,\n FrSidebarMenuButton,\n FrSidebarMenuItem,\n FrSidebarMenuSkeleton,\n FrSidebarMenuSub,\n FrSidebarMenuSubButton,\n FrSidebarMenuSubItem,\n FrSidebarProvider,\n FrSidebarRail,\n FrSidebarTrigger,\n ],\n})\nexport class FrSidebarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frame-ui-ng-components-sidebar.mjs","sources":["../../../projects/components/sidebar/src/sidebar.ts","../../../projects/components/sidebar/sidebar.module.ts","../../../projects/components/sidebar/frame-ui-ng-components-sidebar.ts"],"sourcesContent":["import {\r\n Directive,\r\n ElementRef,\r\n InjectionToken,\r\n booleanAttribute,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n numberAttribute,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { clampNumber } from '@frame-ui-ng/components/utils';\r\n\r\nexport const FR_SIDEBAR_SIDES = ['left', 'right'] as const;\r\nexport const FR_SIDEBAR_VARIANTS = ['sidebar', 'floating', 'inset'] as const;\r\nexport const FR_SIDEBAR_COLLAPSIBLES = ['offcanvas', 'icon', 'none'] as const;\r\nexport const FR_SIDEBAR_MENU_BUTTON_SIZES = ['default', 'sm', 'lg'] as const;\r\nexport const FR_SIDEBAR_MENU_BUTTON_VARIANTS = ['default', 'outline'] as const;\r\n\r\nexport type FrSidebarSide = (typeof FR_SIDEBAR_SIDES)[number];\r\nexport type FrSidebarVariant = (typeof FR_SIDEBAR_VARIANTS)[number];\r\nexport type FrSidebarCollapsible = (typeof FR_SIDEBAR_COLLAPSIBLES)[number];\r\nexport type FrSidebarState = 'expanded' | 'collapsed';\r\nexport type FrSidebarMenuButtonSize = (typeof FR_SIDEBAR_MENU_BUTTON_SIZES)[number];\r\nexport type FrSidebarMenuButtonVariant = (typeof FR_SIDEBAR_MENU_BUTTON_VARIANTS)[number];\r\n\r\nexport const FR_SIDEBAR_PROVIDER = new InjectionToken<FrSidebarProvider>('FR_SIDEBAR_PROVIDER');\r\n\r\nfunction coerceSide(value: unknown): FrSidebarSide {\r\n return value === 'right' ? 'right' : 'left';\r\n}\r\n\r\nfunction coerceVariant(value: unknown): FrSidebarVariant {\r\n return value === 'floating' || value === 'inset' ? value : 'sidebar';\r\n}\r\n\r\nfunction coerceCollapsible(value: unknown): FrSidebarCollapsible {\r\n return value === 'icon' || value === 'none' ? value : 'offcanvas';\r\n}\r\n\r\nfunction coerceMenuButtonSize(value: unknown): FrSidebarMenuButtonSize {\r\n return value === 'sm' || value === 'lg' ? value : 'default';\r\n}\r\n\r\nfunction coerceMenuButtonVariant(value: unknown): FrSidebarMenuButtonVariant {\r\n return value === 'outline' ? 'outline' : 'default';\r\n}\r\n\r\nfunction coerceOptionalNumber(value: unknown): number | null {\r\n if (value === null || value === undefined || value === '') {\r\n return null;\r\n }\r\n\r\n const coerced = numberAttribute(value, Number.NaN);\r\n return Number.isFinite(coerced) ? coerced : null;\r\n}\r\n\r\n@Directive({\r\n selector: '[frSidebarProvider], frame-sidebar-provider',\r\n exportAs: 'frSidebarProvider',\r\n providers: [\r\n {\r\n provide: FR_SIDEBAR_PROVIDER,\r\n useExisting: FrSidebarProvider,\r\n },\r\n ],\r\n host: {\r\n class: 'frame-sidebar-provider',\r\n '[attr.data-state]': 'state()',\r\n '[attr.data-open]': 'open()',\r\n '[attr.data-mobile-open]': 'openMobile()',\r\n '[attr.data-mobile]': 'isMobile() ? \"\" : null',\r\n '[attr.data-resizing]': 'resizing() ? \"\" : null',\r\n '(document:keydown)': 'handleKeydown($event)',\r\n },\r\n})\r\nexport class FrSidebarProvider {\r\n private readonly document = inject(DOCUMENT);\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly internalOpen = signal(true);\r\n private readonly internalOpenMobile = signal(false);\r\n protected readonly resizing = signal(false);\r\n\r\n readonly defaultOpen = input(true, { transform: booleanAttribute });\r\n readonly openInput = input<boolean | null>(null, { alias: 'open' });\r\n readonly openChange = output<boolean>();\r\n readonly openMobileChange = output<boolean>();\r\n readonly shortcut = input('b');\r\n readonly keyboardShortcut = input(true, { transform: booleanAttribute });\r\n readonly isMobile = signal(false);\r\n\r\n readonly open = computed(() => this.openInput() ?? this.internalOpen());\r\n readonly openMobile = computed(() => this.internalOpenMobile());\r\n readonly state = computed<FrSidebarState>(() => (this.open() ? 'expanded' : 'collapsed'));\r\n\r\n constructor() {\r\n this.internalOpen.set(this.defaultOpen());\r\n\r\n effect(() => {\r\n if (this.openInput() === null) {\r\n this.internalOpen.set(this.defaultOpen());\r\n }\r\n });\r\n\r\n effect(() => {\r\n this.elementRef.nativeElement.style.setProperty('--frame-sidebar-state', this.state());\r\n });\r\n\r\n const defaultView = this.document.defaultView;\r\n if (!defaultView?.matchMedia) {\r\n return;\r\n }\r\n\r\n const mediaQuery = defaultView.matchMedia('(max-width: 768px)');\r\n const updateMobile = () => this.isMobile.set(mediaQuery.matches);\r\n updateMobile();\r\n mediaQuery.addEventListener?.('change', updateMobile);\r\n }\r\n\r\n setOpen(open: boolean): void {\r\n if (this.openInput() === null) {\r\n this.internalOpen.set(open);\r\n }\r\n\r\n this.openChange.emit(open);\r\n }\r\n\r\n setOpenMobile(open: boolean): void {\r\n this.internalOpenMobile.set(open);\r\n this.openMobileChange.emit(open);\r\n }\r\n\r\n setSidebarWidth(width: number): void {\r\n this.elementRef.nativeElement.style.setProperty('--frame-sidebar-width', `${width}px`);\r\n }\r\n\r\n setResizing(resizing: boolean): void {\r\n this.resizing.set(resizing);\r\n }\r\n\r\n toggleSidebar(): void {\r\n if (this.isMobile()) {\r\n this.setOpenMobile(!this.openMobile());\r\n return;\r\n }\r\n\r\n this.setOpen(!this.open());\r\n }\r\n\r\n handleKeydown(event: KeyboardEvent): void {\r\n if (!this.keyboardShortcut()) {\r\n return;\r\n }\r\n\r\n const key = this.shortcut().toLowerCase();\r\n if (event.key.toLowerCase() !== key || (!event.metaKey && !event.ctrlKey)) {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n this.toggleSidebar();\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[frSidebar], frame-sidebar',\r\n host: {\r\n class: 'frame-sidebar',\r\n '[attr.data-side]': 'side()',\r\n '[attr.data-variant]': 'variant()',\r\n '[attr.data-collapsible]': 'collapsible()',\r\n '[attr.data-resizable]': 'resizable() ? \"\" : null',\r\n '[attr.data-state]': 'provider?.state() ?? \"expanded\"',\r\n '[attr.data-mobile-open]': 'provider?.openMobile() ?? false',\r\n },\r\n})\r\nexport class FrSidebar {\r\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n readonly provider = inject(FR_SIDEBAR_PROVIDER, { optional: true });\r\n readonly side = input<FrSidebarSide, unknown>('left', { transform: coerceSide });\r\n readonly variant = input<FrSidebarVariant, unknown>('sidebar', { transform: coerceVariant });\r\n readonly collapsible = input<FrSidebarCollapsible, unknown>('offcanvas', {\r\n transform: coerceCollapsible,\r\n });\r\n readonly minSize = input<number | null, unknown>(null, { transform: coerceOptionalNumber });\r\n readonly maxSize = input<number | null, unknown>(384, { transform: coerceOptionalNumber });\r\n readonly resizable = input(true, { transform: booleanAttribute });\r\n}\r\n\r\n@Directive({\r\n selector: '[frSidebarTrigger]',\r\n host: {\r\n class: 'frame-sidebar__trigger',\r\n type: 'button',\r\n '[attr.aria-expanded]': 'provider?.open() ?? true',\r\n '[attr.aria-label]': 'ariaLabel()',\r\n '(click)': 'toggle()',\r\n },\r\n})\r\nexport class FrSidebarTrigger {\r\n readonly provider = inject(FR_SIDEBAR_PROVIDER, { optional: true });\r\n readonly ariaLabel = input('Toggle sidebar', { alias: 'aria-label' });\r\n\r\n toggle(): void {\r\n this.provider?.toggleSidebar();\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[frSidebarRail], frame-sidebar-rail',\r\n host: {\r\n class: 'frame-sidebar__rail',\r\n role: 'separator',\r\n tabindex: '0',\r\n 'aria-label': 'Resize sidebar',\r\n 'aria-orientation': 'vertical',\r\n '(click)': 'toggle()',\r\n '(pointerdown)': 'startResize($event)',\r\n '(keydown.enter)': 'toggle()',\r\n '(keydown.space)': 'toggle(); $event.preventDefault()',\r\n },\r\n})\r\nexport class FrSidebarRail {\r\n private readonly document = inject(DOCUMENT);\r\n private readonly sidebar = inject(FrSidebar, { optional: true });\r\n private startX = 0;\r\n private startWidth = 0;\r\n private dragging = false;\r\n private suppressClick = false;\r\n private frameId = -1;\r\n private pendingWidth = 0;\r\n private resizeMinSize = 192;\r\n private resizeMaxSize = 384;\r\n\r\n readonly provider = inject(FR_SIDEBAR_PROVIDER, { optional: true });\r\n\r\n toggle(): void {\r\n if (this.suppressClick) {\r\n return;\r\n }\r\n\r\n if (this.sidebar?.collapsible() === 'icon') {\r\n return;\r\n }\r\n\r\n this.provider?.toggleSidebar();\r\n }\r\n\r\n startResize(event: PointerEvent): void {\r\n if (!this.sidebar || !this.provider || this.provider.isMobile() || !this.sidebar.resizable()) {\r\n return;\r\n }\r\n\r\n this.startX = event.clientX;\r\n this.startWidth = this.sidebar.elementRef.nativeElement.getBoundingClientRect().width;\r\n this.dragging = false;\r\n this.pendingWidth = this.startWidth;\r\n this.captureResizeBounds();\r\n this.provider.setResizing(true);\r\n event.preventDefault();\r\n\r\n const move = (moveEvent: PointerEvent) => this.resize(moveEvent);\r\n const up = () => {\r\n this.document.removeEventListener('pointermove', move);\r\n this.document.removeEventListener('pointerup', up);\r\n if (this.dragging) {\r\n this.flushResize();\r\n }\r\n this.provider?.setResizing(false);\r\n this.suppressClick = this.dragging;\r\n this.dragging = false;\r\n this.pendingWidth = 0;\r\n this.resizeMinSize = 192;\r\n this.resizeMaxSize = 384;\r\n setTimeout(() => {\r\n this.suppressClick = false;\r\n });\r\n };\r\n\r\n this.document.addEventListener('pointermove', move);\r\n this.document.addEventListener('pointerup', up, { once: true });\r\n }\r\n\r\n private resize(event: PointerEvent): void {\r\n if (!this.sidebar || !this.provider) {\r\n return;\r\n }\r\n\r\n const delta = event.clientX - this.startX;\r\n const direction = this.sidebar.side() === 'right' ? -1 : 1;\r\n const nextWidth = clampNumber(this.startWidth + delta * direction, this.resizeMinSize, this.resizeMaxSize);\r\n\r\n if (Math.abs(delta) > 3) {\r\n this.dragging = true;\r\n\r\n if (this.sidebar.collapsible() === 'icon' && !this.provider.open()) {\r\n this.provider.setOpen(true);\r\n }\r\n }\r\n\r\n this.pendingWidth = nextWidth;\r\n\r\n if (this.frameId !== -1) {\r\n return;\r\n }\r\n\r\n this.frameId = requestAnimationFrame(() => {\r\n this.provider?.setSidebarWidth(this.pendingWidth);\r\n this.frameId = -1;\r\n });\r\n }\r\n\r\n private flushResize(): void {\r\n if (this.frameId !== -1) {\r\n cancelAnimationFrame(this.frameId);\r\n this.frameId = -1;\r\n }\r\n\r\n if (this.pendingWidth) {\r\n this.provider?.setSidebarWidth(this.pendingWidth);\r\n }\r\n }\r\n\r\n private captureResizeBounds(): void {\r\n if (!this.sidebar) {\r\n return;\r\n }\r\n\r\n const minSize = this.sidebar.minSize() ?? this.measureContentMinSize();\r\n const maxSize = this.sidebar.maxSize() ?? Number.POSITIVE_INFINITY;\r\n\r\n this.resizeMinSize = minSize;\r\n this.resizeMaxSize = Math.max(minSize, maxSize);\r\n }\r\n\r\n private measureContentMinSize(): number {\r\n if (!this.sidebar) {\r\n return 192;\r\n }\r\n\r\n const sidebarElement = this.sidebar.elementRef.nativeElement;\r\n const sidebarRect = sidebarElement.getBoundingClientRect();\r\n let measuredWidth = 0;\r\n\r\n for (const element of Array.from(sidebarElement.querySelectorAll<HTMLElement>('*'))) {\r\n if (element.hasAttribute('frSidebarRail') || element.tagName.toLowerCase() === 'frame-sidebar-rail') {\r\n continue;\r\n }\r\n\r\n const rect = element.getBoundingClientRect();\r\n const inlineStart = Math.max(0, rect.left - sidebarRect.left);\r\n measuredWidth = Math.max(measuredWidth, inlineStart + element.scrollWidth);\r\n }\r\n\r\n return Math.max(Math.ceil(measuredWidth), 192);\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[frSidebarInset], frame-sidebar-inset',\r\n host: {\r\n class: 'frame-sidebar-inset',\r\n },\r\n})\r\nexport class FrSidebarInset {}\r\n\r\n@Directive({\r\n selector: '[frSidebarHeader], frame-sidebar-header',\r\n host: {\r\n class: 'frame-sidebar__header',\r\n },\r\n})\r\nexport class FrSidebarHeader {}\r\n\r\n@Directive({\r\n selector: '[frSidebarFooter], frame-sidebar-footer',\r\n host: {\r\n class: 'frame-sidebar__footer',\r\n },\r\n})\r\nexport class FrSidebarFooter {}\r\n\r\n@Directive({\r\n selector: '[frSidebarContent], frame-sidebar-content',\r\n host: {\r\n class: 'frame-sidebar__content',\r\n },\r\n})\r\nexport class FrSidebarContent {}\r\n\r\n@Directive({\r\n selector: '[frSidebarGroup], frame-sidebar-group',\r\n host: {\r\n class: 'frame-sidebar__group',\r\n },\r\n})\r\nexport class FrSidebarGroup {}\r\n\r\n@Directive({\r\n selector: '[frSidebarGroupLabel], frame-sidebar-group-label',\r\n host: {\r\n class: 'frame-sidebar__group-label',\r\n },\r\n})\r\nexport class FrSidebarGroupLabel {}\r\n\r\n@Directive({\r\n selector: '[frSidebarGroupAction], frame-sidebar-group-action',\r\n host: {\r\n class: 'frame-sidebar__group-action',\r\n type: 'button',\r\n },\r\n})\r\nexport class FrSidebarGroupAction {}\r\n\r\n@Directive({\r\n selector: '[frSidebarGroupContent], frame-sidebar-group-content',\r\n host: {\r\n class: 'frame-sidebar__group-content',\r\n },\r\n})\r\nexport class FrSidebarGroupContent {}\r\n\r\n@Directive({\r\n selector: '[frSidebarMenu], frame-sidebar-menu',\r\n host: {\r\n class: 'frame-sidebar__menu',\r\n role: 'list',\r\n },\r\n})\r\nexport class FrSidebarMenu {}\r\n\r\n@Directive({\r\n selector: '[frSidebarMenuItem], frame-sidebar-menu-item',\r\n host: {\r\n class: 'frame-sidebar__menu-item',\r\n role: 'listitem',\r\n },\r\n})\r\nexport class FrSidebarMenuItem {}\r\n\r\n@Directive({\r\n selector: '[frSidebarMenuButton], a[frSidebarMenuButton], button[frSidebarMenuButton]',\r\n host: {\r\n class: 'frame-sidebar__menu-button',\r\n '[attr.data-active]': 'active() ? \"\" : null',\r\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-variant]': 'variant()',\r\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\r\n '[attr.tabindex]': 'disabled() ? -1 : null',\r\n '(click)': 'handleClick($event)',\r\n },\r\n})\r\nexport class FrSidebarMenuButton {\r\n readonly active = input(false, { transform: booleanAttribute });\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n readonly size = input<FrSidebarMenuButtonSize, unknown>('default', {\r\n transform: coerceMenuButtonSize,\r\n });\r\n readonly variant = input<FrSidebarMenuButtonVariant, unknown>('default', {\r\n transform: coerceMenuButtonVariant,\r\n });\r\n readonly tooltip = input<string | null>(null);\r\n\r\n handleClick(event: Event): void {\r\n if (this.disabled()) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[frSidebarMenuAction], frame-sidebar-menu-action',\r\n host: {\r\n class: 'frame-sidebar__menu-action',\r\n type: 'button',\r\n '[attr.data-show-on-hover]': 'showOnHover() ? \"\" : null',\r\n },\r\n})\r\nexport class FrSidebarMenuAction {\r\n readonly showOnHover = input(false, { transform: booleanAttribute });\r\n}\r\n\r\n@Directive({\r\n selector: '[frSidebarMenuBadge], frame-sidebar-menu-badge',\r\n host: {\r\n class: 'frame-sidebar__menu-badge',\r\n },\r\n})\r\nexport class FrSidebarMenuBadge {}\r\n\r\n@Directive({\r\n selector: '[frSidebarMenuSub], frame-sidebar-menu-sub',\r\n host: {\r\n class: 'frame-sidebar__menu-sub',\r\n role: 'list',\r\n },\r\n})\r\nexport class FrSidebarMenuSub {}\r\n\r\n@Directive({\r\n selector: '[frSidebarMenuSubItem], frame-sidebar-menu-sub-item',\r\n host: {\r\n class: 'frame-sidebar__menu-sub-item',\r\n role: 'listitem',\r\n },\r\n})\r\nexport class FrSidebarMenuSubItem {}\r\n\r\n@Directive({\r\n selector: '[frSidebarMenuSubButton], a[frSidebarMenuSubButton], button[frSidebarMenuSubButton]',\r\n host: {\r\n class: 'frame-sidebar__menu-sub-button',\r\n '[attr.data-active]': 'active() ? \"\" : null',\r\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\r\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\r\n '(click)': 'handleClick($event)',\r\n },\r\n})\r\nexport class FrSidebarMenuSubButton {\r\n readonly active = input(false, { transform: booleanAttribute });\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n handleClick(event: Event): void {\r\n if (this.disabled()) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[frSidebarMenuSkeleton], frame-sidebar-menu-skeleton',\r\n host: {\r\n class: 'frame-sidebar__menu-skeleton',\r\n '[attr.data-show-icon]': 'showIcon() ? \"\" : null',\r\n '[style.--frame-sidebar-skeleton-width]': 'width()',\r\n },\r\n})\r\nexport class FrSidebarMenuSkeleton {\r\n readonly showIcon = input(false, { transform: booleanAttribute });\r\n readonly width = input('72%');\r\n}\r\n","import { NgModule } from '@angular/core';\nimport {\n FrSidebar,\n FrSidebarContent,\n FrSidebarFooter,\n FrSidebarGroup,\n FrSidebarGroupAction,\n FrSidebarGroupContent,\n FrSidebarGroupLabel,\n FrSidebarHeader,\n FrSidebarInset,\n FrSidebarMenu,\n FrSidebarMenuAction,\n FrSidebarMenuBadge,\n FrSidebarMenuButton,\n FrSidebarMenuItem,\n FrSidebarMenuSkeleton,\n FrSidebarMenuSub,\n FrSidebarMenuSubButton,\n FrSidebarMenuSubItem,\n FrSidebarProvider,\n FrSidebarRail,\n FrSidebarTrigger,\n} from './src/sidebar';\n\n@NgModule({\n imports: [\n FrSidebar,\n FrSidebarContent,\n FrSidebarFooter,\n FrSidebarGroup,\n FrSidebarGroupAction,\n FrSidebarGroupContent,\n FrSidebarGroupLabel,\n FrSidebarHeader,\n FrSidebarInset,\n FrSidebarMenu,\n FrSidebarMenuAction,\n FrSidebarMenuBadge,\n FrSidebarMenuButton,\n FrSidebarMenuItem,\n FrSidebarMenuSkeleton,\n FrSidebarMenuSub,\n FrSidebarMenuSubButton,\n FrSidebarMenuSubItem,\n FrSidebarProvider,\n FrSidebarRail,\n FrSidebarTrigger,\n ],\n exports: [\n FrSidebar,\n FrSidebarContent,\n FrSidebarFooter,\n FrSidebarGroup,\n FrSidebarGroupAction,\n FrSidebarGroupContent,\n FrSidebarGroupLabel,\n FrSidebarHeader,\n FrSidebarInset,\n FrSidebarMenu,\n FrSidebarMenuAction,\n FrSidebarMenuBadge,\n FrSidebarMenuButton,\n FrSidebarMenuItem,\n FrSidebarMenuSkeleton,\n FrSidebarMenuSub,\n FrSidebarMenuSubButton,\n FrSidebarMenuSubItem,\n FrSidebarProvider,\n FrSidebarRail,\n FrSidebarTrigger,\n ],\n})\nexport class FrSidebarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -2,15 +2,12 @@ import * as i0 from '@angular/core';
2
2
  import { inject, ElementRef, input, numberAttribute, booleanAttribute, output, signal, computed, effect, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
3
3
  import { DOCUMENT } from '@angular/common';
4
4
  import { FrControlValueAccessor, provideDsValueAccessor } from '@frame-ui-ng/components/forms';
5
+ import { coerceNumber, clampNumber } from '@frame-ui-ng/components/utils';
5
6
 
6
7
  const FR_SLIDER_ORIENTATIONS = ['horizontal', 'vertical'];
7
8
  function coerceOrientation(value) {
8
9
  return value === 'vertical' ? 'vertical' : 'horizontal';
9
10
  }
10
- function coerceNumber(value, fallback) {
11
- const parsed = Number(value);
12
- return Number.isFinite(parsed) ? parsed : fallback;
13
- }
14
11
  function coerceValue(value) {
15
12
  if (Array.isArray(value)) {
16
13
  return value.map((item) => coerceNumber(item, 0));
@@ -146,7 +143,7 @@ class FrSlider extends FrControlValueAccessor {
146
143
  const next = index < normalized.length - 1 ? normalized[index + 1] - minDistance : max;
147
144
  const lower = activeIndex === index ? previous : min;
148
145
  const upper = activeIndex === index ? next : max;
149
- return this.snap(clamp(value, lower, upper), min, step);
146
+ return this.snap(clampNumber(value, lower, upper), min, step);
150
147
  });
151
148
  }
152
149
  snap(value, min, step) {
@@ -169,7 +166,7 @@ class FrSlider extends FrControlValueAccessor {
169
166
  if (this.inverted()) {
170
167
  percent = 1 - percent;
171
168
  }
172
- return this.min() + clamp(percent, 0, 1) * (this.max() - this.min());
169
+ return this.min() + clampNumber(percent, 0, 1) * (this.max() - this.min());
173
170
  }
174
171
  closestThumbIndex(value) {
175
172
  return this.values().reduce((closestIndex, thumb, index, values) => {
@@ -182,31 +179,31 @@ class FrSlider extends FrControlValueAccessor {
182
179
  return getComputedStyle(this.elementRef.nativeElement).direction === 'rtl';
183
180
  }
184
181
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSlider, deps: [], target: i0.ɵɵFactoryTarget.Component });
185
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrSlider, isStandalone: true, selector: "frame-slider", inputs: { min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, minStepsBetweenThumbs: { classPropertyName: "minStepsBetweenThumbs", publicName: "minStepsBetweenThumbs", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, invalidInput: { classPropertyName: "invalidInput", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, inverted: { classPropertyName: "inverted", publicName: "inverted", isSignal: true, isRequired: false, transformFunction: null }, defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, valueInput: { classPropertyName: "valueInput", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, formatValue: { classPropertyName: "formatValue", publicName: "formatValue", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, host: { listeners: { "pointerdown": "handlePointerDown($event)" }, properties: { "attr.data-orientation": "orientation()", "attr.data-disabled": "disabled() ? \"\" : null", "attr.data-invalid": "invalid() ? \"\" : null", "attr.data-inverted": "inverted() ? \"\" : null", "style.--frame-slider-start-percent": "rangeStartPercent() + \"%\"", "style.--frame-slider-end-percent": "rangeEndPercent() + \"%\"" }, classAttribute: "frame-slider" }, providers: [provideDsValueAccessor(FrSlider)], exportAs: ["frSlider"], usesInheritance: true, ngImport: i0, template: `
186
- <span class="frame-slider__track">
187
- <span class="frame-slider__range"></span>
188
- </span>
189
-
190
- @for (thumb of values(); track $index) {
191
- <input
192
- class="frame-slider__native"
193
- type="range"
194
- [attr.aria-label]="thumbLabel($index)"
195
- [attr.aria-valuetext]="valueText(thumb)"
196
- [disabled]="disabled()"
197
- [min]="min()"
198
- [max]="max()"
199
- [step]="step()"
200
- [value]="thumb"
201
- (blur)="markTouched()"
202
- (input)="handleNativeInput($index, $any($event.target).value)"
203
- />
204
- <span
205
- class="frame-slider__thumb"
206
- [attr.data-active]="activeThumb() === $index ? '' : null"
207
- [style.--frame-slider-thumb-percent]="percentForValue(thumb) + '%'"
208
- ></span>
209
- }
182
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrSlider, isStandalone: true, selector: "frame-slider", inputs: { min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, minStepsBetweenThumbs: { classPropertyName: "minStepsBetweenThumbs", publicName: "minStepsBetweenThumbs", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, invalidInput: { classPropertyName: "invalidInput", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, inverted: { classPropertyName: "inverted", publicName: "inverted", isSignal: true, isRequired: false, transformFunction: null }, defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, valueInput: { classPropertyName: "valueInput", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, formatValue: { classPropertyName: "formatValue", publicName: "formatValue", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, host: { listeners: { "pointerdown": "handlePointerDown($event)" }, properties: { "attr.data-orientation": "orientation()", "attr.data-disabled": "disabled() ? \"\" : null", "attr.data-invalid": "invalid() ? \"\" : null", "attr.data-inverted": "inverted() ? \"\" : null", "style.--frame-slider-start-percent": "rangeStartPercent() + \"%\"", "style.--frame-slider-end-percent": "rangeEndPercent() + \"%\"" }, classAttribute: "frame-slider" }, providers: [provideDsValueAccessor(FrSlider)], exportAs: ["frSlider"], usesInheritance: true, ngImport: i0, template: `
183
+ <span class="frame-slider__track">
184
+ <span class="frame-slider__range"></span>
185
+ </span>
186
+
187
+ @for (thumb of values(); track $index) {
188
+ <input
189
+ class="frame-slider__native"
190
+ type="range"
191
+ [attr.aria-label]="thumbLabel($index)"
192
+ [attr.aria-valuetext]="valueText(thumb)"
193
+ [disabled]="disabled()"
194
+ [min]="min()"
195
+ [max]="max()"
196
+ [step]="step()"
197
+ [value]="thumb"
198
+ (blur)="markTouched()"
199
+ (input)="handleNativeInput($index, $any($event.target).value)"
200
+ />
201
+ <span
202
+ class="frame-slider__thumb"
203
+ [attr.data-active]="activeThumb() === $index ? '' : null"
204
+ [style.--frame-slider-thumb-percent]="percentForValue(thumb) + '%'"
205
+ ></span>
206
+ }
210
207
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
211
208
  }
212
209
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSlider, decorators: [{
@@ -226,37 +223,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
226
223
  '[style.--frame-slider-end-percent]': 'rangeEndPercent() + "%"',
227
224
  '(pointerdown)': 'handlePointerDown($event)',
228
225
  },
229
- template: `
230
- <span class="frame-slider__track">
231
- <span class="frame-slider__range"></span>
232
- </span>
233
-
234
- @for (thumb of values(); track $index) {
235
- <input
236
- class="frame-slider__native"
237
- type="range"
238
- [attr.aria-label]="thumbLabel($index)"
239
- [attr.aria-valuetext]="valueText(thumb)"
240
- [disabled]="disabled()"
241
- [min]="min()"
242
- [max]="max()"
243
- [step]="step()"
244
- [value]="thumb"
245
- (blur)="markTouched()"
246
- (input)="handleNativeInput($index, $any($event.target).value)"
247
- />
248
- <span
249
- class="frame-slider__thumb"
250
- [attr.data-active]="activeThumb() === $index ? '' : null"
251
- [style.--frame-slider-thumb-percent]="percentForValue(thumb) + '%'"
252
- ></span>
253
- }
226
+ template: `
227
+ <span class="frame-slider__track">
228
+ <span class="frame-slider__range"></span>
229
+ </span>
230
+
231
+ @for (thumb of values(); track $index) {
232
+ <input
233
+ class="frame-slider__native"
234
+ type="range"
235
+ [attr.aria-label]="thumbLabel($index)"
236
+ [attr.aria-valuetext]="valueText(thumb)"
237
+ [disabled]="disabled()"
238
+ [min]="min()"
239
+ [max]="max()"
240
+ [step]="step()"
241
+ [value]="thumb"
242
+ (blur)="markTouched()"
243
+ (input)="handleNativeInput($index, $any($event.target).value)"
244
+ />
245
+ <span
246
+ class="frame-slider__thumb"
247
+ [attr.data-active]="activeThumb() === $index ? '' : null"
248
+ [style.--frame-slider-thumb-percent]="percentForValue(thumb) + '%'"
249
+ ></span>
250
+ }
254
251
  `,
255
252
  }]
256
253
  }], ctorParameters: () => [], propDecorators: { min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], step: [{ type: i0.Input, args: [{ isSignal: true, alias: "step", required: false }] }], minStepsBetweenThumbs: [{ type: i0.Input, args: [{ isSignal: true, alias: "minStepsBetweenThumbs", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalidInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], inverted: [{ type: i0.Input, args: [{ isSignal: true, alias: "inverted", required: false }] }], defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], valueInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], formatValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "formatValue", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] } });
257
- function clamp(value, min, max) {
258
- return Math.min(Math.max(value, min), max);
259
- }
260
254
 
261
255
  class FrSliderModule {
262
256
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSliderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });