@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.
- package/button/src/styles/button.css +20 -4
- package/button-group/src/styles/button-group.css +6 -0
- package/dropdown-menu/src/styles/_vars.css +1 -1
- package/dropdown-menu/src/styles/dropdown-menu-item.css +87 -87
- package/fesm2022/frame-ui-ng-components-calendar.mjs +369 -263
- package/fesm2022/frame-ui-ng-components-calendar.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-combobox.mjs +48 -51
- package/fesm2022/frame-ui-ng-components-combobox.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-command.mjs +1 -1
- package/fesm2022/frame-ui-ng-components-command.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-confirm-modal.mjs +162 -0
- package/fesm2022/frame-ui-ng-components-confirm-modal.mjs.map +1 -0
- package/fesm2022/frame-ui-ng-components-date-picker.mjs +232 -226
- package/fesm2022/frame-ui-ng-components-date-picker.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs +45 -22
- package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-input-otp.mjs +64 -69
- package/fesm2022/frame-ui-ng-components-input-otp.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-input.mjs +6 -3
- package/fesm2022/frame-ui-ng-components-input.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-modal.mjs +93 -15
- package/fesm2022/frame-ui-ng-components-modal.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-pagination.mjs +37 -36
- package/fesm2022/frame-ui-ng-components-pagination.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-progress.mjs +2 -1
- package/fesm2022/frame-ui-ng-components-progress.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-resizable.mjs +16 -26
- package/fesm2022/frame-ui-ng-components-resizable.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-select.mjs +6 -3
- package/fesm2022/frame-ui-ng-components-select.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-sheet.mjs +19 -16
- package/fesm2022/frame-ui-ng-components-sheet.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-sidebar.mjs +59 -10
- package/fesm2022/frame-ui-ng-components-sidebar.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-slider.mjs +53 -59
- package/fesm2022/frame-ui-ng-components-slider.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-tooltip.mjs +307 -254
- package/fesm2022/frame-ui-ng-components-tooltip.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-utils.mjs +20 -0
- package/fesm2022/frame-ui-ng-components-utils.mjs.map +1 -0
- package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs +10 -12
- package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components.mjs +1047 -806
- package/fesm2022/frame-ui-ng-components.mjs.map +1 -1
- package/input/src/styles/input-group.css +50 -0
- package/item/src/styles/item.css +188 -187
- package/modal/src/styles/modal.css +10 -1
- package/package.json +10 -2
- package/select/src/styles/select-trigger.css +7 -36
- package/sidebar/src/styles/sidebar.css +10 -4
- package/src/styles/blueprint.css +102 -11
- package/src/styles/components.css +4 -4
- package/styles/blueprint.css +102 -11
- package/styles/components.css +4 -4
- package/styles.css +4 -4
- package/tooltip/src/styles/tooltip.css +7 -13
- package/types/frame-ui-ng-components-calendar.d.ts +14 -0
- package/types/frame-ui-ng-components-combobox.d.ts +1 -1
- package/types/frame-ui-ng-components-confirm-modal.d.ts +48 -0
- package/types/frame-ui-ng-components-context-menu.d.ts +2 -2
- package/types/frame-ui-ng-components-date-picker.d.ts +3 -1
- package/types/frame-ui-ng-components-dropdown-menu.d.ts +3 -3
- package/types/frame-ui-ng-components-input-otp.d.ts +1 -1
- package/types/frame-ui-ng-components-input.d.ts +6 -3
- package/types/frame-ui-ng-components-modal.d.ts +18 -7
- package/types/frame-ui-ng-components-select.d.ts +6 -3
- package/types/frame-ui-ng-components-sheet.d.ts +2 -0
- package/types/frame-ui-ng-components-sidebar.d.ts +8 -1
- package/types/frame-ui-ng-components-tooltip.d.ts +48 -73
- package/types/frame-ui-ng-components-utils.d.ts +5 -0
- package/types/frame-ui-ng-components.d.ts +87 -45
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frame-ui-ng-components-date-picker.mjs","sources":["../../../projects/components/date-picker/src/date-picker.ts","../../../projects/components/date-picker/date-picker.module.ts","../../../projects/components/date-picker/frame-ui-ng-components-date-picker.ts"],"sourcesContent":["import {\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n ConnectedOverlayPositionChange,\n ConnectedPosition,\n} from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n booleanAttribute,\n computed,\n input,\n output,\n signal,\n} from '@angular/core';\n\nimport {\n FrCalendar,\n FrCalendarCaptionLayout,\n FrCalendarCellContext,\n FrCalendarDateRange,\n FrCalendarDisabledMatcher,\n FrCalendarMode,\n} from '@frame-ui-ng/components/calendar';\nimport { FrControlValueAccessor, provideDsValueAccessor } from '@frame-ui-ng/components/forms';\n\nexport type FrDatePickerValue = Date | FrCalendarDateRange | null;\n\nexport type FrDatePickerPreset = {\n label: string;\n value: FrDatePickerValue | (() => FrDatePickerValue);\n};\n\nexport type FrDatePickerFormatter = (value: FrDatePickerValue, locale: string) => string;\nexport type FrDatePickerParser = (value: string, locale: string) => FrDatePickerValue | undefined;\n\nconst POSITIONS: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 8,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -8,\n },\n];\n\n@Component({\n selector: 'frame-date-picker',\n exportAs: 'frDatePicker',\n imports: [CdkConnectedOverlay, CdkOverlayOrigin, FrCalendar, NgTemplateOutlet],\n providers: [provideDsValueAccessor(FrDatePicker)],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'frame-date-picker',\n '[attr.data-open]': 'isOpen() ? \"\" : null',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.data-invalid]': 'invalid() ? \"\" : null',\n '[attr.data-mode]': 'mode()',\n '[attr.dir]': 'dir()',\n },\n template: `\n <span cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" class=\"frame-date-picker__anchor\">\n @if (editable()) {\n <span class=\"frame-date-picker__input-wrap\">\n <span class=\"frame-date-picker__icon\" aria-hidden=\"true\">{{ icon() }}</span>\n <input\n class=\"frame-date-picker__input\"\n type=\"text\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonlyInput()\"\n [placeholder]=\"placeholder()\"\n [value]=\"inputValue()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n aria-haspopup=\"dialog\"\n (focus)=\"open()\"\n (click)=\"open()\"\n (input)=\"handleInput($any($event.target).value)\"\n (change)=\"commitInput($any($event.target).value)\"\n (keydown)=\"handleTriggerKeydown($event)\"\n (blur)=\"markAsTouched()\"\n />\n </span>\n } @else {\n <button\n class=\"frame-date-picker__trigger\"\n type=\"button\"\n [disabled]=\"disabled()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n aria-haspopup=\"dialog\"\n (click)=\"toggle()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n >\n <span class=\"frame-date-picker__icon\" aria-hidden=\"true\">{{ icon() }}</span>\n <span class=\"frame-date-picker__trigger-label\" [attr.data-placeholder]=\"hasValue() ? null : ''\">\n {{ displayValue() || placeholder() }}\n </span>\n </button>\n }\n </span>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClasses()\"\n [cdkConnectedOverlayPush]=\"true\"\n [cdkConnectedOverlayViewportMargin]=\"12\"\n (overlayOutsideClick)=\"close()\"\n (detach)=\"close()\"\n (positionChange)=\"handlePositionChange($event)\"\n >\n <div class=\"frame-date-picker__content\" role=\"dialog\" [attr.aria-label]=\"dialogLabel()\">\n @if (presets().length) {\n <div class=\"frame-date-picker__presets\" aria-label=\"Date presets\">\n @for (preset of presets(); track preset.label) {\n <button class=\"frame-date-picker__preset\" type=\"button\" (click)=\"selectPreset(preset)\">\n {{ preset.label }}\n </button>\n }\n </div>\n }\n\n <ng-container [ngTemplateOutlet]=\"headerTemplate() ?? null\" />\n\n <frame-calendar\n [mode]=\"mode()\"\n [captionLayout]=\"captionLayout()\"\n [numberOfMonths]=\"numberOfMonths()\"\n [firstDayOfWeek]=\"firstDayOfWeek()\"\n [locale]=\"locale()\"\n [timeZone]=\"timeZone()\"\n [dir]=\"dir()\"\n [fromYear]=\"fromYear()\"\n [toYear]=\"toYear()\"\n [showOutsideDays]=\"showOutsideDays()\"\n [showWeekNumber]=\"showWeekNumber()\"\n [disabled]=\"disabled()\"\n [disabledDates]=\"disabledDates()\"\n [dateLabels]=\"dateLabels()\"\n [disabledMatcher]=\"disabledMatcher()\"\n [cellTemplate]=\"cellTemplate()\"\n [previousMonthTemplate]=\"previousMonthTemplate()\"\n [nextMonthTemplate]=\"nextMonthTemplate()\"\n [previousMonthIcon]=\"previousMonthIcon()\"\n [nextMonthIcon]=\"nextMonthIcon()\"\n [previousMonthLabel]=\"previousMonthLabel()\"\n [nextMonthLabel]=\"nextMonthLabel()\"\n [month]=\"month()\"\n [selected]=\"calendarValue()\"\n (selectedChange)=\"selectCalendarValue($any($event))\"\n (monthChange)=\"monthChange.emit($event)\"\n />\n\n @if (showTime() && mode() === 'single') {\n <label class=\"frame-date-picker__time\">\n <span class=\"frame-date-picker__time-label\">{{ timeLabel() }}</span>\n <input\n class=\"frame-date-picker__time-input\"\n type=\"time\"\n [disabled]=\"disabled() || !singleDate()\"\n [value]=\"timeValue()\"\n (change)=\"setTime($any($event.target).value)\"\n />\n </label>\n }\n\n <ng-container [ngTemplateOutlet]=\"footerTemplate() ?? null\" />\n </div>\n </ng-template>\n `,\n})\nexport class FrDatePicker extends FrControlValueAccessor<FrDatePickerValue> {\n readonly mode = input<FrCalendarMode>('single');\n readonly captionLayout = input<FrCalendarCaptionLayout>('label');\n readonly numberOfMonths = input(1);\n readonly firstDayOfWeek = input(0);\n readonly locale = input('en-US');\n readonly timeZone = input<string | undefined>(undefined);\n readonly dir = input<'ltr' | 'rtl'>('ltr');\n readonly fromYear = input(new Date().getFullYear() - 100);\n readonly toYear = input(new Date().getFullYear() + 20);\n readonly showOutsideDays = input(true, { transform: booleanAttribute });\n readonly showWeekNumber = input(false, { transform: booleanAttribute });\n readonly disabledInput = input(false, { alias: 'disabled', transform: booleanAttribute });\n readonly invalidInput = input(false, { alias: 'invalid', transform: booleanAttribute });\n readonly editable = input(false, { transform: booleanAttribute });\n readonly readonlyInput = input(false, { transform: booleanAttribute });\n readonly closeOnSelect = input(true, { transform: booleanAttribute });\n readonly debugVisible = input(false, { transform: booleanAttribute });\n readonly showTime = input(false, { transform: booleanAttribute });\n readonly placeholder = input('Pick a date');\n readonly dialogLabel = input('Choose date');\n readonly icon = input('◷');\n readonly disabledDates = input<Date[]>([]);\n readonly dateLabels = input<Record<string, string>>({});\n readonly disabledMatcher = input<FrCalendarDisabledMatcher | null>(null);\n readonly cellTemplate = input<TemplateRef<FrCalendarCellContext> | null>(null);\n readonly previousMonthTemplate = input<TemplateRef<unknown> | null>(null);\n readonly nextMonthTemplate = input<TemplateRef<unknown> | null>(null);\n readonly previousMonthIcon = input('‹');\n readonly nextMonthIcon = input('›');\n readonly previousMonthLabel = input('Previous month');\n readonly nextMonthLabel = input('Next month');\n readonly headerTemplate = input<TemplateRef<unknown> | null>(null);\n readonly footerTemplate = input<TemplateRef<unknown> | null>(null);\n readonly month = input<Date | null | undefined>(undefined);\n readonly presets = input<FrDatePickerPreset[]>([]);\n readonly formatter = input<FrDatePickerFormatter>(defaultFormatter);\n readonly parser = input<FrDatePickerParser>(defaultParser);\n readonly timeLabel = input('Time');\n\n readonly valueChange = output<FrDatePickerValue>();\n readonly openChange = output<boolean>();\n readonly monthChange = output<Date>();\n\n readonly positions = POSITIONS;\n readonly isOpen = signal(false);\n readonly overlaySide = signal<'bottom' | 'top'>('bottom');\n readonly value = signal<FrDatePickerValue>(null);\n readonly inputDraft = signal<string | null>(null);\n\n readonly disabled = computed(() => this.disabledInput() || this.formDisabled());\n readonly invalid = computed(() => this.invalidInput() || this.formInvalid());\n readonly hasValue = computed(() => hasValue(this.value(), this.mode()));\n readonly displayValue = computed(() => this.formatter()(this.value(), this.locale()));\n readonly inputValue = computed(() => this.inputDraft() ?? this.displayValue());\n readonly calendarValue = computed(() => normalizeValue(this.value(), this.mode()));\n readonly singleDate = computed(() => {\n const value = this.value();\n return value instanceof Date ? value : null;\n });\n readonly timeValue = computed(() => {\n const date = this.singleDate();\n return date ? `${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}` : '';\n });\n\n constructor() {\n super();\n queueMicrotask(() => {\n if (this.debugVisible()) {\n this.open();\n }\n });\n }\n\n toggle(): void {\n this.isOpen() ? this.close() : this.open();\n }\n\n open(): void {\n if (this.disabled()) {\n return;\n }\n\n this.isOpen.set(true);\n this.openChange.emit(true);\n }\n\n close(): void {\n if (this.debugVisible()) {\n return;\n }\n\n this.isOpen.set(false);\n this.openChange.emit(false);\n this.inputDraft.set(null);\n this.markAsTouched();\n }\n\n clear(): void {\n this.commitValue(this.mode() === 'range' ? { from: null, to: null } : null);\n }\n\n selectPreset(preset: FrDatePickerPreset): void {\n const next = typeof preset.value === 'function' ? preset.value() : preset.value;\n this.commitValue(normalizeValue(next, this.mode()));\n\n if (this.closeOnSelect() && isCompleteValue(this.value(), this.mode())) {\n this.close();\n }\n }\n\n selectCalendarValue(value: FrDatePickerValue): void {\n const previous = this.singleDate();\n const next = this.showTime() && value instanceof Date && previous ? mergeTime(value, previous) : value;\n\n this.commitValue(normalizeValue(next, this.mode()));\n\n if (this.closeOnSelect() && isCompleteValue(this.value(), this.mode())) {\n this.close();\n }\n }\n\n setTime(value: string): void {\n const date = this.singleDate();\n\n if (!date || !value) {\n return;\n }\n\n const [hours, minutes] = value.split(':').map(Number);\n const next = new Date(date);\n next.setHours(hours || 0, minutes || 0, 0, 0);\n this.commitValue(next);\n }\n\n handleInput(value: string): void {\n this.inputDraft.set(value);\n\n if (!value.trim()) {\n this.commitValue(this.mode() === 'range' ? { from: null, to: null } : null);\n }\n }\n\n commitInput(value: string): void {\n const parsed = this.parser()(value, this.locale());\n\n if (parsed !== undefined) {\n this.commitValue(normalizeValue(parsed, this.mode()));\n }\n\n this.inputDraft.set(null);\n }\n\n handleTriggerKeydown(event: KeyboardEvent): void {\n if (event.key === 'ArrowDown' || event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.open();\n }\n\n if (event.key === 'Escape') {\n event.preventDefault();\n this.close();\n }\n }\n\n handlePositionChange(event: ConnectedOverlayPositionChange): void {\n this.overlaySide.set(event.connectionPair.overlayY === 'bottom' ? 'top' : 'bottom');\n }\n\n overlayPanelClasses(): string[] {\n return ['frame-date-picker-overlay', `frame-date-picker-overlay--${this.overlaySide()}`];\n }\n\n protected setViewValue(value: FrDatePickerValue): void {\n this.value.set(normalizeValue(value, this.mode()));\n this.inputDraft.set(null);\n }\n\n private commitValue(value: FrDatePickerValue): void {\n this.value.set(value);\n this.inputDraft.set(null);\n this.notifyValueChange(value);\n this.valueChange.emit(value);\n this.markAsTouched();\n }\n}\n\nfunction normalizeValue(value: FrDatePickerValue | undefined, mode: FrCalendarMode): FrDatePickerValue {\n if (!value) {\n return mode === 'range' ? { from: null, to: null } : null;\n }\n\n if (mode === 'range') {\n if (isRange(value)) {\n return {\n from: value.from ? cloneDateWithTime(value.from) : null,\n to: value.to ? cloneDateWithTime(value.to) : null,\n };\n }\n\n return { from: cloneDateWithTime(value), to: null };\n }\n\n return value instanceof Date ? cloneDateWithTime(value) : value.from ? cloneDateWithTime(value.from) : null;\n}\n\nfunction defaultFormatter(value: FrDatePickerValue, locale: string): string {\n if (!value) {\n return '';\n }\n\n const formatter = new Intl.DateTimeFormat(locale, { dateStyle: 'medium' });\n\n if (value instanceof Date) {\n return formatter.format(value);\n }\n\n if (value.from && value.to) {\n return `${formatter.format(value.from)} - ${formatter.format(value.to)}`;\n }\n\n return value.from ? formatter.format(value.from) : '';\n}\n\nfunction defaultParser(value: string): FrDatePickerValue | undefined {\n const trimmed = value.trim();\n\n if (!trimmed) {\n return null;\n }\n\n const isoDate = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(trimmed);\n\n if (isoDate) {\n return new Date(Number(isoDate[1]), Number(isoDate[2]) - 1, Number(isoDate[3]));\n }\n\n const parsed = new Date(trimmed);\n return Number.isNaN(parsed.getTime()) ? undefined : parsed;\n}\n\nfunction isRange(value: unknown): value is FrCalendarDateRange {\n return !!value && typeof value === 'object' && ('from' in value || 'to' in value);\n}\n\nfunction hasValue(value: FrDatePickerValue, mode: FrCalendarMode): boolean {\n if (mode === 'range' && isRange(value)) {\n return !!value.from || !!value.to;\n }\n\n return value instanceof Date;\n}\n\nfunction isCompleteValue(value: FrDatePickerValue, mode: FrCalendarMode): boolean {\n if (mode === 'range' && isRange(value)) {\n return !!value.from && !!value.to;\n }\n\n return value instanceof Date;\n}\n\nfunction cloneDateWithTime(date: Date): Date {\n return new Date(date.getTime());\n}\n\nfunction mergeTime(date: Date, timeSource: Date): Date {\n const next = new Date(date);\n next.setHours(timeSource.getHours(), timeSource.getMinutes(), timeSource.getSeconds(), timeSource.getMilliseconds());\n return next;\n}\n\r\n","import { NgModule } from '@angular/core';\nimport {\n FrDatePicker,\n} from './src/date-picker';\n\n@NgModule({\n imports: [\n FrDatePicker,\n ],\n exports: [\n FrDatePicker,\n ],\n})\nexport class FrDatePickerModule {}\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-date-picker.mjs","sources":["../../../projects/components/date-picker/src/date-picker.ts","../../../projects/components/date-picker/date-picker.module.ts","../../../projects/components/date-picker/frame-ui-ng-components-date-picker.ts"],"sourcesContent":["import {\r\n CdkConnectedOverlay,\r\n CdkOverlayOrigin,\r\n ConnectedOverlayPositionChange,\r\n ConnectedPosition,\r\n} from '@angular/cdk/overlay';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n TemplateRef,\r\n booleanAttribute,\r\n computed,\r\n input,\r\n output,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\n\r\nimport {\r\n FrCalendar,\r\n FrCalendarCaptionLayout,\r\n FrCalendarCellContext,\r\n FrCalendarDateRange,\r\n FrCalendarDisabledMatcher,\r\n FrCalendarMode,\r\n} from '@frame-ui-ng/components/calendar';\r\nimport { FrControlValueAccessor, provideDsValueAccessor } from '@frame-ui-ng/components/forms';\r\n\r\nexport type FrDatePickerValue = Date | FrCalendarDateRange | null;\r\n\r\nexport type FrDatePickerPreset = {\r\n label: string;\r\n value: FrDatePickerValue | (() => FrDatePickerValue);\r\n};\r\n\r\nexport type FrDatePickerFormatter = (value: FrDatePickerValue, locale: string) => string;\r\nexport type FrDatePickerParser = (value: string, locale: string) => FrDatePickerValue | undefined;\r\n\r\nconst POSITIONS: ConnectedPosition[] = [\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetY: 8,\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n offsetY: -8,\r\n },\r\n];\r\n\r\n@Component({\r\n selector: 'frame-date-picker',\r\n exportAs: 'frDatePicker',\r\n imports: [CdkConnectedOverlay, CdkOverlayOrigin, FrCalendar, NgTemplateOutlet],\r\n providers: [provideDsValueAccessor(FrDatePicker)],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'frame-date-picker',\r\n '[attr.data-open]': 'isOpen() ? \"\" : null',\r\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\r\n '[attr.data-invalid]': 'invalid() ? \"\" : null',\r\n '[attr.data-mode]': 'mode()',\r\n '[attr.dir]': 'dir()',\r\n },\r\n template: `\r\n <span cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" class=\"frame-date-picker__anchor\">\r\n @if (editable()) {\r\n <span class=\"frame-date-picker__input-wrap\">\r\n <span class=\"frame-date-picker__icon\" aria-hidden=\"true\">{{ icon() }}</span>\r\n <input\r\n class=\"frame-date-picker__input\"\r\n type=\"text\"\r\n [disabled]=\"disabled()\"\r\n [readOnly]=\"readonlyInput()\"\r\n [placeholder]=\"placeholder()\"\r\n [value]=\"inputValue()\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\r\n aria-haspopup=\"dialog\"\r\n (focus)=\"open()\"\r\n (click)=\"open()\"\r\n (input)=\"handleInput($any($event.target).value)\"\r\n (change)=\"commitInput($any($event.target).value)\"\r\n (keydown)=\"handleTriggerKeydown($event)\"\r\n (blur)=\"markAsTouched()\"\r\n />\r\n </span>\r\n } @else {\r\n <button\r\n class=\"frame-date-picker__trigger\"\r\n type=\"button\"\r\n [disabled]=\"disabled()\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\r\n aria-haspopup=\"dialog\"\r\n (click)=\"toggle()\"\r\n (keydown)=\"handleTriggerKeydown($event)\"\r\n >\r\n <span class=\"frame-date-picker__icon\" aria-hidden=\"true\">{{ icon() }}</span>\r\n <span class=\"frame-date-picker__trigger-label\" [attr.data-placeholder]=\"hasValue() ? null : ''\">\r\n {{ displayValue() || placeholder() }}\r\n </span>\r\n </button>\r\n }\r\n </span>\r\n\r\n <ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOrigin]=\"origin\"\r\n [cdkConnectedOverlayOpen]=\"isOpen()\"\r\n [cdkConnectedOverlayPositions]=\"positions\"\r\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClasses()\"\r\n [cdkConnectedOverlayPush]=\"true\"\r\n [cdkConnectedOverlayViewportMargin]=\"12\"\r\n (overlayOutsideClick)=\"close()\"\r\n (attach)=\"focusCalendar()\"\r\n (detach)=\"close()\"\r\n (positionChange)=\"handlePositionChange($event)\"\r\n >\r\n <div class=\"frame-date-picker__content\" role=\"dialog\" [attr.aria-label]=\"dialogLabel()\">\r\n @if (presets().length) {\r\n <div class=\"frame-date-picker__presets\" aria-label=\"Date presets\">\r\n @for (preset of presets(); track preset.label) {\r\n <button class=\"frame-date-picker__preset\" type=\"button\" (click)=\"selectPreset(preset)\">\r\n {{ preset.label }}\r\n </button>\r\n }\r\n </div>\r\n }\r\n\r\n <ng-container [ngTemplateOutlet]=\"headerTemplate() ?? null\" />\r\n\r\n <frame-calendar\r\n [mode]=\"mode()\"\r\n [captionLayout]=\"captionLayout()\"\r\n [numberOfMonths]=\"numberOfMonths()\"\r\n [firstDayOfWeek]=\"firstDayOfWeek()\"\r\n [locale]=\"locale()\"\r\n [timeZone]=\"timeZone()\"\r\n [dir]=\"dir()\"\r\n [fromYear]=\"fromYear()\"\r\n [toYear]=\"toYear()\"\r\n [showOutsideDays]=\"showOutsideDays()\"\r\n [showWeekNumber]=\"showWeekNumber()\"\r\n [disabled]=\"disabled()\"\r\n [disabledDates]=\"disabledDates()\"\r\n [dateLabels]=\"dateLabels()\"\r\n [disabledMatcher]=\"disabledMatcher()\"\r\n [cellTemplate]=\"cellTemplate()\"\r\n [previousMonthTemplate]=\"previousMonthTemplate()\"\r\n [nextMonthTemplate]=\"nextMonthTemplate()\"\r\n [previousMonthIcon]=\"previousMonthIcon()\"\r\n [nextMonthIcon]=\"nextMonthIcon()\"\r\n [previousMonthLabel]=\"previousMonthLabel()\"\r\n [nextMonthLabel]=\"nextMonthLabel()\"\r\n [month]=\"month()\"\r\n [selected]=\"calendarValue()\"\r\n (selectedChange)=\"selectCalendarValue($any($event))\"\r\n (monthChange)=\"monthChange.emit($event)\"\r\n />\r\n\r\n @if (showTime() && mode() === 'single') {\r\n <label class=\"frame-date-picker__time\">\r\n <span class=\"frame-date-picker__time-label\">{{ timeLabel() }}</span>\r\n <input\r\n class=\"frame-date-picker__time-input\"\r\n type=\"time\"\r\n [disabled]=\"disabled() || !singleDate()\"\r\n [value]=\"timeValue()\"\r\n (change)=\"setTime($any($event.target).value)\"\r\n />\r\n </label>\r\n }\r\n\r\n <ng-container [ngTemplateOutlet]=\"footerTemplate() ?? null\" />\r\n </div>\r\n </ng-template>\r\n `,\r\n})\r\nexport class FrDatePicker extends FrControlValueAccessor<FrDatePickerValue> {\r\n readonly mode = input<FrCalendarMode>('single');\r\n readonly captionLayout = input<FrCalendarCaptionLayout>('label');\r\n readonly numberOfMonths = input(1);\r\n readonly firstDayOfWeek = input(0);\r\n readonly locale = input('en-US');\r\n readonly timeZone = input<string | undefined>(undefined);\r\n readonly dir = input<'ltr' | 'rtl'>('ltr');\r\n readonly fromYear = input(new Date().getFullYear() - 100);\r\n readonly toYear = input(new Date().getFullYear() + 20);\r\n readonly showOutsideDays = input(true, { transform: booleanAttribute });\r\n readonly showWeekNumber = input(false, { transform: booleanAttribute });\r\n readonly disabledInput = input(false, { alias: 'disabled', transform: booleanAttribute });\r\n readonly invalidInput = input(false, { alias: 'invalid', transform: booleanAttribute });\r\n readonly editable = input(false, { transform: booleanAttribute });\r\n readonly readonlyInput = input(false, { transform: booleanAttribute });\r\n readonly closeOnSelect = input(true, { transform: booleanAttribute });\r\n readonly debugVisible = input(false, { transform: booleanAttribute });\r\n readonly showTime = input(false, { transform: booleanAttribute });\r\n readonly placeholder = input('Pick a date');\r\n readonly dialogLabel = input('Choose date');\r\n readonly icon = input('◷');\r\n readonly disabledDates = input<Date[]>([]);\r\n readonly dateLabels = input<Record<string, string>>({});\r\n readonly disabledMatcher = input<FrCalendarDisabledMatcher | null>(null);\r\n readonly cellTemplate = input<TemplateRef<FrCalendarCellContext> | null>(null);\r\n readonly previousMonthTemplate = input<TemplateRef<unknown> | null>(null);\r\n readonly nextMonthTemplate = input<TemplateRef<unknown> | null>(null);\r\n readonly previousMonthIcon = input('‹');\r\n readonly nextMonthIcon = input('›');\r\n readonly previousMonthLabel = input('Previous month');\r\n readonly nextMonthLabel = input('Next month');\r\n readonly headerTemplate = input<TemplateRef<unknown> | null>(null);\r\n readonly footerTemplate = input<TemplateRef<unknown> | null>(null);\r\n readonly month = input<Date | null | undefined>(undefined);\r\n readonly presets = input<FrDatePickerPreset[]>([]);\r\n readonly formatter = input<FrDatePickerFormatter>(defaultFormatter);\r\n readonly parser = input<FrDatePickerParser>(defaultParser);\r\n readonly timeLabel = input('Time');\r\n\r\n readonly valueChange = output<FrDatePickerValue>();\r\n readonly openChange = output<boolean>();\r\n readonly monthChange = output<Date>();\r\n\r\n readonly calendar = viewChild(FrCalendar);\r\n readonly positions = POSITIONS;\r\n readonly isOpen = signal(false);\r\n readonly overlaySide = signal<'bottom' | 'top'>('bottom');\r\n readonly value = signal<FrDatePickerValue>(null);\r\n readonly inputDraft = signal<string | null>(null);\r\n\r\n readonly disabled = computed(() => this.disabledInput() || this.formDisabled());\r\n readonly invalid = computed(() => this.invalidInput() || this.formInvalid());\r\n readonly hasValue = computed(() => hasValue(this.value(), this.mode()));\r\n readonly displayValue = computed(() => this.formatter()(this.value(), this.locale()));\r\n readonly inputValue = computed(() => this.inputDraft() ?? this.displayValue());\r\n readonly calendarValue = computed(() => normalizeValue(this.value(), this.mode()));\r\n readonly singleDate = computed(() => {\r\n const value = this.value();\r\n return value instanceof Date ? value : null;\r\n });\r\n readonly timeValue = computed(() => {\r\n const date = this.singleDate();\r\n return date ? `${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}` : '';\r\n });\r\n\r\n constructor() {\r\n super();\r\n queueMicrotask(() => {\r\n if (this.debugVisible()) {\r\n this.open();\r\n }\r\n });\r\n }\r\n\r\n toggle(): void {\r\n this.isOpen() ? this.close() : this.open();\r\n }\r\n\r\n open(): void {\r\n if (this.disabled()) {\r\n return;\r\n }\r\n\r\n this.isOpen.set(true);\r\n this.openChange.emit(true);\r\n }\r\n\r\n close(): void {\r\n if (this.debugVisible()) {\r\n return;\r\n }\r\n\r\n this.isOpen.set(false);\r\n this.openChange.emit(false);\r\n this.inputDraft.set(null);\r\n this.markAsTouched();\r\n }\r\n\r\n clear(): void {\r\n this.commitValue(this.mode() === 'range' ? { from: null, to: null } : null);\r\n }\r\n\r\n selectPreset(preset: FrDatePickerPreset): void {\r\n const next = typeof preset.value === 'function' ? preset.value() : preset.value;\r\n this.commitValue(normalizeValue(next, this.mode()));\r\n\r\n if (this.closeOnSelect() && isCompleteValue(this.value(), this.mode())) {\r\n this.close();\r\n }\r\n }\r\n\r\n selectCalendarValue(value: FrDatePickerValue): void {\r\n const previous = this.singleDate();\r\n const next = this.showTime() && value instanceof Date && previous ? mergeTime(value, previous) : value;\r\n\r\n this.commitValue(normalizeValue(next, this.mode()));\r\n\r\n if (this.closeOnSelect() && isCompleteValue(this.value(), this.mode())) {\r\n this.close();\r\n }\r\n }\r\n\r\n setTime(value: string): void {\r\n const date = this.singleDate();\r\n\r\n if (!date || !value) {\r\n return;\r\n }\r\n\r\n const [hours, minutes] = value.split(':').map(Number);\r\n const next = new Date(date);\r\n next.setHours(hours || 0, minutes || 0, 0, 0);\r\n this.commitValue(next);\r\n }\r\n\r\n handleInput(value: string): void {\r\n this.inputDraft.set(value);\r\n\r\n if (!value.trim()) {\r\n this.commitValue(this.mode() === 'range' ? { from: null, to: null } : null);\r\n }\r\n }\r\n\r\n commitInput(value: string): void {\r\n const parsed = this.parser()(value, this.locale());\r\n\r\n if (parsed !== undefined) {\r\n this.commitValue(normalizeValue(parsed, this.mode()));\r\n }\r\n\r\n this.inputDraft.set(null);\r\n }\r\n\r\n handleTriggerKeydown(event: KeyboardEvent): void {\r\n if (event.key === 'ArrowDown' || event.key === 'Enter' || event.key === ' ') {\r\n event.preventDefault();\r\n this.open();\r\n }\r\n\r\n if (event.key === 'Escape') {\r\n event.preventDefault();\r\n this.close();\r\n }\r\n }\r\n\r\n handlePositionChange(event: ConnectedOverlayPositionChange): void {\r\n this.overlaySide.set(event.connectionPair.overlayY === 'bottom' ? 'top' : 'bottom');\r\n }\r\n\r\n focusCalendar(): void {\r\n this.calendar()?.focusActiveDate();\r\n }\r\n\r\n overlayPanelClasses(): string[] {\r\n return ['frame-date-picker-overlay', `frame-date-picker-overlay--${this.overlaySide()}`];\r\n }\r\n\r\n protected setViewValue(value: FrDatePickerValue): void {\r\n this.value.set(normalizeValue(value, this.mode()));\r\n this.inputDraft.set(null);\r\n }\r\n\r\n private commitValue(value: FrDatePickerValue): void {\r\n this.value.set(value);\r\n this.inputDraft.set(null);\r\n this.notifyValueChange(value);\r\n this.valueChange.emit(value);\r\n this.markAsTouched();\r\n }\r\n}\r\n\r\nfunction normalizeValue(value: FrDatePickerValue | undefined, mode: FrCalendarMode): FrDatePickerValue {\r\n if (!value) {\r\n return mode === 'range' ? { from: null, to: null } : null;\r\n }\r\n\r\n if (mode === 'range') {\r\n if (isRange(value)) {\r\n return {\r\n from: value.from ? cloneDateWithTime(value.from) : null,\r\n to: value.to ? cloneDateWithTime(value.to) : null,\r\n };\r\n }\r\n\r\n return { from: cloneDateWithTime(value), to: null };\r\n }\r\n\r\n return value instanceof Date ? cloneDateWithTime(value) : value.from ? cloneDateWithTime(value.from) : null;\r\n}\r\n\r\nfunction defaultFormatter(value: FrDatePickerValue, locale: string): string {\r\n if (!value) {\r\n return '';\r\n }\r\n\r\n const formatter = new Intl.DateTimeFormat(locale, { dateStyle: 'medium' });\r\n\r\n if (value instanceof Date) {\r\n return formatter.format(value);\r\n }\r\n\r\n if (value.from && value.to) {\r\n return `${formatter.format(value.from)} - ${formatter.format(value.to)}`;\r\n }\r\n\r\n return value.from ? formatter.format(value.from) : '';\r\n}\r\n\r\nfunction defaultParser(value: string): FrDatePickerValue | undefined {\r\n const trimmed = value.trim();\r\n\r\n if (!trimmed) {\r\n return null;\r\n }\r\n\r\n const isoDate = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(trimmed);\r\n\r\n if (isoDate) {\r\n return new Date(Number(isoDate[1]), Number(isoDate[2]) - 1, Number(isoDate[3]));\r\n }\r\n\r\n const parsed = new Date(trimmed);\r\n return Number.isNaN(parsed.getTime()) ? undefined : parsed;\r\n}\r\n\r\nfunction isRange(value: unknown): value is FrCalendarDateRange {\r\n return !!value && typeof value === 'object' && ('from' in value || 'to' in value);\r\n}\r\n\r\nfunction hasValue(value: FrDatePickerValue, mode: FrCalendarMode): boolean {\r\n if (mode === 'range' && isRange(value)) {\r\n return !!value.from || !!value.to;\r\n }\r\n\r\n return value instanceof Date;\r\n}\r\n\r\nfunction isCompleteValue(value: FrDatePickerValue, mode: FrCalendarMode): boolean {\r\n if (mode === 'range' && isRange(value)) {\r\n return !!value.from && !!value.to;\r\n }\r\n\r\n return value instanceof Date;\r\n}\r\n\r\nfunction cloneDateWithTime(date: Date): Date {\r\n return new Date(date.getTime());\r\n}\r\n\r\nfunction mergeTime(date: Date, timeSource: Date): Date {\r\n const next = new Date(date);\r\n next.setHours(timeSource.getHours(), timeSource.getMinutes(), timeSource.getSeconds(), timeSource.getMilliseconds());\r\n return next;\r\n}\r\n\r\n","import { NgModule } from '@angular/core';\nimport {\n FrDatePicker,\n} from './src/date-picker';\n\n@NgModule({\n imports: [\n FrDatePicker,\n ],\n exports: [\n FrDatePicker,\n ],\n})\nexport class FrDatePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -4,27 +4,41 @@ import * as i0 from '@angular/core';
|
|
|
4
4
|
import { InjectionToken, Injectable, input, Directive, inject, signal, effect, TemplateRef, booleanAttribute, DestroyRef, ElementRef, NgModule } from '@angular/core';
|
|
5
5
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
6
6
|
|
|
7
|
+
const DEFAULT_SIDE_OFFSET = 4;
|
|
8
|
+
const MIN_SUBMENU_SIDE_OFFSET = 8;
|
|
7
9
|
function defaultPositions(isSubmenu) {
|
|
8
10
|
return buildConnectedPositions({
|
|
9
11
|
align: 'start',
|
|
10
12
|
alignOffset: 0,
|
|
11
13
|
isSubmenu,
|
|
12
|
-
side:
|
|
13
|
-
sideOffset:
|
|
14
|
+
side: 'auto',
|
|
15
|
+
sideOffset: DEFAULT_SIDE_OFFSET,
|
|
14
16
|
});
|
|
15
17
|
}
|
|
16
18
|
function buildConnectedPositions(options) {
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
+
const side = normalizeSide(options.side, options.isSubmenu);
|
|
20
|
+
if (side === 'auto') {
|
|
21
|
+
return autoSides(options.isSubmenu).flatMap((side) => primaryPlacement({
|
|
22
|
+
...options,
|
|
23
|
+
side,
|
|
24
|
+
}));
|
|
25
|
+
}
|
|
26
|
+
return primaryPlacement({
|
|
27
|
+
...options,
|
|
28
|
+
side,
|
|
29
|
+
});
|
|
19
30
|
}
|
|
20
31
|
function primaryPlacement(options) {
|
|
21
|
-
if (options.
|
|
22
|
-
const isRight = options.side
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
32
|
+
if (options.side === 'left' || options.side === 'right') {
|
|
33
|
+
const isRight = options.side === 'right';
|
|
34
|
+
const sideOffset = options.isSubmenu
|
|
35
|
+
? Math.max(options.sideOffset, MIN_SUBMENU_SIDE_OFFSET)
|
|
36
|
+
: options.sideOffset;
|
|
37
|
+
const horizontalOffset = isRight ? sideOffset : -sideOffset;
|
|
38
|
+
const originY = horizontalOriginY(options.align);
|
|
39
|
+
const overlayY = horizontalOverlayY(options.align);
|
|
40
|
+
return [
|
|
41
|
+
{
|
|
28
42
|
originX: isRight ? 'end' : 'start',
|
|
29
43
|
originY,
|
|
30
44
|
overlayX: isRight ? 'start' : 'end',
|
|
@@ -32,7 +46,7 @@ function primaryPlacement(options) {
|
|
|
32
46
|
offsetX: horizontalOffset,
|
|
33
47
|
offsetY: options.alignOffset,
|
|
34
48
|
},
|
|
35
|
-
|
|
49
|
+
{
|
|
36
50
|
originX: isRight ? 'start' : 'end',
|
|
37
51
|
originY,
|
|
38
52
|
overlayX: isRight ? 'end' : 'start',
|
|
@@ -40,14 +54,14 @@ function primaryPlacement(options) {
|
|
|
40
54
|
offsetX: -horizontalOffset,
|
|
41
55
|
offsetY: options.alignOffset,
|
|
42
56
|
},
|
|
43
|
-
|
|
57
|
+
];
|
|
44
58
|
}
|
|
45
|
-
const isBottom = options.side
|
|
59
|
+
const isBottom = options.side === 'bottom';
|
|
46
60
|
const verticalOffset = isBottom ? options.sideOffset : -options.sideOffset;
|
|
47
61
|
const originX = rootOriginX(options.align);
|
|
48
62
|
const overlayX = rootOverlayX(options.align);
|
|
49
|
-
return
|
|
50
|
-
|
|
63
|
+
return [
|
|
64
|
+
{
|
|
51
65
|
originX,
|
|
52
66
|
originY: isBottom ? 'bottom' : 'top',
|
|
53
67
|
overlayX,
|
|
@@ -55,7 +69,7 @@ function primaryPlacement(options) {
|
|
|
55
69
|
offsetX: options.alignOffset,
|
|
56
70
|
offsetY: verticalOffset,
|
|
57
71
|
},
|
|
58
|
-
|
|
72
|
+
{
|
|
59
73
|
originX,
|
|
60
74
|
originY: isBottom ? 'top' : 'bottom',
|
|
61
75
|
overlayX,
|
|
@@ -63,7 +77,16 @@ function primaryPlacement(options) {
|
|
|
63
77
|
offsetX: options.alignOffset,
|
|
64
78
|
offsetY: -verticalOffset,
|
|
65
79
|
},
|
|
66
|
-
|
|
80
|
+
];
|
|
81
|
+
}
|
|
82
|
+
function normalizeSide(side, isSubmenu) {
|
|
83
|
+
if (!isSubmenu || side === 'left' || side === 'right') {
|
|
84
|
+
return side;
|
|
85
|
+
}
|
|
86
|
+
return 'auto';
|
|
87
|
+
}
|
|
88
|
+
function autoSides(isSubmenu) {
|
|
89
|
+
return isSubmenu ? ['right', 'left'] : ['bottom', 'top', 'right', 'left'];
|
|
67
90
|
}
|
|
68
91
|
function rootOriginX(align) {
|
|
69
92
|
if (align === 'center') {
|
|
@@ -77,13 +100,13 @@ function rootOverlayX(align) {
|
|
|
77
100
|
}
|
|
78
101
|
return align;
|
|
79
102
|
}
|
|
80
|
-
function
|
|
103
|
+
function horizontalOriginY(align) {
|
|
81
104
|
if (align === 'center') {
|
|
82
105
|
return 'center';
|
|
83
106
|
}
|
|
84
107
|
return align === 'end' ? 'bottom' : 'top';
|
|
85
108
|
}
|
|
86
|
-
function
|
|
109
|
+
function horizontalOverlayY(align) {
|
|
87
110
|
if (align === 'center') {
|
|
88
111
|
return 'center';
|
|
89
112
|
}
|
|
@@ -205,7 +228,7 @@ class FrDropdownMenuContent {
|
|
|
205
228
|
align = input('start', ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
|
|
206
229
|
alignOffset = input(0, ...(ngDevMode ? [{ debugName: "alignOffset" }] : /* istanbul ignore next */ []));
|
|
207
230
|
debugVisible = input(false, { ...(ngDevMode ? { debugName: "debugVisible" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
208
|
-
side = input('
|
|
231
|
+
side = input('auto', ...(ngDevMode ? [{ debugName: "side" }] : /* istanbul ignore next */ []));
|
|
209
232
|
sideOffset = input(4, ...(ngDevMode ? [{ debugName: "sideOffset" }] : /* istanbul ignore next */ []));
|
|
210
233
|
isDebugVisible() {
|
|
211
234
|
return this.debugVisible();
|
|
@@ -566,7 +589,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
566
589
|
}], propDecorators: { menuContent: [{ type: i0.Input, args: [{ isSignal: true, alias: "frDropdownMenuSubTrigger", required: false }] }], inset: [{ type: i0.Input, args: [{ isSignal: true, alias: "inset", required: false }] }], triggerModeInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggerMode", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
|
|
567
590
|
|
|
568
591
|
const FR_DROPDOWN_MENU_ALIGNMENTS = ['center', 'end', 'start'];
|
|
569
|
-
const FR_DROPDOWN_MENU_SIDES = ['bottom', 'left', 'right', 'top'];
|
|
592
|
+
const FR_DROPDOWN_MENU_SIDES = ['auto', 'bottom', 'left', 'right', 'top'];
|
|
570
593
|
const FR_DROPDOWN_MENU_TRIGGER_MODES = ['both', 'click', 'hover'];
|
|
571
594
|
const FR_DROPDOWN_MENU_ITEM_VARIANTS = ['default', 'destructive'];
|
|
572
595
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frame-ui-ng-components-dropdown-menu.mjs","sources":["../../../projects/components/dropdown-menu/src/dropdown-menu.position.ts","../../../projects/components/dropdown-menu/src/dropdown-menu.root.ts","../../../projects/components/dropdown-menu/src/dropdown-menu.content.ts","../../../projects/components/dropdown-menu/src/dropdown-menu.items.ts","../../../projects/components/dropdown-menu/src/dropdown-menu.trigger.ts","../../../projects/components/dropdown-menu/src/dropdown-menu.types.ts","../../../projects/components/dropdown-menu/dropdown-menu.module.ts","../../../projects/components/dropdown-menu/frame-ui-ng-components-dropdown-menu.ts"],"sourcesContent":["import { ConnectedPosition } from '@angular/cdk/overlay';\n\nimport { FrDropdownMenuAlignment, FrDropdownMenuSide } from './dropdown-menu.types';\n\nexport function defaultPositions(isSubmenu: boolean): ConnectedPosition[] {\n return buildConnectedPositions({\n align: 'start',\n alignOffset: 0,\n isSubmenu,\n side: isSubmenu ? 'right' : 'bottom',\n sideOffset: 4,\n });\n}\n\nexport function buildConnectedPositions(options: {\n align: FrDropdownMenuAlignment;\n alignOffset: number;\n isSubmenu: boolean;\n side: FrDropdownMenuSide;\n sideOffset: number;\n}): ConnectedPosition[] {\n const placements = primaryPlacement(options);\n\n return [placements.primary, placements.fallback];\n}\n\nfunction primaryPlacement(options: {\n align: FrDropdownMenuAlignment;\n alignOffset: number;\n isSubmenu: boolean;\n side: FrDropdownMenuSide;\n sideOffset: number;\n}): {\n fallback: ConnectedPosition;\n primary: ConnectedPosition;\n} {\n if (options.isSubmenu) {\n const isRight = options.side !== 'left';\n const horizontalOffset = isRight ? options.sideOffset : -options.sideOffset;\n const originY = submenuOriginY(options.align);\n const overlayY = submenuOverlayY(options.align);\n\n return {\n primary: {\n originX: isRight ? 'end' : 'start',\n originY,\n overlayX: isRight ? 'start' : 'end',\n overlayY,\n offsetX: horizontalOffset,\n offsetY: options.alignOffset,\n },\n fallback: {\n originX: isRight ? 'start' : 'end',\n originY,\n overlayX: isRight ? 'end' : 'start',\n overlayY,\n offsetX: -horizontalOffset,\n offsetY: options.alignOffset,\n },\n };\n }\n\n const isBottom = options.side !== 'top';\n const verticalOffset = isBottom ? options.sideOffset : -options.sideOffset;\n const originX = rootOriginX(options.align);\n const overlayX = rootOverlayX(options.align);\n\n return {\n primary: {\n originX,\n originY: isBottom ? 'bottom' : 'top',\n overlayX,\n overlayY: isBottom ? 'top' : 'bottom',\n offsetX: options.alignOffset,\n offsetY: verticalOffset,\n },\n fallback: {\n originX,\n originY: isBottom ? 'top' : 'bottom',\n overlayX,\n overlayY: isBottom ? 'bottom' : 'top',\n offsetX: options.alignOffset,\n offsetY: -verticalOffset,\n },\n };\n}\n\nfunction rootOriginX(align: FrDropdownMenuAlignment): 'center' | 'end' | 'start' {\n if (align === 'center') {\n return 'center';\n }\n\n return align;\n}\n\nfunction rootOverlayX(align: FrDropdownMenuAlignment): 'center' | 'end' | 'start' {\n if (align === 'center') {\n return 'center';\n }\n\n return align;\n}\n\nfunction submenuOriginY(align: FrDropdownMenuAlignment): 'bottom' | 'center' | 'top' {\n if (align === 'center') {\n return 'center';\n }\n\n return align === 'end' ? 'bottom' : 'top';\n}\n\nfunction submenuOverlayY(align: FrDropdownMenuAlignment): 'bottom' | 'center' | 'top' {\n if (align === 'center') {\n return 'center';\n }\n\n return align === 'end' ? 'bottom' : 'top';\n}\n","import { Directive, Injectable, InjectionToken, effect, inject, input, signal } from '@angular/core';\n\nimport { FrDropdownMenuTriggerMode } from './dropdown-menu.types';\n\nexport interface FrDropdownMenuParent {\n readonly closeDelay: () => number;\n readonly triggerMode: () => FrDropdownMenuTriggerMode;\n}\n\nexport const FR_DROPDOWN_MENU_PARENT = new InjectionToken<FrDropdownMenuParent>(\n 'FrDropdownMenuParent',\n);\n\n@Injectable()\nexport class FrDropdownMenuTree {\n private readonly triggers = new Set<{ close(): void }>();\n private closeTimeoutId: ReturnType<typeof setTimeout> | null = null;\n private pointerInsideCount = 0;\n\n register(trigger: { close(): void }): void {\n this.triggers.add(trigger);\n }\n\n unregister(trigger: { close(): void }): void {\n this.triggers.delete(trigger);\n }\n\n cancelClose(): void {\n if (this.closeTimeoutId !== null) {\n clearTimeout(this.closeTimeoutId);\n this.closeTimeoutId = null;\n }\n }\n\n enterInteractiveArea(): void {\n this.pointerInsideCount += 1;\n this.cancelClose();\n }\n\n leaveInteractiveArea(delay: number): void {\n this.pointerInsideCount = Math.max(0, this.pointerInsideCount - 1);\n\n if (this.pointerInsideCount === 0) {\n this.scheduleClose(delay);\n }\n }\n\n scheduleClose(delay: number): void {\n this.cancelClose();\n this.closeTimeoutId = setTimeout(() => {\n this.closeAll();\n }, delay);\n }\n\n closeAll(): void {\n this.cancelClose();\n\n for (const trigger of this.triggers) {\n trigger.close();\n }\n }\n}\n\n@Directive({\n selector: '[frDropdownMenu]',\n providers: [\n FrDropdownMenuTree,\n {\n provide: FR_DROPDOWN_MENU_PARENT,\n useExisting: FrDropdownMenu,\n },\n ],\n host: {\n class: 'frame-dropdown-menu-root',\n },\n})\nexport class FrDropdownMenu implements FrDropdownMenuParent {\n readonly closeDelay = input(140);\n readonly triggerMode = input<FrDropdownMenuTriggerMode>('click');\n}\n\n@Directive({\n selector: '[frDropdownMenuSub]',\n providers: [\n {\n provide: FR_DROPDOWN_MENU_PARENT,\n useExisting: FrDropdownMenuSub,\n },\n ],\n host: {\n class: 'frame-dropdown-menu-sub',\n },\n})\nexport class FrDropdownMenuSub implements FrDropdownMenuParent {\n private readonly parent = inject(FR_DROPDOWN_MENU_PARENT, { skipSelf: true });\n\n readonly closeDelayInput = input<number | null>(null, { alias: 'closeDelay' });\n readonly triggerModeInput = input<FrDropdownMenuTriggerMode | null>(null, {\n alias: 'triggerMode',\n });\n\n readonly closeDelay = signal(this.parent.closeDelay());\n readonly triggerMode = signal(this.parent.triggerMode());\n\n constructor() {\n effect(() => {\n this.closeDelay.set(this.closeDelayInput() ?? this.parent.closeDelay());\n this.triggerMode.set(this.triggerModeInput() ?? this.parent.triggerMode());\n });\n }\n}\n","import { CdkMenu, CdkTargetMenuAim } from '@angular/cdk/menu';\nimport { ConnectedPosition } from '@angular/cdk/overlay';\nimport {\n Directive,\n InjectionToken,\n TemplateRef,\n booleanAttribute,\n inject,\n input,\n} from '@angular/core';\n\nimport { buildConnectedPositions } from './dropdown-menu.position';\nimport { FR_DROPDOWN_MENU_PARENT, FrDropdownMenuTree } from './dropdown-menu.root';\nimport { FrDropdownMenuAlignment, FrDropdownMenuSide } from './dropdown-menu.types';\n\nexport const FR_DROPDOWN_MENU_CONTENT = new InjectionToken<FrDropdownMenuContent>(\n 'FrDropdownMenuContent',\n);\n\n@Directive({\n selector: 'ng-template[frDropdownMenuContent], ng-template[frDropdownMenuSubContent]',\n exportAs: 'frDropdownMenuContent',\n providers: [\n {\n provide: FR_DROPDOWN_MENU_CONTENT,\n useExisting: FrDropdownMenuContent,\n },\n ],\n})\nexport class FrDropdownMenuContent {\n readonly templateRef = inject(TemplateRef<unknown>);\n\n readonly align = input<FrDropdownMenuAlignment>('start');\n readonly alignOffset = input(0);\n readonly debugVisible = input(false, { transform: booleanAttribute });\n readonly side = input<FrDropdownMenuSide>('bottom');\n readonly sideOffset = input(4);\n\n isDebugVisible(): boolean {\n return this.debugVisible();\n }\n\n getPositions(isSubmenu: boolean): ConnectedPosition[] {\n return buildConnectedPositions({\n align: this.align(),\n alignOffset: this.alignOffset(),\n isSubmenu,\n side: this.side(),\n sideOffset: this.sideOffset(),\n });\n }\n}\n\n@Directive({\n selector: '[frDropdownMenuPanel]',\n hostDirectives: [CdkMenu, CdkTargetMenuAim],\n host: {\n class: 'frame-dropdown-menu__content',\n '[attr.data-side]': 'side()',\n tabindex: '-1',\n '(mouseenter)': 'handleMouseEnter()',\n '(mouseleave)': 'handleMouseLeave()'\n },\n})\nexport class FrDropdownMenuPanel {\n protected readonly side = inject(FR_DROPDOWN_MENU_CONTENT).side;\n private readonly tree = inject(FrDropdownMenuTree);\n private readonly parent = inject(FR_DROPDOWN_MENU_PARENT);\n\n protected handleMouseEnter(): void {\n this.tree.enterInteractiveArea();\n }\n\n protected handleMouseLeave(): void {\n this.tree.leaveInteractiveArea(this.parent.closeDelay());\n }\n}\n","import { CdkMenuGroup, CdkMenuItem, CdkMenuItemCheckbox, CdkMenuItemRadio } from '@angular/cdk/menu';\nimport { Directive, booleanAttribute, effect, inject, input } from '@angular/core';\n\nimport { FrDropdownMenuItemVariant } from './dropdown-menu.types';\n\n@Directive({\n selector: '[frDropdownMenuItem]',\n hostDirectives: [CdkMenuItem],\n host: {\n class: 'frame-dropdown-menu__item',\n '[attr.data-inset]': 'inset() ? \"\" : null',\n '[attr.data-variant]': 'variant()',\n },\n})\nexport class FrDropdownMenuItem {\n readonly inset = input(false, { transform: booleanAttribute });\n readonly variant = input<FrDropdownMenuItemVariant>('default');\n}\n\n@Directive({\n selector: 'button[frDropdownMenuCheckboxItem]',\n hostDirectives: [CdkMenuItemCheckbox],\n host: {\n class: 'frame-dropdown-menu__item frame-dropdown-menu__checkbox-item',\n '[attr.data-checked]': 'checkboxItem.checked ? \"\" : null',\n '[attr.data-inset]': 'inset() ? \"\" : null',\n '[attr.data-variant]': 'variant()',\n },\n})\nexport class FrDropdownMenuCheckboxItem {\n protected readonly checkboxItem = inject(CdkMenuItemCheckbox);\n\n readonly checked = input(false, {\n alias: 'checked',\n transform: booleanAttribute,\n });\n readonly inset = input(false, { transform: booleanAttribute });\n readonly variant = input<FrDropdownMenuItemVariant>('default');\n\n constructor() {\n effect(() => {\n this.checkboxItem.checked = this.checked();\n });\n }\n}\n\n@Directive({\n selector: '[frDropdownMenuRadioGroup]',\n hostDirectives: [CdkMenuGroup],\n host: {\n class: 'frame-dropdown-menu__radio-group',\n },\n})\nexport class FrDropdownMenuRadioGroup {}\n\n@Directive({\n selector: 'button[frDropdownMenuRadioItem]',\n hostDirectives: [CdkMenuItemRadio],\n host: {\n class: 'frame-dropdown-menu__item frame-dropdown-menu__radio-item',\n '[attr.data-checked]': 'radioItem.checked ? \"\" : null',\n '[attr.data-inset]': 'inset() ? \"\" : null',\n '[attr.data-variant]': 'variant()',\n },\n})\nexport class FrDropdownMenuRadioItem {\n protected readonly radioItem = inject(CdkMenuItemRadio);\n\n readonly checked = input(false, {\n alias: 'checked',\n transform: booleanAttribute,\n });\n readonly inset = input(false, { transform: booleanAttribute });\n readonly variant = input<FrDropdownMenuItemVariant>('default');\n\n constructor() {\n effect(() => {\n this.radioItem.checked = this.checked();\n });\n }\n}\n\n@Directive({\n selector: '[frDropdownMenuLabel]',\n host: {\n class: 'frame-dropdown-menu__label',\n '[attr.data-inset]': 'inset() ? \"\" : null',\n },\n})\nexport class FrDropdownMenuLabel {\n readonly inset = input(false, { transform: booleanAttribute });\n}\n\n@Directive({\n selector: '[frDropdownMenuSeparator]',\n host: {\n class: 'frame-dropdown-menu__separator',\n role: 'separator',\n },\n})\nexport class FrDropdownMenuSeparator {}\n\n@Directive({\n selector: '[frDropdownMenuShortcut]',\n host: {\n class: 'frame-dropdown-menu__shortcut',\n },\n})\nexport class FrDropdownMenuShortcut {}\n\n@Directive({\n selector: '[frDropdownMenuItemIndicator]',\n host: {\n class: 'frame-dropdown-menu__indicator',\n 'aria-hidden': 'true',\n },\n})\nexport class FrDropdownMenuItemIndicator {}\n","import { CdkMenuItem, CdkMenuTrigger } from '@angular/cdk/menu';\nimport { ConnectedPosition } from '@angular/cdk/overlay';\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n InputSignal,\n booleanAttribute,\n effect,\n inject,\n input,\n signal,\n OnDestroy,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { FrDropdownMenuContent } from './dropdown-menu.content';\nimport { defaultPositions } from './dropdown-menu.position';\nimport { FR_DROPDOWN_MENU_PARENT, FrDropdownMenuTree } from './dropdown-menu.root';\nimport { FrDropdownMenuItemVariant, FrDropdownMenuTriggerMode } from './dropdown-menu.types';\n\n@Directive({\n host: {\n '(mouseenter)': 'handleMouseEnter()',\n '(mouseleave)': 'handleMouseLeave()',\n },\n})\nabstract class FrDropdownMenuTriggerBase implements OnDestroy {\n private static readonly CUSTOM_PROPERTY_PREFIX = '--frame-dropdown-menu-';\n\n protected readonly cdkMenuTrigger = inject(CdkMenuTrigger);\n private readonly destroyRef = inject(DestroyRef);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly tree = inject(FrDropdownMenuTree);\n private readonly parent = inject(FR_DROPDOWN_MENU_PARENT);\n protected readonly isOpen = signal(false);\n\n constructor() {\n this.tree.register(this);\n\n effect(() => {\n const content = this.menuContent();\n\n this.cdkMenuTrigger.menuTemplateRef = content?.templateRef ?? null;\n this.cdkMenuTrigger.menuPosition = this.resolvePositions();\n\n if (content?.isDebugVisible() && !this.cdkMenuTrigger.isOpen()) {\n queueMicrotask(() => {\n if (!this.cdkMenuTrigger.isOpen()) {\n this.cdkMenuTrigger.open();\n }\n });\n }\n });\n\n this.cdkMenuTrigger.opened.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.tree.cancelClose();\n this.isOpen.set(true);\n queueMicrotask(() => {\n this.syncCustomPropertiesToOverlay();\n });\n });\n\n this.cdkMenuTrigger.closed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n if (this.menuContent()?.isDebugVisible()) {\n queueMicrotask(() => {\n if (!this.cdkMenuTrigger.isOpen()) {\n this.cdkMenuTrigger.open();\n }\n });\n return;\n }\n\n this.isOpen.set(false);\n });\n }\n\n protected abstract readonly menuContent: () => FrDropdownMenuContent | null;\n protected abstract readonly isSubmenuTrigger: boolean;\n protected abstract readonly triggerModeInput: InputSignal<FrDropdownMenuTriggerMode | null>;\n\n protected get triggerMode(): FrDropdownMenuTriggerMode {\n return this.triggerModeInput() ?? this.parent.triggerMode();\n }\n\n protected get closeDelay(): number {\n return this.parent.closeDelay();\n }\n\n protected resolvePositions(): ConnectedPosition[] {\n return (\n this.menuContent()?.getPositions(this.isSubmenuTrigger) ??\n defaultPositions(this.isSubmenuTrigger)\n );\n }\n\n protected openFromHover(): void {\n if (this.triggerMode === 'hover' || this.triggerMode === 'both') {\n this.tree.cancelClose();\n\n if (!this.cdkMenuTrigger.isOpen()) {\n this.cdkMenuTrigger.open();\n }\n }\n }\n\n protected handleMouseEnter(): void {\n this.tree.enterInteractiveArea();\n this.openFromHover();\n }\n\n protected handleMouseLeave(): void {\n if (this.menuContent()?.isDebugVisible()) {\n return;\n }\n\n if (this.triggerMode === 'hover' || this.triggerMode === 'both') {\n this.tree.leaveInteractiveArea(this.closeDelay);\n }\n }\n\n close(): void {\n if (this.menuContent()?.isDebugVisible()) {\n return;\n }\n\n if (this.cdkMenuTrigger.isOpen()) {\n this.cdkMenuTrigger.close();\n }\n }\n\n ngOnDestroy(): void {\n this.tree.unregister(this);\n }\n\n private syncCustomPropertiesToOverlay(): void {\n const overlayRef = (this.cdkMenuTrigger as unknown as { overlayRef?: { overlayElement?: HTMLElement | null } })\n .overlayRef;\n const overlayElement = overlayRef?.overlayElement ?? null;\n\n if (!overlayElement) {\n return;\n }\n\n const menuPanel =\n overlayElement.querySelector<HTMLElement>('.frame-dropdown-menu__content') ?? overlayElement;\n const sourceStyles = getComputedStyle(this.elementRef.nativeElement);\n\n for (let index = 0; index < sourceStyles.length; index += 1) {\n const propertyName = sourceStyles.item(index);\n\n if (!propertyName.startsWith(FrDropdownMenuTriggerBase.CUSTOM_PROPERTY_PREFIX)) {\n continue;\n }\n\n const propertyValue = sourceStyles.getPropertyValue(propertyName);\n\n overlayElement.style.setProperty(propertyName, propertyValue);\n menuPanel.style.setProperty(propertyName, propertyValue);\n }\n }\n}\n\n@Directive({\n selector: '[frDropdownMenuTrigger]',\n hostDirectives: [CdkMenuTrigger],\n host: {\n class: 'frame-dropdown-menu__trigger',\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\n },\n})\nexport class FrDropdownMenuTrigger extends FrDropdownMenuTriggerBase {\n readonly menuContent = input<FrDropdownMenuContent | null>(null, {\n alias: 'frDropdownMenuTrigger',\n });\n readonly triggerModeInput = input<FrDropdownMenuTriggerMode | null>(null, {\n alias: 'triggerMode',\n });\n protected readonly isSubmenuTrigger = false;\n}\n\n@Directive({\n selector: '[frDropdownMenuSubTrigger]',\n hostDirectives: [CdkMenuItem, CdkMenuTrigger],\n host: {\n class: 'frame-dropdown-menu__item frame-dropdown-menu__sub-trigger',\n '[attr.data-inset]': 'inset() ? \"\" : null',\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\n '[attr.data-variant]': 'variant()',\n },\n})\nexport class FrDropdownMenuSubTrigger extends FrDropdownMenuTriggerBase {\n readonly menuContent = input<FrDropdownMenuContent | null>(null, {\n alias: 'frDropdownMenuSubTrigger',\n });\n readonly inset = input(false, { transform: booleanAttribute });\n readonly triggerModeInput = input<FrDropdownMenuTriggerMode | null>(null, {\n alias: 'triggerMode',\n });\n readonly variant = input<FrDropdownMenuItemVariant>('default');\n protected readonly isSubmenuTrigger = true;\n}\n","export const FR_DROPDOWN_MENU_ALIGNMENTS = ['center', 'end', 'start'] as const;\nexport const FR_DROPDOWN_MENU_SIDES = ['bottom', 'left', 'right', 'top'] as const;\nexport const FR_DROPDOWN_MENU_TRIGGER_MODES = ['both', 'click', 'hover'] as const;\nexport const FR_DROPDOWN_MENU_ITEM_VARIANTS = ['default', 'destructive'] as const;\n\nexport type FrDropdownMenuAlignment = (typeof FR_DROPDOWN_MENU_ALIGNMENTS)[number];\nexport type FrDropdownMenuSide = (typeof FR_DROPDOWN_MENU_SIDES)[number];\nexport type FrDropdownMenuTriggerMode = (typeof FR_DROPDOWN_MENU_TRIGGER_MODES)[number];\nexport type FrDropdownMenuItemVariant = (typeof FR_DROPDOWN_MENU_ITEM_VARIANTS)[number];\n","import { NgModule } from '@angular/core';\nimport {\n FrDropdownMenu,\n FrDropdownMenuCheckboxItem,\n FrDropdownMenuContent,\n FrDropdownMenuItem,\n FrDropdownMenuItemIndicator,\n FrDropdownMenuLabel,\n FrDropdownMenuPanel,\n FrDropdownMenuRadioGroup,\n FrDropdownMenuRadioItem,\n FrDropdownMenuSeparator,\n FrDropdownMenuShortcut,\n FrDropdownMenuSub,\n FrDropdownMenuSubTrigger,\n FrDropdownMenuTrigger,\n} from './src/dropdown-menu';\n\n@NgModule({\n imports: [\n FrDropdownMenu,\n FrDropdownMenuCheckboxItem,\n FrDropdownMenuContent,\n FrDropdownMenuItem,\n FrDropdownMenuItemIndicator,\n FrDropdownMenuLabel,\n FrDropdownMenuPanel,\n FrDropdownMenuRadioGroup,\n FrDropdownMenuRadioItem,\n FrDropdownMenuSeparator,\n FrDropdownMenuShortcut,\n FrDropdownMenuSub,\n FrDropdownMenuSubTrigger,\n FrDropdownMenuTrigger,\n ],\n exports: [\n FrDropdownMenu,\n FrDropdownMenuCheckboxItem,\n FrDropdownMenuContent,\n FrDropdownMenuItem,\n FrDropdownMenuItemIndicator,\n FrDropdownMenuLabel,\n FrDropdownMenuPanel,\n FrDropdownMenuRadioGroup,\n FrDropdownMenuRadioItem,\n FrDropdownMenuSeparator,\n FrDropdownMenuShortcut,\n FrDropdownMenuSub,\n FrDropdownMenuSubTrigger,\n FrDropdownMenuTrigger,\n ],\n})\nexport class FrDropdownMenuModule {}\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-dropdown-menu.mjs","sources":["../../../projects/components/dropdown-menu/src/dropdown-menu.position.ts","../../../projects/components/dropdown-menu/src/dropdown-menu.root.ts","../../../projects/components/dropdown-menu/src/dropdown-menu.content.ts","../../../projects/components/dropdown-menu/src/dropdown-menu.items.ts","../../../projects/components/dropdown-menu/src/dropdown-menu.trigger.ts","../../../projects/components/dropdown-menu/src/dropdown-menu.types.ts","../../../projects/components/dropdown-menu/dropdown-menu.module.ts","../../../projects/components/dropdown-menu/frame-ui-ng-components-dropdown-menu.ts"],"sourcesContent":["import { ConnectedPosition } from '@angular/cdk/overlay';\r\n\r\nimport { FrDropdownMenuAlignment, FrDropdownMenuSide } from './dropdown-menu.types';\r\n\r\ntype ConcreteDropdownMenuSide = Exclude<FrDropdownMenuSide, 'auto'>;\r\n\r\nconst DEFAULT_SIDE_OFFSET = 4;\r\nconst MIN_SUBMENU_SIDE_OFFSET = 8;\r\n\r\nexport function defaultPositions(isSubmenu: boolean): ConnectedPosition[] {\r\n return buildConnectedPositions({\r\n align: 'start',\r\n alignOffset: 0,\r\n isSubmenu,\r\n side: 'auto',\r\n sideOffset: DEFAULT_SIDE_OFFSET,\r\n });\r\n}\r\n\r\nexport function buildConnectedPositions(options: {\r\n align: FrDropdownMenuAlignment;\r\n alignOffset: number;\r\n isSubmenu: boolean;\r\n side: FrDropdownMenuSide;\r\n sideOffset: number;\r\n}): ConnectedPosition[] {\r\n const side = normalizeSide(options.side, options.isSubmenu);\r\n\r\n if (side === 'auto') {\r\n return autoSides(options.isSubmenu).flatMap((side) =>\r\n primaryPlacement({\r\n ...options,\r\n side,\r\n }),\r\n );\r\n }\r\n\r\n return primaryPlacement({\r\n ...options,\r\n side,\r\n });\r\n}\r\n\r\nfunction primaryPlacement(options: {\r\n align: FrDropdownMenuAlignment;\r\n alignOffset: number;\r\n isSubmenu: boolean;\r\n side: ConcreteDropdownMenuSide;\r\n sideOffset: number;\r\n}): ConnectedPosition[] {\r\n if (options.side === 'left' || options.side === 'right') {\r\n const isRight = options.side === 'right';\r\n const sideOffset = options.isSubmenu\r\n ? Math.max(options.sideOffset, MIN_SUBMENU_SIDE_OFFSET)\r\n : options.sideOffset;\r\n const horizontalOffset = isRight ? sideOffset : -sideOffset;\r\n const originY = horizontalOriginY(options.align);\r\n const overlayY = horizontalOverlayY(options.align);\r\n\r\n return [\r\n {\r\n originX: isRight ? 'end' : 'start',\r\n originY,\r\n overlayX: isRight ? 'start' : 'end',\r\n overlayY,\r\n offsetX: horizontalOffset,\r\n offsetY: options.alignOffset,\r\n },\r\n {\r\n originX: isRight ? 'start' : 'end',\r\n originY,\r\n overlayX: isRight ? 'end' : 'start',\r\n overlayY,\r\n offsetX: -horizontalOffset,\r\n offsetY: options.alignOffset,\r\n },\r\n ];\r\n }\r\n\r\n const isBottom = options.side === 'bottom';\r\n const verticalOffset = isBottom ? options.sideOffset : -options.sideOffset;\r\n const originX = rootOriginX(options.align);\r\n const overlayX = rootOverlayX(options.align);\r\n\r\n return [\r\n {\r\n originX,\r\n originY: isBottom ? 'bottom' : 'top',\r\n overlayX,\r\n overlayY: isBottom ? 'top' : 'bottom',\r\n offsetX: options.alignOffset,\r\n offsetY: verticalOffset,\r\n },\r\n {\r\n originX,\r\n originY: isBottom ? 'top' : 'bottom',\r\n overlayX,\r\n overlayY: isBottom ? 'bottom' : 'top',\r\n offsetX: options.alignOffset,\r\n offsetY: -verticalOffset,\r\n },\r\n ];\r\n}\r\n\r\nfunction normalizeSide(side: FrDropdownMenuSide, isSubmenu: boolean): FrDropdownMenuSide {\r\n if (!isSubmenu || side === 'left' || side === 'right') {\r\n return side;\r\n }\r\n\r\n return 'auto';\r\n}\r\n\r\nfunction autoSides(isSubmenu: boolean): ConcreteDropdownMenuSide[] {\r\n return isSubmenu ? ['right', 'left'] : ['bottom', 'top', 'right', 'left'];\r\n}\r\n\r\nfunction rootOriginX(align: FrDropdownMenuAlignment): 'center' | 'end' | 'start' {\r\n if (align === 'center') {\r\n return 'center';\r\n }\r\n\r\n return align;\r\n}\r\n\r\nfunction rootOverlayX(align: FrDropdownMenuAlignment): 'center' | 'end' | 'start' {\r\n if (align === 'center') {\r\n return 'center';\r\n }\r\n\r\n return align;\r\n}\r\n\r\nfunction horizontalOriginY(align: FrDropdownMenuAlignment): 'bottom' | 'center' | 'top' {\r\n if (align === 'center') {\r\n return 'center';\r\n }\r\n\r\n return align === 'end' ? 'bottom' : 'top';\r\n}\r\n\r\nfunction horizontalOverlayY(align: FrDropdownMenuAlignment): 'bottom' | 'center' | 'top' {\r\n if (align === 'center') {\r\n return 'center';\r\n }\r\n\r\n return align === 'end' ? 'bottom' : 'top';\r\n}\r\n","import { Directive, Injectable, InjectionToken, effect, inject, input, signal } from '@angular/core';\n\nimport { FrDropdownMenuTriggerMode } from './dropdown-menu.types';\n\nexport interface FrDropdownMenuParent {\n readonly closeDelay: () => number;\n readonly triggerMode: () => FrDropdownMenuTriggerMode;\n}\n\nexport const FR_DROPDOWN_MENU_PARENT = new InjectionToken<FrDropdownMenuParent>(\n 'FrDropdownMenuParent',\n);\n\n@Injectable()\nexport class FrDropdownMenuTree {\n private readonly triggers = new Set<{ close(): void }>();\n private closeTimeoutId: ReturnType<typeof setTimeout> | null = null;\n private pointerInsideCount = 0;\n\n register(trigger: { close(): void }): void {\n this.triggers.add(trigger);\n }\n\n unregister(trigger: { close(): void }): void {\n this.triggers.delete(trigger);\n }\n\n cancelClose(): void {\n if (this.closeTimeoutId !== null) {\n clearTimeout(this.closeTimeoutId);\n this.closeTimeoutId = null;\n }\n }\n\n enterInteractiveArea(): void {\n this.pointerInsideCount += 1;\n this.cancelClose();\n }\n\n leaveInteractiveArea(delay: number): void {\n this.pointerInsideCount = Math.max(0, this.pointerInsideCount - 1);\n\n if (this.pointerInsideCount === 0) {\n this.scheduleClose(delay);\n }\n }\n\n scheduleClose(delay: number): void {\n this.cancelClose();\n this.closeTimeoutId = setTimeout(() => {\n this.closeAll();\n }, delay);\n }\n\n closeAll(): void {\n this.cancelClose();\n\n for (const trigger of this.triggers) {\n trigger.close();\n }\n }\n}\n\n@Directive({\n selector: '[frDropdownMenu]',\n providers: [\n FrDropdownMenuTree,\n {\n provide: FR_DROPDOWN_MENU_PARENT,\n useExisting: FrDropdownMenu,\n },\n ],\n host: {\n class: 'frame-dropdown-menu-root',\n },\n})\nexport class FrDropdownMenu implements FrDropdownMenuParent {\n readonly closeDelay = input(140);\n readonly triggerMode = input<FrDropdownMenuTriggerMode>('click');\n}\n\n@Directive({\n selector: '[frDropdownMenuSub]',\n providers: [\n {\n provide: FR_DROPDOWN_MENU_PARENT,\n useExisting: FrDropdownMenuSub,\n },\n ],\n host: {\n class: 'frame-dropdown-menu-sub',\n },\n})\nexport class FrDropdownMenuSub implements FrDropdownMenuParent {\n private readonly parent = inject(FR_DROPDOWN_MENU_PARENT, { skipSelf: true });\n\n readonly closeDelayInput = input<number | null>(null, { alias: 'closeDelay' });\n readonly triggerModeInput = input<FrDropdownMenuTriggerMode | null>(null, {\n alias: 'triggerMode',\n });\n\n readonly closeDelay = signal(this.parent.closeDelay());\n readonly triggerMode = signal(this.parent.triggerMode());\n\n constructor() {\n effect(() => {\n this.closeDelay.set(this.closeDelayInput() ?? this.parent.closeDelay());\n this.triggerMode.set(this.triggerModeInput() ?? this.parent.triggerMode());\n });\n }\n}\n","import { CdkMenu, CdkTargetMenuAim } from '@angular/cdk/menu';\r\nimport { ConnectedPosition } from '@angular/cdk/overlay';\r\nimport {\r\n Directive,\r\n InjectionToken,\r\n TemplateRef,\r\n booleanAttribute,\r\n inject,\r\n input,\r\n} from '@angular/core';\r\n\r\nimport { buildConnectedPositions } from './dropdown-menu.position';\r\nimport { FR_DROPDOWN_MENU_PARENT, FrDropdownMenuTree } from './dropdown-menu.root';\r\nimport { FrDropdownMenuAlignment, FrDropdownMenuSide } from './dropdown-menu.types';\r\n\r\nexport const FR_DROPDOWN_MENU_CONTENT = new InjectionToken<FrDropdownMenuContent>(\r\n 'FrDropdownMenuContent',\r\n);\r\n\r\n@Directive({\r\n selector: 'ng-template[frDropdownMenuContent], ng-template[frDropdownMenuSubContent]',\r\n exportAs: 'frDropdownMenuContent',\r\n providers: [\r\n {\r\n provide: FR_DROPDOWN_MENU_CONTENT,\r\n useExisting: FrDropdownMenuContent,\r\n },\r\n ],\r\n})\r\nexport class FrDropdownMenuContent {\r\n readonly templateRef = inject(TemplateRef<unknown>);\r\n\r\n readonly align = input<FrDropdownMenuAlignment>('start');\r\n readonly alignOffset = input(0);\r\n readonly debugVisible = input(false, { transform: booleanAttribute });\r\n readonly side = input<FrDropdownMenuSide>('auto');\r\n readonly sideOffset = input(4);\r\n\r\n isDebugVisible(): boolean {\r\n return this.debugVisible();\r\n }\r\n\r\n getPositions(isSubmenu: boolean): ConnectedPosition[] {\r\n return buildConnectedPositions({\r\n align: this.align(),\r\n alignOffset: this.alignOffset(),\r\n isSubmenu,\r\n side: this.side(),\r\n sideOffset: this.sideOffset(),\r\n });\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[frDropdownMenuPanel]',\r\n hostDirectives: [CdkMenu, CdkTargetMenuAim],\r\n host: {\r\n class: 'frame-dropdown-menu__content',\r\n '[attr.data-side]': 'side()',\r\n tabindex: '-1',\r\n '(mouseenter)': 'handleMouseEnter()',\r\n '(mouseleave)': 'handleMouseLeave()'\r\n },\r\n})\r\nexport class FrDropdownMenuPanel {\r\n protected readonly side = inject(FR_DROPDOWN_MENU_CONTENT).side;\r\n private readonly tree = inject(FrDropdownMenuTree);\r\n private readonly parent = inject(FR_DROPDOWN_MENU_PARENT);\r\n\r\n protected handleMouseEnter(): void {\r\n this.tree.enterInteractiveArea();\r\n }\r\n\r\n protected handleMouseLeave(): void {\r\n this.tree.leaveInteractiveArea(this.parent.closeDelay());\r\n }\r\n}\r\n","import { CdkMenuGroup, CdkMenuItem, CdkMenuItemCheckbox, CdkMenuItemRadio } from '@angular/cdk/menu';\nimport { Directive, booleanAttribute, effect, inject, input } from '@angular/core';\n\nimport { FrDropdownMenuItemVariant } from './dropdown-menu.types';\n\n@Directive({\n selector: '[frDropdownMenuItem]',\n hostDirectives: [CdkMenuItem],\n host: {\n class: 'frame-dropdown-menu__item',\n '[attr.data-inset]': 'inset() ? \"\" : null',\n '[attr.data-variant]': 'variant()',\n },\n})\nexport class FrDropdownMenuItem {\n readonly inset = input(false, { transform: booleanAttribute });\n readonly variant = input<FrDropdownMenuItemVariant>('default');\n}\n\n@Directive({\n selector: 'button[frDropdownMenuCheckboxItem]',\n hostDirectives: [CdkMenuItemCheckbox],\n host: {\n class: 'frame-dropdown-menu__item frame-dropdown-menu__checkbox-item',\n '[attr.data-checked]': 'checkboxItem.checked ? \"\" : null',\n '[attr.data-inset]': 'inset() ? \"\" : null',\n '[attr.data-variant]': 'variant()',\n },\n})\nexport class FrDropdownMenuCheckboxItem {\n protected readonly checkboxItem = inject(CdkMenuItemCheckbox);\n\n readonly checked = input(false, {\n alias: 'checked',\n transform: booleanAttribute,\n });\n readonly inset = input(false, { transform: booleanAttribute });\n readonly variant = input<FrDropdownMenuItemVariant>('default');\n\n constructor() {\n effect(() => {\n this.checkboxItem.checked = this.checked();\n });\n }\n}\n\n@Directive({\n selector: '[frDropdownMenuRadioGroup]',\n hostDirectives: [CdkMenuGroup],\n host: {\n class: 'frame-dropdown-menu__radio-group',\n },\n})\nexport class FrDropdownMenuRadioGroup {}\n\n@Directive({\n selector: 'button[frDropdownMenuRadioItem]',\n hostDirectives: [CdkMenuItemRadio],\n host: {\n class: 'frame-dropdown-menu__item frame-dropdown-menu__radio-item',\n '[attr.data-checked]': 'radioItem.checked ? \"\" : null',\n '[attr.data-inset]': 'inset() ? \"\" : null',\n '[attr.data-variant]': 'variant()',\n },\n})\nexport class FrDropdownMenuRadioItem {\n protected readonly radioItem = inject(CdkMenuItemRadio);\n\n readonly checked = input(false, {\n alias: 'checked',\n transform: booleanAttribute,\n });\n readonly inset = input(false, { transform: booleanAttribute });\n readonly variant = input<FrDropdownMenuItemVariant>('default');\n\n constructor() {\n effect(() => {\n this.radioItem.checked = this.checked();\n });\n }\n}\n\n@Directive({\n selector: '[frDropdownMenuLabel]',\n host: {\n class: 'frame-dropdown-menu__label',\n '[attr.data-inset]': 'inset() ? \"\" : null',\n },\n})\nexport class FrDropdownMenuLabel {\n readonly inset = input(false, { transform: booleanAttribute });\n}\n\n@Directive({\n selector: '[frDropdownMenuSeparator]',\n host: {\n class: 'frame-dropdown-menu__separator',\n role: 'separator',\n },\n})\nexport class FrDropdownMenuSeparator {}\n\n@Directive({\n selector: '[frDropdownMenuShortcut]',\n host: {\n class: 'frame-dropdown-menu__shortcut',\n },\n})\nexport class FrDropdownMenuShortcut {}\n\n@Directive({\n selector: '[frDropdownMenuItemIndicator]',\n host: {\n class: 'frame-dropdown-menu__indicator',\n 'aria-hidden': 'true',\n },\n})\nexport class FrDropdownMenuItemIndicator {}\n","import { CdkMenuItem, CdkMenuTrigger } from '@angular/cdk/menu';\nimport { ConnectedPosition } from '@angular/cdk/overlay';\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n InputSignal,\n booleanAttribute,\n effect,\n inject,\n input,\n signal,\n OnDestroy,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { FrDropdownMenuContent } from './dropdown-menu.content';\nimport { defaultPositions } from './dropdown-menu.position';\nimport { FR_DROPDOWN_MENU_PARENT, FrDropdownMenuTree } from './dropdown-menu.root';\nimport { FrDropdownMenuItemVariant, FrDropdownMenuTriggerMode } from './dropdown-menu.types';\n\n@Directive({\n host: {\n '(mouseenter)': 'handleMouseEnter()',\n '(mouseleave)': 'handleMouseLeave()',\n },\n})\nabstract class FrDropdownMenuTriggerBase implements OnDestroy {\n private static readonly CUSTOM_PROPERTY_PREFIX = '--frame-dropdown-menu-';\n\n protected readonly cdkMenuTrigger = inject(CdkMenuTrigger);\n private readonly destroyRef = inject(DestroyRef);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly tree = inject(FrDropdownMenuTree);\n private readonly parent = inject(FR_DROPDOWN_MENU_PARENT);\n protected readonly isOpen = signal(false);\n\n constructor() {\n this.tree.register(this);\n\n effect(() => {\n const content = this.menuContent();\n\n this.cdkMenuTrigger.menuTemplateRef = content?.templateRef ?? null;\n this.cdkMenuTrigger.menuPosition = this.resolvePositions();\n\n if (content?.isDebugVisible() && !this.cdkMenuTrigger.isOpen()) {\n queueMicrotask(() => {\n if (!this.cdkMenuTrigger.isOpen()) {\n this.cdkMenuTrigger.open();\n }\n });\n }\n });\n\n this.cdkMenuTrigger.opened.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.tree.cancelClose();\n this.isOpen.set(true);\n queueMicrotask(() => {\n this.syncCustomPropertiesToOverlay();\n });\n });\n\n this.cdkMenuTrigger.closed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n if (this.menuContent()?.isDebugVisible()) {\n queueMicrotask(() => {\n if (!this.cdkMenuTrigger.isOpen()) {\n this.cdkMenuTrigger.open();\n }\n });\n return;\n }\n\n this.isOpen.set(false);\n });\n }\n\n protected abstract readonly menuContent: () => FrDropdownMenuContent | null;\n protected abstract readonly isSubmenuTrigger: boolean;\n protected abstract readonly triggerModeInput: InputSignal<FrDropdownMenuTriggerMode | null>;\n\n protected get triggerMode(): FrDropdownMenuTriggerMode {\n return this.triggerModeInput() ?? this.parent.triggerMode();\n }\n\n protected get closeDelay(): number {\n return this.parent.closeDelay();\n }\n\n protected resolvePositions(): ConnectedPosition[] {\n return (\n this.menuContent()?.getPositions(this.isSubmenuTrigger) ??\n defaultPositions(this.isSubmenuTrigger)\n );\n }\n\n protected openFromHover(): void {\n if (this.triggerMode === 'hover' || this.triggerMode === 'both') {\n this.tree.cancelClose();\n\n if (!this.cdkMenuTrigger.isOpen()) {\n this.cdkMenuTrigger.open();\n }\n }\n }\n\n protected handleMouseEnter(): void {\n this.tree.enterInteractiveArea();\n this.openFromHover();\n }\n\n protected handleMouseLeave(): void {\n if (this.menuContent()?.isDebugVisible()) {\n return;\n }\n\n if (this.triggerMode === 'hover' || this.triggerMode === 'both') {\n this.tree.leaveInteractiveArea(this.closeDelay);\n }\n }\n\n close(): void {\n if (this.menuContent()?.isDebugVisible()) {\n return;\n }\n\n if (this.cdkMenuTrigger.isOpen()) {\n this.cdkMenuTrigger.close();\n }\n }\n\n ngOnDestroy(): void {\n this.tree.unregister(this);\n }\n\n private syncCustomPropertiesToOverlay(): void {\n const overlayRef = (this.cdkMenuTrigger as unknown as { overlayRef?: { overlayElement?: HTMLElement | null } })\n .overlayRef;\n const overlayElement = overlayRef?.overlayElement ?? null;\n\n if (!overlayElement) {\n return;\n }\n\n const menuPanel =\n overlayElement.querySelector<HTMLElement>('.frame-dropdown-menu__content') ?? overlayElement;\n const sourceStyles = getComputedStyle(this.elementRef.nativeElement);\n\n for (let index = 0; index < sourceStyles.length; index += 1) {\n const propertyName = sourceStyles.item(index);\n\n if (!propertyName.startsWith(FrDropdownMenuTriggerBase.CUSTOM_PROPERTY_PREFIX)) {\n continue;\n }\n\n const propertyValue = sourceStyles.getPropertyValue(propertyName);\n\n overlayElement.style.setProperty(propertyName, propertyValue);\n menuPanel.style.setProperty(propertyName, propertyValue);\n }\n }\n}\n\n@Directive({\n selector: '[frDropdownMenuTrigger]',\n hostDirectives: [CdkMenuTrigger],\n host: {\n class: 'frame-dropdown-menu__trigger',\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\n },\n})\nexport class FrDropdownMenuTrigger extends FrDropdownMenuTriggerBase {\n readonly menuContent = input<FrDropdownMenuContent | null>(null, {\n alias: 'frDropdownMenuTrigger',\n });\n readonly triggerModeInput = input<FrDropdownMenuTriggerMode | null>(null, {\n alias: 'triggerMode',\n });\n protected readonly isSubmenuTrigger = false;\n}\n\n@Directive({\n selector: '[frDropdownMenuSubTrigger]',\n hostDirectives: [CdkMenuItem, CdkMenuTrigger],\n host: {\n class: 'frame-dropdown-menu__item frame-dropdown-menu__sub-trigger',\n '[attr.data-inset]': 'inset() ? \"\" : null',\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\n '[attr.data-variant]': 'variant()',\n },\n})\nexport class FrDropdownMenuSubTrigger extends FrDropdownMenuTriggerBase {\n readonly menuContent = input<FrDropdownMenuContent | null>(null, {\n alias: 'frDropdownMenuSubTrigger',\n });\n readonly inset = input(false, { transform: booleanAttribute });\n readonly triggerModeInput = input<FrDropdownMenuTriggerMode | null>(null, {\n alias: 'triggerMode',\n });\n readonly variant = input<FrDropdownMenuItemVariant>('default');\n protected readonly isSubmenuTrigger = true;\n}\n","export const FR_DROPDOWN_MENU_ALIGNMENTS = ['center', 'end', 'start'] as const;\r\nexport const FR_DROPDOWN_MENU_SIDES = ['auto', 'bottom', 'left', 'right', 'top'] as const;\r\nexport const FR_DROPDOWN_MENU_TRIGGER_MODES = ['both', 'click', 'hover'] as const;\r\nexport const FR_DROPDOWN_MENU_ITEM_VARIANTS = ['default', 'destructive'] as const;\r\n\r\nexport type FrDropdownMenuAlignment = (typeof FR_DROPDOWN_MENU_ALIGNMENTS)[number];\r\nexport type FrDropdownMenuSide = (typeof FR_DROPDOWN_MENU_SIDES)[number];\r\nexport type FrDropdownMenuTriggerMode = (typeof FR_DROPDOWN_MENU_TRIGGER_MODES)[number];\r\nexport type FrDropdownMenuItemVariant = (typeof FR_DROPDOWN_MENU_ITEM_VARIANTS)[number];\r\n","import { NgModule } from '@angular/core';\nimport {\n FrDropdownMenu,\n FrDropdownMenuCheckboxItem,\n FrDropdownMenuContent,\n FrDropdownMenuItem,\n FrDropdownMenuItemIndicator,\n FrDropdownMenuLabel,\n FrDropdownMenuPanel,\n FrDropdownMenuRadioGroup,\n FrDropdownMenuRadioItem,\n FrDropdownMenuSeparator,\n FrDropdownMenuShortcut,\n FrDropdownMenuSub,\n FrDropdownMenuSubTrigger,\n FrDropdownMenuTrigger,\n} from './src/dropdown-menu';\n\n@NgModule({\n imports: [\n FrDropdownMenu,\n FrDropdownMenuCheckboxItem,\n FrDropdownMenuContent,\n FrDropdownMenuItem,\n FrDropdownMenuItemIndicator,\n FrDropdownMenuLabel,\n FrDropdownMenuPanel,\n FrDropdownMenuRadioGroup,\n FrDropdownMenuRadioItem,\n FrDropdownMenuSeparator,\n FrDropdownMenuShortcut,\n FrDropdownMenuSub,\n FrDropdownMenuSubTrigger,\n FrDropdownMenuTrigger,\n ],\n exports: [\n FrDropdownMenu,\n FrDropdownMenuCheckboxItem,\n FrDropdownMenuContent,\n FrDropdownMenuItem,\n FrDropdownMenuItemIndicator,\n FrDropdownMenuLabel,\n FrDropdownMenuPanel,\n FrDropdownMenuRadioGroup,\n FrDropdownMenuRadioItem,\n FrDropdownMenuSeparator,\n FrDropdownMenuShortcut,\n FrDropdownMenuSub,\n FrDropdownMenuSubTrigger,\n FrDropdownMenuTrigger,\n ],\n})\nexport class FrDropdownMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|