forty-cdk 0.2.0 → 0.3.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/accordion/README.md +122 -0
- package/aspect-ratio/README.md +76 -0
- package/avatar/README.md +100 -0
- package/breadcrumbs/README.md +49 -0
- package/breakpoints/README.md +81 -0
- package/button/README.md +49 -0
- package/calendar/README.md +458 -0
- package/carousel/README.md +358 -0
- package/checkbox/README.md +146 -0
- package/combobox/README.md +535 -0
- package/context-menu/README.md +139 -0
- package/date-field/README.md +184 -0
- package/date-picker/README.md +338 -0
- package/dialog/README.md +388 -0
- package/disclosure/README.md +114 -0
- package/drag-drop/README.md +359 -0
- package/drawer/README.md +560 -0
- package/dropdown-menu/README.md +176 -0
- package/fesm2022/forty-cdk-accordion.mjs +348 -0
- package/fesm2022/forty-cdk-accordion.mjs.map +1 -0
- package/fesm2022/forty-cdk-aspect-ratio.mjs +74 -0
- package/fesm2022/forty-cdk-aspect-ratio.mjs.map +1 -0
- package/fesm2022/forty-cdk-avatar.mjs +308 -0
- package/fesm2022/forty-cdk-avatar.mjs.map +1 -0
- package/fesm2022/forty-cdk-breadcrumbs.mjs +125 -0
- package/fesm2022/forty-cdk-breadcrumbs.mjs.map +1 -0
- package/fesm2022/forty-cdk-breakpoints.mjs +117 -0
- package/fesm2022/forty-cdk-breakpoints.mjs.map +1 -0
- package/fesm2022/forty-cdk-button.mjs +134 -0
- package/fesm2022/forty-cdk-button.mjs.map +1 -0
- package/fesm2022/forty-cdk-calendar.mjs +2034 -0
- package/fesm2022/forty-cdk-calendar.mjs.map +1 -0
- package/fesm2022/forty-cdk-carousel.mjs +968 -0
- package/fesm2022/forty-cdk-carousel.mjs.map +1 -0
- package/fesm2022/forty-cdk-checkbox.mjs +226 -0
- package/fesm2022/forty-cdk-checkbox.mjs.map +1 -0
- package/fesm2022/forty-cdk-combobox.mjs +2596 -0
- package/fesm2022/forty-cdk-combobox.mjs.map +1 -0
- package/fesm2022/forty-cdk-context-menu.mjs +413 -0
- package/fesm2022/forty-cdk-context-menu.mjs.map +1 -0
- package/fesm2022/forty-cdk-core.mjs +9022 -0
- package/fesm2022/forty-cdk-core.mjs.map +1 -0
- package/fesm2022/forty-cdk-date-field.mjs +744 -0
- package/fesm2022/forty-cdk-date-field.mjs.map +1 -0
- package/fesm2022/forty-cdk-date-picker.mjs +1011 -0
- package/fesm2022/forty-cdk-date-picker.mjs.map +1 -0
- package/fesm2022/forty-cdk-dialog.mjs +707 -0
- package/fesm2022/forty-cdk-dialog.mjs.map +1 -0
- package/fesm2022/forty-cdk-disclosure.mjs +190 -0
- package/fesm2022/forty-cdk-disclosure.mjs.map +1 -0
- package/fesm2022/forty-cdk-drag-drop.mjs +1180 -0
- package/fesm2022/forty-cdk-drag-drop.mjs.map +1 -0
- package/fesm2022/forty-cdk-drawer.mjs +1641 -0
- package/fesm2022/forty-cdk-drawer.mjs.map +1 -0
- package/fesm2022/forty-cdk-dropdown-menu.mjs +350 -0
- package/fesm2022/forty-cdk-dropdown-menu.mjs.map +1 -0
- package/fesm2022/forty-cdk-field.mjs +425 -0
- package/fesm2022/forty-cdk-field.mjs.map +1 -0
- package/fesm2022/forty-cdk-fieldset.mjs +164 -0
- package/fesm2022/forty-cdk-fieldset.mjs.map +1 -0
- package/fesm2022/forty-cdk-file-upload.mjs +221 -0
- package/fesm2022/forty-cdk-file-upload.mjs.map +1 -0
- package/fesm2022/forty-cdk-hover-card.mjs +496 -0
- package/fesm2022/forty-cdk-hover-card.mjs.map +1 -0
- package/fesm2022/forty-cdk-input.mjs +274 -0
- package/fesm2022/forty-cdk-input.mjs.map +1 -0
- package/fesm2022/forty-cdk-internationalized-date.mjs +1 -1
- package/fesm2022/forty-cdk-internationalized-date.mjs.map +1 -1
- package/fesm2022/forty-cdk-listbox.mjs +1279 -0
- package/fesm2022/forty-cdk-listbox.mjs.map +1 -0
- package/fesm2022/forty-cdk-menu.mjs +1439 -0
- package/fesm2022/forty-cdk-menu.mjs.map +1 -0
- package/fesm2022/forty-cdk-menubar.mjs +787 -0
- package/fesm2022/forty-cdk-menubar.mjs.map +1 -0
- package/fesm2022/forty-cdk-meter.mjs +211 -0
- package/fesm2022/forty-cdk-meter.mjs.map +1 -0
- package/fesm2022/forty-cdk-navigation-menu.mjs +1145 -0
- package/fesm2022/forty-cdk-navigation-menu.mjs.map +1 -0
- package/fesm2022/forty-cdk-number-input.mjs +559 -0
- package/fesm2022/forty-cdk-number-input.mjs.map +1 -0
- package/fesm2022/forty-cdk-otp-input.mjs +527 -0
- package/fesm2022/forty-cdk-otp-input.mjs.map +1 -0
- package/fesm2022/forty-cdk-pagination.mjs +323 -0
- package/fesm2022/forty-cdk-pagination.mjs.map +1 -0
- package/fesm2022/forty-cdk-pane-resizer.mjs +297 -0
- package/fesm2022/forty-cdk-pane-resizer.mjs.map +1 -0
- package/fesm2022/forty-cdk-popover.mjs +698 -0
- package/fesm2022/forty-cdk-popover.mjs.map +1 -0
- package/fesm2022/forty-cdk-progress.mjs +226 -0
- package/fesm2022/forty-cdk-progress.mjs.map +1 -0
- package/fesm2022/forty-cdk-radio-group.mjs +378 -0
- package/fesm2022/forty-cdk-radio-group.mjs.map +1 -0
- package/fesm2022/forty-cdk-scroll-area.mjs +640 -0
- package/fesm2022/forty-cdk-scroll-area.mjs.map +1 -0
- package/fesm2022/forty-cdk-search.mjs +205 -0
- package/fesm2022/forty-cdk-search.mjs.map +1 -0
- package/fesm2022/forty-cdk-select.mjs +1661 -0
- package/fesm2022/forty-cdk-select.mjs.map +1 -0
- package/fesm2022/forty-cdk-separator.mjs +82 -0
- package/fesm2022/forty-cdk-separator.mjs.map +1 -0
- package/fesm2022/forty-cdk-signal-forms.mjs +97 -0
- package/fesm2022/forty-cdk-signal-forms.mjs.map +1 -0
- package/fesm2022/forty-cdk-slider.mjs +803 -0
- package/fesm2022/forty-cdk-slider.mjs.map +1 -0
- package/fesm2022/forty-cdk-stepper.mjs +886 -0
- package/fesm2022/forty-cdk-stepper.mjs.map +1 -0
- package/fesm2022/forty-cdk-switch.mjs +137 -0
- package/fesm2022/forty-cdk-switch.mjs.map +1 -0
- package/fesm2022/forty-cdk-table.mjs +1518 -0
- package/fesm2022/forty-cdk-table.mjs.map +1 -0
- package/fesm2022/forty-cdk-tabs.mjs +400 -0
- package/fesm2022/forty-cdk-tabs.mjs.map +1 -0
- package/fesm2022/forty-cdk-time-field.mjs +593 -0
- package/fesm2022/forty-cdk-time-field.mjs.map +1 -0
- package/fesm2022/forty-cdk-time-picker.mjs +1013 -0
- package/fesm2022/forty-cdk-time-picker.mjs.map +1 -0
- package/fesm2022/forty-cdk-toast.mjs +1153 -0
- package/fesm2022/forty-cdk-toast.mjs.map +1 -0
- package/fesm2022/forty-cdk-toggle.mjs +516 -0
- package/fesm2022/forty-cdk-toggle.mjs.map +1 -0
- package/fesm2022/forty-cdk-toolbar.mjs +374 -0
- package/fesm2022/forty-cdk-toolbar.mjs.map +1 -0
- package/fesm2022/forty-cdk-tooltip.mjs +672 -0
- package/fesm2022/forty-cdk-tooltip.mjs.map +1 -0
- package/fesm2022/forty-cdk-tree.mjs +2007 -0
- package/fesm2022/forty-cdk-tree.mjs.map +1 -0
- package/fesm2022/forty-cdk-virtualization.mjs +1 -1
- package/fesm2022/forty-cdk-virtualization.mjs.map +1 -1
- package/fesm2022/forty-cdk.mjs +0 -43310
- package/fesm2022/forty-cdk.mjs.map +1 -1
- package/field/README.md +97 -0
- package/fieldset/README.md +86 -0
- package/file-upload/README.md +73 -0
- package/hover-card/README.md +171 -0
- package/input/README.md +156 -0
- package/listbox/README.md +424 -0
- package/menu/README.md +181 -0
- package/menubar/README.md +140 -0
- package/meter/README.md +128 -0
- package/navigation-menu/README.md +253 -0
- package/number-input/README.md +171 -0
- package/otp-input/README.md +198 -0
- package/package.json +213 -1
- package/pagination/README.md +61 -0
- package/pane-resizer/README.md +136 -0
- package/popover/README.md +262 -0
- package/progress/README.md +115 -0
- package/radio-group/README.md +129 -0
- package/scroll-area/README.md +184 -0
- package/search/README.md +42 -0
- package/select/README.md +488 -0
- package/separator/README.md +84 -0
- package/signal-forms/README.md +72 -0
- package/slider/README.md +152 -0
- package/stepper/README.md +292 -0
- package/switch/README.md +116 -0
- package/table/README.md +769 -0
- package/tabs/README.md +130 -0
- package/time-field/README.md +157 -0
- package/time-picker/README.md +172 -0
- package/toast/README.md +398 -0
- package/toggle/README.md +224 -0
- package/toolbar/README.md +109 -0
- package/tooltip/README.md +274 -0
- package/tree/README.md +708 -0
- package/types/forty-cdk-accordion.d.ts +242 -0
- package/types/forty-cdk-aspect-ratio.d.ts +59 -0
- package/types/forty-cdk-avatar.d.ts +133 -0
- package/types/forty-cdk-breadcrumbs.d.ts +92 -0
- package/types/forty-cdk-breakpoints.d.ts +141 -0
- package/types/forty-cdk-button.d.ts +80 -0
- package/types/forty-cdk-calendar.d.ts +914 -0
- package/types/forty-cdk-carousel.d.ts +530 -0
- package/types/forty-cdk-checkbox.d.ts +141 -0
- package/types/forty-cdk-combobox.d.ts +1259 -0
- package/types/forty-cdk-context-menu.d.ts +313 -0
- package/types/forty-cdk-core.d.ts +5774 -0
- package/types/forty-cdk-date-field.d.ts +307 -0
- package/types/forty-cdk-date-picker.d.ts +622 -0
- package/types/forty-cdk-dialog.d.ts +546 -0
- package/types/forty-cdk-disclosure.d.ts +127 -0
- package/types/forty-cdk-drag-drop.d.ts +456 -0
- package/types/forty-cdk-drawer.d.ts +871 -0
- package/types/forty-cdk-dropdown-menu.d.ts +242 -0
- package/types/forty-cdk-field.d.ts +236 -0
- package/types/forty-cdk-fieldset.d.ts +119 -0
- package/types/forty-cdk-file-upload.d.ts +124 -0
- package/types/forty-cdk-hover-card.d.ts +320 -0
- package/types/forty-cdk-input.d.ts +169 -0
- package/types/forty-cdk-internationalized-date.d.ts +1 -1
- package/types/forty-cdk-listbox.d.ts +513 -0
- package/types/forty-cdk-menu.d.ts +629 -0
- package/types/forty-cdk-menubar.d.ts +451 -0
- package/types/forty-cdk-meter.d.ts +122 -0
- package/types/forty-cdk-navigation-menu.d.ts +514 -0
- package/types/forty-cdk-number-input.d.ts +319 -0
- package/types/forty-cdk-otp-input.d.ts +248 -0
- package/types/forty-cdk-pagination.d.ts +214 -0
- package/types/forty-cdk-pane-resizer.d.ts +145 -0
- package/types/forty-cdk-popover.d.ts +509 -0
- package/types/forty-cdk-progress.d.ts +143 -0
- package/types/forty-cdk-radio-group.d.ts +222 -0
- package/types/forty-cdk-scroll-area.d.ts +258 -0
- package/types/forty-cdk-search.d.ts +142 -0
- package/types/forty-cdk-select.d.ts +899 -0
- package/types/forty-cdk-separator.d.ts +59 -0
- package/types/forty-cdk-signal-forms.d.ts +58 -0
- package/types/forty-cdk-slider.d.ts +379 -0
- package/types/forty-cdk-stepper.d.ts +650 -0
- package/types/forty-cdk-switch.d.ts +87 -0
- package/types/forty-cdk-table.d.ts +723 -0
- package/types/forty-cdk-tabs.d.ts +235 -0
- package/types/forty-cdk-time-field.d.ts +307 -0
- package/types/forty-cdk-time-picker.d.ts +578 -0
- package/types/forty-cdk-toast.d.ts +598 -0
- package/types/forty-cdk-toggle.d.ts +310 -0
- package/types/forty-cdk-toolbar.d.ts +217 -0
- package/types/forty-cdk-tooltip.d.ts +436 -0
- package/types/forty-cdk-tree.d.ts +688 -0
- package/types/forty-cdk.d.ts +1 -19743
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forty-cdk-date-picker.mjs","sources":["../../../projects/forty-cdk/date-picker/src/date-picker-context.ts","../../../projects/forty-cdk/date-picker/src/date-picker-defaults.ts","../../../projects/forty-cdk/date-picker/src/date-picker.ts","../../../projects/forty-cdk/date-picker/src/date-picker-anchor.ts","../../../projects/forty-cdk/date-picker/src/date-picker-trigger.ts","../../../projects/forty-cdk/date-picker/src/date-picker-content.ts","../../../projects/forty-cdk/date-picker/src/date-picker-value.ts","../../../projects/forty-cdk/date-picker/src/date-picker-host-directive.ts","../../../projects/forty-cdk/date-picker/src/forty-cdk-date-picker.ts"],"sourcesContent":["import { computed, inject, InjectionToken, type Signal } from '@angular/core';\nimport type { ReferenceElement } from '@floating-ui/dom';\n\nimport { type FloatingAlign, type FloatingSide, type VetoableNativeEvent } from 'forty-cdk/core';\n\n/**\n * Coordination contract owned by `[forDatePicker]` (the root). The trigger,\n * content surface, and value pieces inject this token to read state and\n * delegate behavior — they never import the root class directly.\n *\n * The root is the `FormValueControl<D | null>`; the trigger is the focusable\n * element that carries `name` / `disabled` / `invalid` for `[formField]`\n * autowiring. The projected `ForCalendar` is two-way bound by the consumer and\n * its selection drives the picker through the root's `contentChild` query — not\n * through this context — so the calendar contract stays untouched.\n *\n * Pieces only ever read `open` and route writes through `toggle()` / `close()`,\n * so the context exposes it read-only and never surfaces the date `value`\n * (the value piece renders the pre-formatted {@link formattedValue}).\n */\nexport interface ForDatePickerContext {\n /** Whether the surface is open. */\n readonly open: Signal<boolean>;\n\n /**\n * The picker's effective disabled — its own `disabled` input OR'd with a\n * surrounding disabled `[forFieldset]`. The trigger reads this so a disabled\n * picker (or fieldset) is inert and exposes `aria-disabled`.\n */\n readonly effectiveDisabled: Signal<boolean>;\n readonly readonly: Signal<boolean>;\n readonly required: Signal<boolean>;\n readonly invalid: Signal<boolean>;\n readonly pending: Signal<boolean>;\n\n /** When `true`, the surface is a trapped / inert / scroll-locked modal dialog. */\n readonly modal: Signal<boolean>;\n /** When `true`, Escape / outside-pointer dismiss the surface. */\n readonly dismissible: Signal<boolean>;\n /** When `true`, focus returns to the trigger on close. */\n readonly returnFocus: Signal<boolean>;\n /** Close the surface after a date is selected in the projected calendar. */\n readonly closeOnSelect: Signal<boolean>;\n\n readonly side: Signal<FloatingSide | undefined>;\n readonly align: Signal<FloatingAlign | undefined>;\n readonly sideOffset: Signal<number>;\n readonly alignOffset: Signal<number>;\n readonly avoidCollisions: Signal<boolean>;\n readonly collisionPadding: Signal<number>;\n readonly sticky: Signal<'partial' | 'always' | false>;\n readonly hideWhenDetached: Signal<boolean>;\n readonly clipUntilPositioned: Signal<boolean>;\n\n readonly triggerId: Signal<string>;\n readonly contentId: Signal<string>;\n /** Accessible name for the dialog surface. Emits no `aria-label` while `null`. */\n readonly ariaLabel: Signal<string | null>;\n\n /** Formatted current value via the adapter, or `null` when empty. Read by `[forDatePickerValue]`. */\n readonly formattedValue: Signal<string | null>;\n /** Placeholder shown by `[forDatePickerValue]` when no date is selected. */\n readonly placeholder: Signal<string>;\n\n /**\n * Element floating-ui anchors the surface against. Prefers an optional\n * `[forDatePickerAnchor]` when registered, otherwise falls back to the\n * trigger. Decoupled from `trigger` so the trigger keeps driving\n * `aria-controls`, the click toggle, focus return, and its outside-pointer\n * exemption regardless of where the surface paints.\n */\n readonly reference: Signal<ReferenceElement | null>;\n /** The trigger button — exempt from outside-pointer checks and the return-focus target. */\n readonly trigger: Signal<HTMLElement | null>;\n registerTrigger(el: HTMLElement): void;\n unregisterTrigger(el: HTMLElement): void;\n\n /**\n * Register / unregister an optional `[forDatePickerAnchor]` positioning\n * element. At most one anchor per root; a second registration throws.\n * Reference-based unregister, so an anchor torn down inside `@if` restores\n * the trigger fallback cleanly.\n */\n registerAnchor(el: HTMLElement): void;\n unregisterAnchor(el: HTMLElement): void;\n\n /** The mounted `[forDatePickerContent]` element. */\n readonly content: Signal<HTMLElement | null>;\n registerContent(el: HTMLElement): void;\n unregisterContent(el: HTMLElement): void;\n\n /** Toggle from a trigger click. Honours `disabled`. */\n toggle(): void;\n /** Close the surface (Escape, outside-pointer, post-selection). Flips `touched`. */\n close(): void;\n /** Flip the `touched` model. Called by the trigger on blur-to-outside. */\n markTouched(): void;\n\n /**\n * Move focus to the projected calendar's roving cell (`tabindex=\"0\"`) when\n * the surface mounts. Returns `false` when no cell is found so the overlay\n * shell can fall back to the first focusable descendant.\n */\n focusCalendarCell(): boolean;\n\n /**\n * Anchored-path Escape — consumer-owned. Builds the veto, emits\n * `(escapeKeyDown)`, and closes unless vetoed (or `dismissible` is off).\n */\n emitEscapeKeyDown(event: KeyboardEvent): void;\n /**\n * Outside-interaction emit forwarders shared by both shells. The shell\n * builds and reuses one `VetoableNativeEvent` across the specific and\n * composite channels; these only fire the matching `output()` and the shell\n * calls `requestClose` when un-vetoed.\n */\n emitPointerDownOutside(veto: VetoableNativeEvent<PointerEvent>): void;\n emitFocusOutside(veto: VetoableNativeEvent<FocusEvent>): void;\n emitInteractOutside(veto: VetoableNativeEvent<PointerEvent | FocusEvent>): void;\n /** Implicit close requested by either shell after an un-vetoed dismissal. */\n requestClose(): void;\n\n /**\n * Modal-path Escape forwarder — the modal-shell builds the veto and owns the\n * close; this only fires `(escapeKeyDown)`.\n */\n forwardEscapeKeyDown(veto: VetoableNativeEvent<KeyboardEvent>): void;\n\n /**\n * Auto-focus hooks. Content fires these just before its imperative `.focus()`\n * (open) or the trigger return-focus (close); `event.preventDefault()` skips\n * the move. Returns `true` when the consumer vetoed.\n */\n emitAutoFocusOnOpen(): boolean;\n emitAutoFocusOnClose(): boolean;\n}\n\n/** Injection token for {@link ForDatePickerContext}, provided by `ForDatePicker`. */\nexport const FOR_DATE_PICKER_CONTEXT = new InjectionToken<ForDatePickerContext>(\n 'FOR_DATE_PICKER_CONTEXT',\n);\n\n/**\n * Injects the nearest {@link ForDatePickerContext}, throwing a descriptive\n * error when used outside a `[forDatePicker]` element.\n *\n * @param piece Name of the calling directive, used in the error message.\n */\nexport function injectDatePickerContext(piece: string): ForDatePickerContext {\n const ctx = inject(FOR_DATE_PICKER_CONTEXT, { optional: true });\n if (!ctx) {\n throw new Error(\n `[forty-cdk/date-picker] ${piece} must be used inside a [forDatePicker] element. ` +\n \"If it is declared inside an ng-template, DI resolves at the template's declaration site — \" +\n 'not where it is stamped (e.g. via ngTemplateOutlet) — so declare the template inside the ' +\n '[forDatePicker] root.',\n );\n }\n return ctx;\n}\n\n/**\n * Resolves the trigger's root context: the explicit reference when the\n * `[forDatePickerTrigger]` input carries one, the injected\n * `FOR_DATE_PICKER_CONTEXT` otherwise. The orphan error only fires when neither\n * resolves, on first read of the returned signal. Must be called in an\n * injection context.\n */\nexport function injectDatePickerTriggerContext(\n explicitRoot: Signal<ForDatePickerContext | ''>,\n): Signal<ForDatePickerContext> {\n const injected = inject(FOR_DATE_PICKER_CONTEXT, { optional: true });\n return computed(() => {\n const explicit = explicitRoot();\n if (explicit !== '') {\n return explicit;\n }\n if (injected) {\n return injected;\n }\n throw new Error(\n '[forty-cdk/date-picker] ForDatePickerTrigger could not resolve its [forDatePicker] root: ' +\n 'no FOR_DATE_PICKER_CONTEXT provider is visible and no explicit root reference was passed. ' +\n \"If this trigger is declared inside an ng-template, DI resolves at the template's declaration \" +\n 'site — not where it is stamped — so either declare the template inside the root or pass the ' +\n 'root explicitly: [forDatePickerTrigger]=\"root\" with #root=\"forDatePicker\".',\n );\n });\n}\n","import { type Provider } from '@angular/core';\n\nimport { createDefaults } from 'forty-cdk/core';\n\n/**\n * Defaults inherited by descendant date pickers in the surrounding injector\n * scope. Configure with `provideForDatePickerDefaults` either at the\n * application root or in any component's `providers` array; partial overrides\n * merge with the parent scope.\n */\nexport interface ForDatePickerDefaults {\n /**\n * Distance (px) between the trigger and the floating surface along the\n * resolved `side` axis. Ignored in `modal`\n * mode (the dialog is centered, not anchored).\n */\n sideOffset: number;\n /**\n * Padding (px) added to the viewport edges for collision-aware positioning.\n * Higher values keep the surface further from the edge when `flip` / `shift`\n * runs.\n */\n collisionPadding: number;\n}\n\n/**\n * Library fallback for date-picker defaults, read at the root injector when no\n * consumer has called `provideForDatePickerDefaults`. Exported for the shared\n * defaults contract spec; not re-exported from the primitive's public entry.\n */\nexport const FOR_DATE_PICKER_FALLBACK_DEFAULTS: ForDatePickerDefaults = {\n sideOffset: 8,\n collisionPadding: 8,\n};\n\nconst { token, provideDefaults } = createDefaults<ForDatePickerDefaults>(\n 'FOR_DATE_PICKER_DEFAULTS',\n FOR_DATE_PICKER_FALLBACK_DEFAULTS,\n);\n\n/** Token holding the resolved date-picker defaults for the current scope. */\nexport const FOR_DATE_PICKER_DEFAULTS = token;\n\n/**\n * Configures forty-cdk date-picker defaults for this injector scope. Partial\n * overrides inherit unspecified keys from the parent scope (or library\n * defaults at the root).\n */\nexport function provideForDatePickerDefaults(\n defaults: Partial<ForDatePickerDefaults> = {},\n): Provider[] {\n return provideDefaults(defaults);\n}\n","import {\n booleanAttribute,\n computed,\n contentChild,\n Directive,\n effect,\n inject,\n input,\n isDevMode,\n model,\n numberAttribute,\n output,\n signal,\n} from '@angular/core';\nimport type { ReferenceElement } from '@floating-ui/dom';\nimport type { FormValueControl } from '@angular/forms/signals';\n\nimport {\n assertTimeCapable,\n type DateAdapter,\n injectDateAdapter,\n type FloatingAlign,\n type FloatingSide,\n FormUiControlBase,\n injectHiddenInput,\n adoptHostId,\n IdGenerator,\n type WritingDirection,\n injectTextDirection,\n createVetoableNativeEvent,\n emitVetoableEvent,\n type VetoableEvent,\n type VetoableNativeEvent,\n clampToBounds,\n composeWithTime,\n serializeISODate,\n FOR_TIME_VALUE_SOURCE,\n} from 'forty-cdk/core';\nimport { ForCalendar, type CalendarDateRange } from 'forty-cdk/calendar';\nimport { FOR_DATE_PICKER_CONTEXT, type ForDatePickerContext } from './date-picker-context';\nimport { FOR_DATE_PICKER_DEFAULTS } from './date-picker-defaults';\n\n/** Date-time precision; `'day'` keeps a pure calendar picker, anything more composes a time field. */\ntype DatePickerGranularity = 'day' | 'hour' | 'minute' | 'second';\n\n/**\n * Headless date picker — the [WAI-ARIA Date Picker Dialog pattern](https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/examples/datepicker-dialog/)\n * reinterpreted idiomatically for modern Angular: a focusable trigger that opens\n * a floating surface wrapping a projected `ForCalendar`.\n *\n * `ForDatePicker` is the root and the form value: it implements\n * `FormValueControl<D | null>` from `@angular/forms/signals`, so it auto-wires\n * with `[formField]` and auto-associates inside a `[forField]`. The trigger is\n * the focusable control that carries `name` / `disabled` / `invalid`; selection\n * state flows root → projected calendar via `[(value)]`.\n *\n * The surface defaults to a **non-modal popover** (anchored to the trigger,\n * dismiss on Escape / outside-pointer, return focus on close); set `modal`\n * for the trapped / inert / scroll-locked dialog variant. Mount/unmount of the surface is the consumer's job — wrap\n * `[forDatePickerContent]` with `@if (open())`.\n *\n * The projected `ForCalendar` is two-way bound by the consumer (`[(value)]`)\n * and forwarded `[min]` / `[max]` / `[isDateUnavailable]` from the picker's\n * accessors. A selection inside the grid is observed through a `contentChild`\n * query on the calendar's `valueChange`, so the calendar primitive stays\n * untouched; on selection the picker mirrors the value, flips `touched`, and —\n * when `closeOnSelect` is on (default) — closes the surface.\n *\n * Set `granularity` coarser-than-a-day off (`'hour'` / `'minute'` / `'second'`)\n * to make it a **date-time picker**: the consumer projects a `[forTimeField]`\n * beside the calendar (binding both children **one-way** to `picker.value()` so\n * their internal writes don't clobber each other), and the picker grafts the\n * entered time onto each calendar selection. This needs a time-capable adapter\n * (`provideNativeDateAdapter()` / `provideInternationalizedDateTimeAdapter()`).\n *\n * @typeParam D The adapter's immutable date (or, with `granularity > 'day'`,\n * date-time) type.\n *\n * Note: the date bounds are named `minDate` / `maxDate`, not `min` / `max` —\n * the latter are reserved `FormUiControl` members typed `number | undefined`\n * for numeric validators, so a date-typed `min` / `max` would break the\n * `FormValueControl` contract.\n *\n * @example\n * ```html\n * <div forDatePicker [(value)]=\"date\" [(open)]=\"open\" [minDate]=\"min\" [maxDate]=\"max\"\n * name=\"dob\" [ariaLabel]=\"'Choose date'\" #picker=\"forDatePicker\">\n * <button forDatePickerTrigger>\n * <span forDatePickerValue>Pick a date</span>\n * </button>\n *\n * @if (open()) {\n * <div forDatePickerContent>\n * <div forCalendar [(value)]=\"date\" [min]=\"picker.minDate()\" [max]=\"picker.maxDate()\">\n * <!-- …calendar header + grid… -->\n * </div>\n * </div>\n * }\n * </div>\n * ```\n *\n * @example Date-time picker (`granularity=\"minute\"`), children bound one-way:\n * ```html\n * <div forDatePicker [(value)]=\"when\" [(open)]=\"open\" granularity=\"minute\"\n * [hourCycle]=\"24\" #picker=\"forDatePicker\">\n * <button forDatePickerTrigger><span forDatePickerValue>Pick date & time</span></button>\n * @if (open()) {\n * <div forDatePickerContent>\n * <div forCalendar [value]=\"picker.value()\" [min]=\"picker.minDate()\">…</div>\n * <div forTimeField [value]=\"picker.value()\" [hourCycle]=\"picker.hourCycle()\">…</div>\n * </div>\n * }\n * </div>\n * ```\n */\n@Directive({\n selector: '[forDatePicker]',\n exportAs: 'forDatePicker',\n host: {\n '[attr.dir]': 'dir()',\n '[attr.data-state]': 'open() ? \"open\" : \"closed\"',\n '[attr.data-disabled]': 'effectiveDisabled() ? \"\" : null',\n },\n providers: [{ provide: FOR_DATE_PICKER_CONTEXT, useExisting: ForDatePicker }],\n})\nexport class ForDatePicker<D>\n extends FormUiControlBase\n implements FormValueControl<D | null>, ForDatePickerContext\n{\n readonly #idGen = inject(IdGenerator);\n readonly #defaults = inject(FOR_DATE_PICKER_DEFAULTS);\n\n /** The active date adapter, resolved from `FOR_DATE_ADAPTER` (shared with `ForCalendar`). */\n readonly adapter: DateAdapter<D> = injectDateAdapter<D>('ForDatePicker');\n\n /**\n * Two-way bindable selected date, or `null`. Required by\n * `FormValueControl<D | null>`. The `model()` change emitter (`(valueChange)`)\n * fires only when the picker itself commits a selection, never on consumer\n * writes via `[(value)]`.\n */\n readonly value = model<D | null>(null);\n\n /**\n * Two-way bindable. Whether the surface is open. The `model()` change emitter\n * (`(openChange)`) fires only on internal transitions (trigger toggle,\n * Escape, outside dismissal, selection), never on consumer writes via\n * `[(open)]`.\n */\n readonly open = model<boolean>(false);\n\n /**\n * Minimum selectable date (inclusive). Forward to the projected calendar's\n * `[min]`. Named `minDate` (not `min`) because `FormUiControl.min` is reserved\n * for a numeric validator bound by `[formField]`.\n */\n readonly minDate = input<D | null>(null);\n\n /**\n * Maximum selectable date (inclusive). Forward to the projected calendar's\n * `[max]`. Named `maxDate` (not `max`) for the same reason as {@link minDate}.\n */\n readonly maxDate = input<D | null>(null);\n\n /** Per-date predicate. Forward to the projected calendar's `[isDateUnavailable]`. */\n readonly isDateUnavailable = input<(date: D) => boolean>(() => false);\n\n /**\n * Close the surface after a date is selected in the projected calendar.\n * Default `true`. Honoured only at `granularity=\"day\"` — a date-time picker\n * (`granularity > 'day'`) never closes on a calendar selection, so the user\n * can go on to edit the time.\n */\n readonly closeOnSelect = input(true, { transform: booleanAttribute });\n\n /**\n * Date-time precision. `'day'` (default, **non-breaking**) keeps a pure\n * calendar picker. Anything coarser-than-a-day off — `'hour'` / `'minute'` /\n * `'second'` — turns it into a date-time picker: the consumer projects a\n * `[forTimeField]` beside the calendar, a calendar selection preserves the\n * entered time, and the value carries a time component. Requires a\n * time-capable adapter (`provideNativeDateAdapter()` or\n * `provideInternationalizedDateTimeAdapter()`).\n */\n readonly granularity = input<DatePickerGranularity>('day');\n\n /**\n * 12- or 24-hour cycle forwarded to `[forDatePickerValue]`'s formatting (and\n * typically to the projected `[forTimeField][hourCycle]`). When `null`\n * (default) it is derived from the runtime locale. Only meaningful when\n * `granularity > 'day'`.\n */\n readonly hourCycle = input<12 | 24 | null>(null);\n\n /**\n * When `true`, the surface is a trapped / inert / scroll-locked modal dialog\n * (routed through `_internal/modal-shell`) instead of the default non-modal\n * anchored popover. Read once when the content mounts.\n */\n readonly modal = input(false, { transform: booleanAttribute });\n\n /** When true (default), Escape, pointer-down outside, and focus outside close the surface. */\n readonly dismissible = input(true, { transform: booleanAttribute });\n\n /** When true (default), focus returns to the trigger on close. */\n readonly returnFocus = input(true, { transform: booleanAttribute });\n\n /**\n * `Intl.DateTimeFormat` options driving the text rendered by\n * `[forDatePickerValue]`. Default `{ year: 'numeric', month: 'long', day: 'numeric' }`.\n */\n readonly formatOptions = input<Intl.DateTimeFormatOptions>({\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n });\n\n /** Text rendered by `[forDatePickerValue]` when no date is selected. */\n readonly placeholder = input<string>('');\n\n /**\n * Selection mode. `'single'` (default) keeps the existing single-date\n * `[(value)]` and `FormValueControl<D | null>` behaviour unchanged.\n * `'range'` switches to the two-click anchor → commit flow and exposes the\n * result through `[(range)]`. Range mode is day-granular and ignores\n * `granularity` / time. Range is not a Signal Forms value in v1.\n */\n readonly selectionMode = input<'single' | 'range'>('single');\n\n /**\n * Two-way bindable committed date range, or `null`. Only used when\n * `selectionMode=\"range\"`. The `model()` change emitter (`(rangeChange)`)\n * fires only when the picker internally commits or clears a range, never on\n * consumer writes via `[(range)]`.\n */\n readonly range = model<CalendarDateRange<D> | null>(null);\n\n /**\n * Separator rendered between start and end in `[forDatePickerValue]` while\n * in `selectionMode=\"range\"`. Default `' – '` (en-dash with spaces).\n */\n readonly rangeSeparator = input<string>(' – ');\n\n /** Side the surface is anchored to. Defaults to `'bottom'`. Ignored in `modal` mode. */\n readonly side = input<FloatingSide | undefined>('bottom');\n\n /** Alignment along the chosen `side`. Defaults to `'start'`. Ignored in `modal` mode. */\n readonly align = input<FloatingAlign | undefined>('start');\n\n /** Gap (px) between trigger and surface along the main axis. Default from `provideForDatePickerDefaults`. */\n readonly sideOffset = input(this.#defaults.sideOffset, { transform: numberAttribute });\n\n /** Gap (px) along the cross axis. Default `0`. */\n readonly alignOffset = input(0, { transform: numberAttribute });\n\n /** When `true` (default), `flip` and `shift` keep the surface inside the viewport. */\n readonly avoidCollisions = input(true, { transform: booleanAttribute });\n\n /** Padding (px) applied uniformly to flip / shift / size. Default from `provideForDatePickerDefaults`. */\n readonly collisionPadding = input(this.#defaults.collisionPadding, {\n transform: numberAttribute,\n });\n\n /** Stickiness behaviour for `shift`. Default `'partial'`. */\n readonly sticky = input<'partial' | 'always' | false>('partial');\n\n /** When `true`, sets `data-detached=\"\"` while the trigger is scrolled off-screen. */\n readonly hideWhenDetached = input(false, { transform: booleanAttribute });\n\n /**\n * When `true` (default), the content is clipped until floating-ui resolves\n * its first position, preventing a flash at the viewport corner. Set to\n * `false` so a dramatic `animate.enter` plays from its first frame (the\n * surface may flash briefly at the unresolved position while positioning\n * computes).\n */\n readonly clipUntilPositioned = input(true, { transform: booleanAttribute });\n\n /** Accessible name for the dialog surface. Emits no `aria-label` while `null`. */\n readonly ariaLabel = input<string | null>(null);\n\n /**\n * Writing direction. When unset (default `null`), the inherited ambient\n * direction is resolved from the nearest ancestor carrying a `dir` attribute\n * (or `<html dir>`), defaulting to `'ltr'`. An explicit `[dir]` always wins.\n * The resolved value is reflected to the host `dir` attribute.\n */\n readonly _dirInput = input<WritingDirection | null>(null, { alias: 'dir' });\n readonly dir = injectTextDirection(this._dirInput);\n\n /**\n * Fires when the user presses Escape while this surface is the topmost\n * dismissable layer. Call `preventDefault()` on the veto to suppress the\n * automatic close.\n */\n readonly escapeKeyDown = output<VetoableNativeEvent<KeyboardEvent>>();\n\n /** Fires when a pointer goes down outside the surface (and trigger). Vetoable. */\n readonly pointerDownOutside = output<VetoableNativeEvent<PointerEvent>>();\n\n /** Fires when focus moves outside the surface (and trigger). Vetoable. */\n readonly focusOutside = output<VetoableNativeEvent<FocusEvent>>();\n\n /** Composite event: shares veto state with `pointerDownOutside` / `focusOutside`. */\n readonly interactOutside = output<VetoableNativeEvent<PointerEvent | FocusEvent>>();\n\n /** Fires just before the surface sends focus into itself on open. Vetoable. */\n readonly autoFocusOnOpen = output<VetoableEvent>();\n\n /** Fires just before focus returns to the trigger on close. Vetoable. */\n readonly autoFocusOnClose = output<VetoableEvent>();\n\n readonly triggerId = signal(this.#idGen.next('for-date-picker-trigger'));\n readonly contentId = signal(this.#idGen.next('for-date-picker-content'));\n\n readonly #triggerEl = signal<HTMLElement | null>(null);\n readonly trigger = this.#triggerEl.asReadonly();\n\n readonly #anchorEl = signal<HTMLElement | null>(null);\n\n /**\n * Element floating-ui anchors the surface against. Prefers an optional\n * `[forDatePickerAnchor]` when registered, otherwise falls back to the\n * trigger so existing pickers without an anchor keep their behavior.\n * Decoupled from `trigger` so the trigger keeps driving `aria-controls`, the\n * click toggle, focus return, and its dismissal exemption regardless of where\n * the surface paints.\n */\n readonly reference = computed<ReferenceElement | null>(\n () => this.#anchorEl() ?? this.#triggerEl(),\n );\n\n readonly #contentEl = signal<HTMLElement | null>(null);\n readonly content = this.#contentEl.asReadonly();\n\n /**\n * `formatOptions` augmented with time fields when `granularity > 'day'` and\n * the consumer hasn't already specified any — so a date-time picker's value\n * display shows the time without extra wiring, while an explicit\n * `formatOptions` is always honoured verbatim.\n */\n readonly #effectiveFormatOptions = computed<Intl.DateTimeFormatOptions>(() => {\n const options = this.formatOptions();\n const granularity = this.granularity();\n if (\n granularity === 'day' ||\n options.hour !== undefined ||\n options.minute !== undefined ||\n options.second !== undefined\n ) {\n return options;\n }\n const cycle = this.hourCycle();\n return {\n ...options,\n hour: 'numeric',\n minute: '2-digit',\n ...(granularity === 'second' ? { second: '2-digit' } : {}),\n ...(cycle !== null ? { hour12: cycle === 12 } : {}),\n };\n });\n\n /** Formatted current value via the adapter, or `null` when empty. */\n readonly formattedValue = computed<string | null>(() => {\n if (this.selectionMode() === 'range') {\n const r = this.range();\n if (r === null) {\n return null;\n }\n const fmtOpts = this.#effectiveFormatOptions();\n return (\n this.adapter.format(r.start, fmtOpts) +\n this.rangeSeparator() +\n this.adapter.format(r.end, fmtOpts)\n );\n }\n const value = this.value();\n return value === null ? null : this.adapter.format(value, this.#effectiveFormatOptions());\n });\n\n /**\n * The projected `ForCalendar`. Mounts only while the surface is open, so the\n * query resolves to the live instance on open and to `undefined` on close.\n * Its `valueChange` is the single signal that a date was selected inside the\n * grid — wired in the constructor.\n *\n * Invariant: the projected calendar MUST resolve the same `DateAdapter` as\n * this picker (the same `FOR_DATE_ADAPTER` scope). Angular's `contentChild`\n * erases the generic, so the bridge reads `calendar.value` as `D | null` via\n * a cast; a mismatched adapter would leak a wrong-shaped date through that\n * seam. A dev-mode assertion in the bridge effect catches it early.\n */\n private readonly calendar = contentChild(ForCalendar, { descendants: true });\n\n /**\n * The projected `ForTimeField`, present only in a date-time picker\n * (`granularity > 'day'`). Like the calendar, it mounts with the surface; its\n * `valueChange` (a composed date-time, anchored on the picker's current\n * value) is mirrored straight into the picker's value.\n *\n * Invariant: the projected time field MUST resolve the same `DateAdapter` as\n * this picker (see {@link calendar}). The bridge casts its `value` to\n * `D | null` because `contentChild` erases the generic; a dev-mode assertion\n * guards the same-adapter contract.\n */\n private readonly timeSource = contentChild(FOR_TIME_VALUE_SOURCE, { descendants: true });\n\n constructor() {\n super();\n injectHiddenInput({\n name: this.name,\n values: computed(() => {\n const value = this.value();\n if (value === null) {\n return [];\n }\n return [serializeISODate(this.adapter, value, this.granularity(), 'ForDatePicker')];\n }),\n disabled: this.effectiveDisabled,\n });\n\n // Eager validation: a date-time picker needs a time-capable adapter. Fail\n // loudly as soon as the granularity input settles, rather than on first\n // selection deep in a subscription. The throw is raised during change\n // detection (inside this `effect`) and propagates through Angular's error\n // handling, so a day-only adapter misconfiguration is surfaced — never\n // silently swallowed.\n effect(() => {\n if (this.granularity() !== 'day') {\n this.#time();\n }\n });\n\n // Calendar selection bridge. This `effect` does no state derivation — it\n // only (re)subscribes to the projected calendar's `valueChange` or\n // `rangeChange` as the surface mounts / unmounts. The writes happen\n // asynchronously in the subscription callback (a discrete selection event),\n // exactly like a click handler, never during the effect's reactive\n // computation.\n effect((onCleanup) => {\n const calendar = this.calendar();\n if (!calendar) {\n return;\n }\n if (isDevMode() && calendar.adapter !== this.adapter) {\n throw new Error(\n '[forty-cdk/date-picker] The projected ForCalendar must use the same DateAdapter as the ForDatePicker.',\n );\n }\n\n if (this.selectionMode() === 'range') {\n const sub = (calendar as ForCalendar<D>).range.subscribe((next) => {\n if (this.readonly() || this.effectiveDisabled()) {\n return;\n }\n this.range.set(next as CalendarDateRange<D> | null);\n this.markTouched();\n if (next !== null && this.closeOnSelect()) {\n this.close();\n }\n });\n onCleanup(() => sub.unsubscribe());\n return;\n }\n\n const sub = calendar.value.subscribe((date) => {\n if (this.readonly() || this.effectiveDisabled()) {\n return;\n }\n const selected = date as D | null;\n // The projected calendar already preserves the time-of-day when it is\n // one-way bound (`[value]`) to a timed value — `selectDate` re-grafts\n // the current time via `#withPreservedTime`. This graft is a defensive\n // fallback for a date-time picker whose calendar value was null or\n // midnight (e.g. the very first selection): re-apply the previously\n // entered time-of-day. Reading `value()` here is safe because the\n // one-way binding means the calendar's own write didn't clobber it.\n if (selected !== null && this.granularity() !== 'day') {\n const base = this.value() ?? selected;\n this.value.set(\n clampToBounds(\n this.adapter,\n composeWithTime(this.#time(), selected, base),\n this.minDate(),\n this.maxDate(),\n ),\n );\n } else {\n this.value.set(\n selected === null\n ? null\n : clampToBounds(this.adapter, selected, this.minDate(), this.maxDate()),\n );\n }\n this.markTouched();\n // A date-time picker stays open after a day is picked so the time can\n // still be edited; only a pure day picker honours `closeOnSelect`.\n if (this.closeOnSelect() && this.granularity() === 'day') {\n this.close();\n }\n });\n onCleanup(() => sub.unsubscribe());\n });\n\n // Time-source bridge (date-time pickers only). The projected time source\n // (ForTimeField or ForTimePicker) is bound one-way to the picker's value,\n // so its composed `valueChange` already carries the correct day plus the\n // new time — mirror it straight in.\n effect((onCleanup) => {\n const timeSource = this.timeSource();\n if (!timeSource) {\n return;\n }\n if (isDevMode() && timeSource.adapter !== this.adapter) {\n throw new Error(\n '[forty-cdk/date-picker] The projected time source (ForTimeField / ForTimePicker) must use the same DateAdapter as the ForDatePicker.',\n );\n }\n const sub = timeSource.value.subscribe((value) => {\n if (this.readonly() || this.effectiveDisabled()) {\n return;\n }\n const next = value as D | null;\n this.value.set(\n next === null ? null : clampToBounds(this.adapter, next, this.minDate(), this.maxDate()),\n );\n this.markTouched();\n });\n onCleanup(() => sub.unsubscribe());\n });\n }\n\n /** The active adapter, narrowed to a time-capable one; throws when it is day-only. */\n #time() {\n return assertTimeCapable(this.adapter, 'ForDatePicker');\n }\n\n registerTrigger(el: HTMLElement): void {\n adoptHostId(el, this.triggerId);\n this.#triggerEl.set(el);\n }\n unregisterTrigger(el: HTMLElement): void {\n if (this.#triggerEl() === el) {\n this.#triggerEl.set(null);\n }\n }\n\n registerAnchor(el: HTMLElement): void {\n const current = this.#anchorEl();\n if (current !== null && current !== el) {\n throw new Error(\n '[forty-cdk/date-picker] Multiple [forDatePickerAnchor] inside the same [forDatePicker]; only one is allowed.',\n );\n }\n this.#anchorEl.set(el);\n }\n unregisterAnchor(el: HTMLElement): void {\n if (this.#anchorEl() === el) {\n this.#anchorEl.set(null);\n }\n }\n\n registerContent(el: HTMLElement): void {\n adoptHostId(el, this.contentId);\n this.#contentEl.set(el);\n }\n unregisterContent(el: HTMLElement): void {\n if (this.#contentEl() === el) {\n this.#contentEl.set(null);\n }\n }\n\n toggle(): void {\n if (this.effectiveDisabled()) {\n return;\n }\n this.open.update((v) => !v);\n }\n\n close(): void {\n this.markTouched();\n this.open.set(false);\n }\n\n override markTouched(): void {\n super.markTouched();\n }\n\n focusCalendarCell(): boolean {\n return this.calendar()?.focusActiveCell() ?? false;\n }\n\n // Both the anchored (`injectOverlayShell`) and modal (`injectModalShell`)\n // surfaces now own the shared `#pendingOutsideVeto` reuse between the\n // specific outside channels and the composite `interactOutside`, so this\n // directive only forwards the shell-built veto to the matching `output()`\n // and owns the close decision via `requestClose`. Escape is the one channel\n // this directive still owns end-to-end on the anchored path (the modal path\n // routes it through `emitEscapeKeyDown` on the shell, which builds the veto\n // and calls `requestClose` itself).\n\n /**\n * Anchored-path Escape. Builds the veto, emits `(escapeKeyDown)`, and —\n * unless vetoed and `dismissible` is off — stops propagation and closes.\n */\n emitEscapeKeyDown(event: KeyboardEvent): void {\n const veto = createVetoableNativeEvent(event);\n this.escapeKeyDown.emit(veto);\n if (!veto.defaultPrevented && this.dismissible()) {\n event.stopPropagation();\n this.close();\n }\n }\n\n /**\n * Outside-interaction emit forwarders shared by both shells. The shell\n * builds and reuses the veto; these only fire the matching output.\n */\n emitPointerDownOutside(veto: VetoableNativeEvent<PointerEvent>): void {\n this.pointerDownOutside.emit(veto);\n }\n emitFocusOutside(veto: VetoableNativeEvent<FocusEvent>): void {\n this.focusOutside.emit(veto);\n }\n emitInteractOutside(veto: VetoableNativeEvent<PointerEvent | FocusEvent>): void {\n this.interactOutside.emit(veto);\n }\n\n /** Modal-path Escape forwarder: emit only; the modal shell owns the close. */\n forwardEscapeKeyDown(veto: VetoableNativeEvent<KeyboardEvent>): void {\n this.escapeKeyDown.emit(veto);\n }\n\n /**\n * Implicit close requested by either shell after an un-vetoed outside\n * interaction (or, on the modal path, an un-vetoed Escape). Marks the\n * control touched and closes.\n */\n requestClose(): void {\n this.close();\n }\n\n emitAutoFocusOnOpen(): boolean {\n return emitVetoableEvent(this.autoFocusOnOpen);\n }\n\n emitAutoFocusOnClose(): boolean {\n return emitVetoableEvent(this.autoFocusOnClose);\n }\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\n\nimport { registerHandle } from 'forty-cdk/core';\nimport { injectDatePickerContext } from './date-picker-context';\n\n/**\n * Optional positioning anchor. When present, `[forDatePickerContent]` is\n * positioned against this element instead of `[forDatePickerTrigger]` — useful\n * when the trigger lives inside a decorated field box (padding, prefix icon,\n * clear / chevron buttons) and the surface should align to the visible field\n * rather than the inner button.\n *\n * Only positioning changes: the trigger still owns `aria-controls`,\n * `aria-expanded`, the click toggle, focus return on close, and its exemption\n * from outside-pointer dismissal. If no anchor is registered the surface falls\n * back to anchoring against the trigger, so existing usages are unaffected.\n *\n * A date picker's calendar has its own intrinsic width and ignores\n * `--for-anchor-width`, so the practical effect is mostly start / side\n * alignment to the box edge.\n *\n * At most one `[forDatePickerAnchor]` may be registered per `[forDatePicker]`;\n * a second one throws.\n *\n * ```html\n * <div forDatePicker [(value)]=\"date\">\n * <div forDatePickerAnchor class=\"field-box\">\n * <icon />\n * <button forDatePickerTrigger><span forDatePickerValue>…</span></button>\n * <button class=\"clear\">×</button>\n * </div>\n * @if (open()) {\n * <div forDatePickerContent>…</div>\n * }\n * </div>\n * ```\n */\n@Directive({\n selector: '[forDatePickerAnchor]',\n exportAs: 'forDatePickerAnchor',\n})\nexport class ForDatePickerAnchor {\n readonly #ctx = injectDatePickerContext('ForDatePickerAnchor');\n readonly #host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n constructor() {\n registerHandle(\n this.#host.nativeElement,\n (el) => this.#ctx.registerAnchor(el),\n (el) => this.#ctx.unregisterAnchor(el),\n );\n }\n}\n","import { computed, Directive, effect, ElementRef, inject, input } from '@angular/core';\n\nimport { reflectDisabled } from 'forty-cdk/core';\nimport { type ForDatePickerContext, injectDatePickerTriggerContext } from './date-picker-context';\n\n/**\n * The button that opens the date-picker surface — and the focusable form\n * control the picker exposes for `[formField]`. Apply on a `<button>` so\n * Space / Enter dispatch native clicks that toggle via `(click)`.\n *\n * Wires APG Date Picker Dialog attributes: `aria-haspopup=\"dialog\"`,\n * `aria-expanded` reflecting `open()`, and `aria-controls` pointing to the\n * content while open. It also reflects the root's form-control state\n * (`aria-disabled` / `aria-readonly` / `aria-required` / `aria-invalid` /\n * `aria-busy`) so the focusable element advertises validity to assistive tech.\n *\n * The trigger is exempt from the surface's dismissable layer — its own click\n * toggles open/close, so an outside-pointer dismissal never races with it.\n *\n * The root is normally resolved via DI from the enclosing `[forDatePicker]`.\n * When the trigger is declared inside an `ng-template` stamped into the root\n * (e.g. via `ngTemplateOutlet`), DI resolves at the template's declaration\n * site and misses the root — pass it explicitly through the selector input,\n * `routerLink`-style: `[forDatePickerTrigger]=\"root\"` with\n * `#root=\"forDatePicker\"`.\n */\n@Directive({\n selector: '[forDatePickerTrigger]',\n exportAs: 'forDatePickerTrigger',\n host: {\n type: 'button',\n '[id]': 'ctx().triggerId()',\n '[attr.aria-haspopup]': '\"dialog\"',\n '[attr.aria-expanded]': 'ctx().open() ? \"true\" : \"false\"',\n '[attr.aria-controls]': 'ctx().open() ? ctx().contentId() : null',\n '[attr.aria-disabled]': 'ctx().effectiveDisabled() ? \"true\" : null',\n '[attr.aria-readonly]': 'ctx().readonly() ? \"true\" : null',\n '[attr.aria-required]': 'ctx().required() ? \"true\" : null',\n '[attr.aria-invalid]': 'ctx().invalid() ? \"true\" : null',\n '[attr.aria-busy]': 'ctx().pending() ? \"true\" : null',\n '[attr.data-state]': 'ctx().open() ? \"open\" : \"closed\"',\n '[attr.data-disabled]': 'ctx().effectiveDisabled() ? \"\" : null',\n '(click)': 'onClick()',\n '(focusout)': 'onFocusOut($event)',\n },\n})\nexport class ForDatePickerTrigger {\n readonly #host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Optional explicit reference to the `[forDatePicker]` root, named after the\n * selector `routerLink`-style. The bare valueless attribute keeps resolving\n * the enclosing root via DI; pass the root explicitly\n * (`[forDatePickerTrigger]=\"root\"`, with `#root=\"forDatePicker\"`) when the\n * trigger is declared in an `ng-template` stamped inside the root — DI\n * resolves at the template's declaration site, so the enclosing root is\n * invisible there. The empty string (what the valueless attribute yields) is\n * treated as unset.\n */\n readonly forDatePickerTrigger = input<ForDatePickerContext | ''>('');\n\n protected readonly ctx = injectDatePickerTriggerContext(this.forDatePickerTrigger);\n\n constructor() {\n const el = this.#host.nativeElement;\n // Registration is an imperative call into the resolved root's registry,\n // not state derivation — the effect only re-registers the element when the\n // resolved root changes (explicit reference swapped at runtime).\n effect((onCleanup) => {\n const ctx = this.ctx();\n ctx.registerTrigger(el);\n onCleanup(() => ctx.unregisterTrigger(el));\n });\n reflectDisabled(computed(() => this.ctx().effectiveDisabled()));\n }\n\n protected onClick(): void {\n this.ctx().toggle();\n }\n\n protected onFocusOut(event: FocusEvent): void {\n const next = event.relatedTarget as HTMLElement | null;\n if (next) {\n // Focus moving into the surface we just opened — not a leave.\n const content = this.ctx().content();\n if (content && content.contains(next)) {\n return;\n }\n // Focus staying within the trigger's own subtree — not a leave.\n if (this.#host.nativeElement.contains(next)) {\n return;\n }\n }\n this.ctx().markTouched();\n }\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\n\nimport { registerHandle, injectModalShell, injectOverlayShell } from 'forty-cdk/core';\nimport { injectDatePickerContext } from './date-picker-context';\n\n/**\n * The date-picker surface. Carries `role=\"dialog\"`, is portaled to\n * `document.body`, and wraps the projected `ForCalendar`. It defers all of its\n * lifecycle to one of the two shared shells, picked once on construction from\n * `[forDatePicker].modal`:\n *\n * - **non-modal (default)** — `injectOverlayShell` anchors the surface to the\n * trigger via `@floating-ui/dom`, activates a `DismissableLayer` (Escape,\n * pointer-down outside, focus outside), moves focus to the calendar's roving\n * cell on open, and returns focus to the trigger on close.\n * - **modal** — `injectModalShell` traps focus, inerts the background, and\n * locks body scroll (a centered dialog the consumer positions with CSS, not\n * trigger-anchored). Same Escape / outside-pointer dismiss and return-focus.\n *\n * The mode is read in the constructor rather than reactively because the two\n * shells are structurally different and switching at runtime would require a\n * remount. This is reliable: the surface mounts lazily (the consumer wraps it\n * with `@if (open())`), well after the root's `modal` input has settled.\n *\n * Mount/unmount of the surface is the consumer's responsibility — wrap with\n * `@if (open())` so `animate.enter` / `animate.leave` fire on the natural\n * mount cycle.\n */\n@Directive({\n selector: '[forDatePickerContent]',\n exportAs: 'forDatePickerContent',\n host: {\n role: 'dialog',\n tabindex: '-1',\n '[id]': 'ctx.contentId()',\n '[attr.aria-label]': 'ctx.ariaLabel()',\n '[attr.aria-labelledby]': 'ctx.ariaLabel() ? null : ctx.triggerId()',\n '[attr.aria-modal]': 'ctx.modal() ? \"true\" : null',\n '[attr.data-state]': 'ctx.open() ? \"open\" : \"closed\"',\n },\n})\nexport class ForDatePickerContent {\n protected readonly ctx = injectDatePickerContext('ForDatePickerContent');\n readonly #host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n constructor() {\n const ctx = this.ctx;\n registerHandle(\n this.#host.nativeElement,\n (el) => ctx.registerContent(el),\n (el) => ctx.unregisterContent(el),\n );\n\n if (ctx.modal()) {\n injectModalShell({\n modal: ctx.modal,\n returnFocus: ctx.returnFocus,\n // Land on the calendar's active cell with a first-focusable fallback,\n // matching the non-modal path below — both modes focus the same cell.\n initialFocus: {\n move: () => ctx.focusCalendarCell(),\n veto: () => ctx.emitAutoFocusOnOpen(),\n },\n autoFocusOnOpen: () => (event) => {\n if (ctx.emitAutoFocusOnOpen()) {\n event.preventDefault();\n }\n },\n autoFocusOnClose: () => (event) => {\n if (ctx.emitAutoFocusOnClose()) {\n event.preventDefault();\n }\n },\n dismiss: {\n dismissible: ctx.dismissible,\n requestClose: () => ctx.requestClose(),\n emitEscapeKeyDown: (veto) => ctx.forwardEscapeKeyDown(veto),\n emitPointerDownOutside: (veto) => ctx.emitPointerDownOutside(veto),\n emitFocusOutside: (veto) => ctx.emitFocusOutside(veto),\n emitInteractOutside: (veto) => ctx.emitInteractOutside(veto),\n },\n });\n return;\n }\n\n injectOverlayShell({\n positioner: {\n kind: 'floating',\n reference: ctx.reference,\n open: ctx.open,\n side: ctx.side,\n align: ctx.align,\n sideOffset: ctx.sideOffset,\n alignOffset: ctx.alignOffset,\n avoidCollisions: ctx.avoidCollisions,\n collisionPadding: ctx.collisionPadding,\n sticky: ctx.sticky,\n hideWhenDetached: ctx.hideWhenDetached,\n clipUntilPositioned: ctx.clipUntilPositioned,\n },\n dismiss: {\n dismissible: ctx.dismissible,\n requestClose: () => ctx.requestClose(),\n emitEscapeKeyDown: (event) => ctx.emitEscapeKeyDown(event),\n emitPointerDownOutside: (veto) => ctx.emitPointerDownOutside(veto),\n emitFocusOutside: (veto) => ctx.emitFocusOutside(veto),\n emitInteractOutside: (veto) => ctx.emitInteractOutside(veto),\n // Trigger is exempt — its own click toggles open/close; without\n // exemption pointer-down-outside would race and double-close.\n exemptElements: () => {\n const trigger = ctx.trigger();\n return trigger ? [trigger] : [];\n },\n },\n // Move focus to the calendar's roving cell on open; the shell falls back\n // to the first focusable descendant when no cell is found.\n initialFocus: {\n move: () => ctx.focusCalendarCell(),\n veto: () => ctx.emitAutoFocusOnOpen(),\n },\n returnFocus: {\n enabled: ctx.returnFocus,\n target: () => ctx.trigger(),\n veto: () => ctx.emitAutoFocusOnClose(),\n },\n });\n }\n}\n","import { computed, Directive, input } from '@angular/core';\n\nimport { injectDatePickerContext } from './date-picker-context';\n\n/**\n * Renders the selected date — formatted through the adapter with the root's\n * `formatOptions` — or the configured placeholder when nothing is selected,\n * into its host element via `textContent`. Apply on a `<span>` (or any inline\n * element) inside `[forDatePickerTrigger]`:\n *\n * ```html\n * <button forDatePickerTrigger>\n * <span forDatePickerValue placeholder=\"Pick a date…\"></span>\n * </button>\n * ```\n *\n * For fully custom rendering, drop this directive and read\n * `forDatePicker.formattedValue()` / `forDatePicker.value()` from your template.\n */\n@Directive({\n selector: '[forDatePickerValue]',\n exportAs: 'forDatePickerValue',\n host: {\n '[textContent]': 'displayText()',\n '[attr.data-placeholder]': 'isPlaceholder() ? \"\" : null',\n },\n})\nexport class ForDatePickerValue {\n readonly #ctx = injectDatePickerContext('ForDatePickerValue');\n\n /** Text shown when no date is selected. Falls back to `[forDatePicker][placeholder]`. */\n readonly placeholder = input<string>('');\n\n protected readonly isPlaceholder = computed(() => this.#ctx.formattedValue() === null);\n\n protected readonly displayText = computed(() => {\n const formatted = this.#ctx.formattedValue();\n if (formatted !== null) {\n return formatted;\n }\n return this.placeholder() || this.#ctx.placeholder();\n });\n}\n","/**\n * Exact public names of every `ForDatePicker` input, its models included. Spread it into the\n * `inputs` array of a `hostDirectives` entry so a wrapper component re-exposes the\n * primitive's full surface — the Signal Forms members `[formField]` binds among them —\n * without hand-maintaining the list. Always spread into an inline object literal as shown\n * below: the literal is what keeps the entry statically analyzable for consumers compiling\n * against the published package. An anti-drift spec fails when this list no longer matches\n * the directive's actual API. See `docs/wrapping-form-primitives.md` for both supported\n * wrapping patterns.\n *\n * @example\n * ```ts\n * @Component({\n * selector: 'div[myDatePicker]',\n * template: '',\n * hostDirectives: [\n * {\n * directive: ForDatePicker,\n * inputs: [...FOR_DATE_PICKER_HOST_DIRECTIVE_INPUTS],\n * outputs: [...FOR_DATE_PICKER_HOST_DIRECTIVE_OUTPUTS],\n * },\n * ],\n * })\n * export class MyDatePicker {}\n * ```\n */\nexport const FOR_DATE_PICKER_HOST_DIRECTIVE_INPUTS = [\n 'value',\n 'open',\n 'range',\n 'align',\n 'alignOffset',\n 'ariaLabel',\n 'avoidCollisions',\n 'clipUntilPositioned',\n 'closeOnSelect',\n 'collisionPadding',\n 'dir',\n 'dirty',\n 'disabled',\n 'dismissible',\n 'errors',\n 'formatOptions',\n 'granularity',\n 'hideWhenDetached',\n 'hourCycle',\n 'invalid',\n 'isDateUnavailable',\n 'maxDate',\n 'minDate',\n 'modal',\n 'name',\n 'pending',\n 'placeholder',\n 'rangeSeparator',\n 'readonly',\n 'required',\n 'returnFocus',\n 'selectionMode',\n 'side',\n 'sideOffset',\n 'sticky',\n 'touched',\n] as const;\n\n/**\n * Exact public names of every `ForDatePicker` output, the Signal Forms `touch` output\n * included. Spread it into the `outputs` array of the same `hostDirectives` entry as\n * {@link FOR_DATE_PICKER_HOST_DIRECTIVE_INPUTS}.\n */\nexport const FOR_DATE_PICKER_HOST_DIRECTIVE_OUTPUTS = [\n 'valueChange',\n 'openChange',\n 'rangeChange',\n 'escapeKeyDown',\n 'pointerDownOutside',\n 'focusOutside',\n 'interactOutside',\n 'autoFocusOnOpen',\n 'autoFocusOnClose',\n 'touchedChange',\n 'touch',\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|