forty-cdk 0.24.0 → 0.25.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 +7 -0
- package/aspect-ratio/README.md +6 -0
- package/avatar/README.md +6 -0
- package/breadcrumbs/README.md +7 -0
- package/breakpoints/README.md +6 -0
- package/button/README.md +8 -1
- package/calendar/README.md +10 -1
- package/carousel/README.md +7 -0
- package/checkbox/README.md +7 -0
- package/combobox/README.md +8 -1
- package/context-menu/README.md +8 -1
- package/date-field/README.md +9 -2
- package/date-picker/README.md +7 -0
- package/dialog/README.md +8 -1
- package/disclosure/README.md +7 -0
- package/drag-drop/README.md +9 -2
- package/drawer/README.md +7 -0
- package/dropdown-menu/README.md +8 -1
- package/fesm2022/forty-cdk-listbox.mjs +7 -1
- package/fesm2022/forty-cdk-listbox.mjs.map +1 -1
- package/fesm2022/forty-cdk-select.mjs +10 -1
- package/fesm2022/forty-cdk-select.mjs.map +1 -1
- package/fesm2022/forty-cdk-table-virtualization.mjs +20 -3
- package/fesm2022/forty-cdk-table-virtualization.mjs.map +1 -1
- package/fesm2022/forty-cdk-table.mjs +74 -11
- package/fesm2022/forty-cdk-table.mjs.map +1 -1
- package/fesm2022/forty-cdk-time-picker.mjs +10 -1
- package/fesm2022/forty-cdk-time-picker.mjs.map +1 -1
- package/field/README.md +7 -1
- package/fieldset/README.md +7 -1
- package/file-upload/README.md +7 -1
- package/hover-card/README.md +6 -0
- package/input/README.md +7 -1
- package/internationalized-date/README.md +7 -1
- package/listbox/README.md +9 -1
- package/menu/README.md +7 -0
- package/menubar/README.md +7 -0
- package/meter/README.md +7 -0
- package/navigation-menu/README.md +7 -0
- package/number-input/README.md +7 -0
- package/otp-input/README.md +6 -0
- package/package.json +1 -1
- package/pagination/README.md +7 -0
- package/pane-resizer/README.md +7 -0
- package/popover/README.md +8 -1
- package/progress/README.md +7 -0
- package/radio-group/README.md +7 -0
- package/scroll-area/README.md +6 -0
- package/search/README.md +6 -0
- package/select/README.md +10 -2
- package/separator/README.md +6 -0
- package/shared/README.md +6 -0
- package/slider/README.md +7 -0
- package/stepper/README.md +7 -0
- package/switch/README.md +7 -0
- package/table/README.md +89 -16
- package/table-virtualization/README.md +38 -10
- package/tabs/README.md +7 -0
- package/time-field/README.md +9 -2
- package/time-picker/README.md +8 -0
- package/toast/README.md +7 -0
- package/toggle/README.md +7 -0
- package/toolbar/README.md +7 -0
- package/tooltip/README.md +7 -0
- package/tree/README.md +8 -1
- package/types/forty-cdk-listbox.d.ts +4 -1
- package/types/forty-cdk-select.d.ts +15 -1
- package/types/forty-cdk-table-virtualization.d.ts +18 -3
- package/types/forty-cdk-table.d.ts +78 -25
- package/types/forty-cdk-time-picker.d.ts +13 -1
- package/virtual-reorder/README.md +7 -1
- package/virtualization/README.md +6 -0
- package/visually-hidden/README.md +6 -0
package/accordion/README.md
CHANGED
package/aspect-ratio/README.md
CHANGED
package/avatar/README.md
CHANGED
package/breadcrumbs/README.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Breadcrumbs
|
|
3
|
+
group: primitives
|
|
4
|
+
archetype: [composable-ui]
|
|
5
|
+
apgUrl: https://www.w3.org/WAI/ARIA/apg/patterns/breadcrumb/
|
|
6
|
+
---
|
|
7
|
+
|
|
1
8
|
# Breadcrumbs
|
|
2
9
|
|
|
3
10
|
A labelled navigation landmark for a breadcrumb trail: links with aria-current='page' on the current page and decorative separators hidden from assistive technology.
|
package/breakpoints/README.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Breakpoints
|
|
3
|
+
group: utilities
|
|
4
|
+
archetype: [headless-utility]
|
|
5
|
+
---
|
|
6
|
+
|
|
1
7
|
# Breakpoints
|
|
2
8
|
|
|
3
9
|
A signal-first, zoneless, SSR-safe viewport breakpoint observer (injectBreakpoints). Configure the breakpoint map once via provideForBreakpointsDefaults — or use the Tailwind scale by default — then read up / down / between / only / active or any arbitrary media query, each as a live Signal<boolean>.
|
package/button/README.md
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Button
|
|
3
|
+
group: primitives
|
|
4
|
+
archetype: [composable-ui]
|
|
5
|
+
apgUrl: https://www.w3.org/WAI/ARIA/apg/patterns/button/
|
|
6
|
+
---
|
|
7
|
+
|
|
1
8
|
# ForButton
|
|
2
9
|
|
|
3
|
-
Turns any element — a native
|
|
10
|
+
Turns any element — a native `<button>` or a custom host like `<div>` / `<span>` — into an accessible button with keyboard activation. Disabled stays focusable (aria-disabled, never the native attribute) and pressed / hovered / focus-visible are reflected as data-\* hooks.
|
|
4
11
|
|
|
5
12
|
A single `[forButton]` directive does all of this. On a native `<button>` host the platform owns Enter/Space activation and `type` handling; on any non-button host the directive adds `role="button"`, `tabindex="0"`, and keyboard activation so the contract matches.
|
|
6
13
|
|
package/calendar/README.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Calendar
|
|
3
|
+
group: primitives
|
|
4
|
+
archetype: [composable-ui, form-control]
|
|
5
|
+
apgUrl: https://www.w3.org/WAI/ARIA/apg/patterns/grid/
|
|
6
|
+
---
|
|
7
|
+
|
|
1
8
|
# Calendar
|
|
2
9
|
|
|
3
10
|
A single-date calendar grid implementing the APG Grid pattern over a pluggable date adapter: roving-tabindex day navigation, month / year paging, and min / max / per-date availability.
|
|
@@ -26,6 +33,8 @@ bootstrapApplication(App, {
|
|
|
26
33
|
|
|
27
34
|
`@internationalized/date` is a widely-used immutable date primitive; it works in every browser today with no polyfill, and its reference-equality-on-mutation makes it signal-friendly.
|
|
28
35
|
|
|
36
|
+
→ **[Date adapters](../../../docs/date-adapters.md)** — picking one, the optional peer dependency, and writing your own.
|
|
37
|
+
|
|
29
38
|
**Calendar system (Gregorian).** The adapter seam abstracts the date _library_ and locale-aware _formatting_, not the calendar _system_'s month structure. Both `@internationalized/date` adapters build Gregorian dates, so the grid stays Gregorian regardless of the runtime locale, and the grid, the month picker and the date field all assume a Gregorian-structured year — exactly twelve months, `month` **1-12**, the year ending at month 12. Adapters over calendars with a different month structure (e.g. a 13-month year) are not supported. The optional `compareDate` hook overrides day-only _ordering_ only — it does not make the grid non-Gregorian.
|
|
30
39
|
|
|
31
40
|
## Anatomy
|
|
@@ -401,7 +410,7 @@ Auto-disabled when the entire previous / next page would be outside `[min, max]`
|
|
|
401
410
|
| `[forCalendarYearCell]` | `data-highlighted` | present \| absent |
|
|
402
411
|
| `[forCalendarYearCell]` | `data-disabled` | present \| absent |
|
|
403
412
|
|
|
404
|
-
##
|
|
413
|
+
## Scoped defaults
|
|
405
414
|
|
|
406
415
|
```ts
|
|
407
416
|
import { provideForCalendarDefaults } from 'forty-cdk/calendar';
|
package/carousel/README.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Carousel
|
|
3
|
+
group: primitives
|
|
4
|
+
archetype: [composable-ui]
|
|
5
|
+
apgUrl: https://www.w3.org/WAI/ARIA/apg/patterns/carousel/
|
|
6
|
+
---
|
|
7
|
+
|
|
1
8
|
# ForCarousel
|
|
2
9
|
|
|
3
10
|
A slideshow of content panels with previous / next controls, an indicator group, optional looping and multi-slide views, and an accessible autoplay mode with a pause control.
|
package/checkbox/README.md
CHANGED
package/combobox/README.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Combobox
|
|
3
|
+
group: primitives
|
|
4
|
+
archetype: [overlay, form-control]
|
|
5
|
+
apgUrl: https://www.w3.org/WAI/ARIA/apg/patterns/combobox/
|
|
6
|
+
---
|
|
7
|
+
|
|
1
8
|
# Combobox
|
|
2
9
|
|
|
3
10
|
An editable input paired with a filterable listbox popup, supporting single or multi selection with chips.
|
|
@@ -259,7 +266,7 @@ An action:
|
|
|
259
266
|
|
|
260
267
|
Use `[forComboboxAction]` for a pinned side-effect. For an entry that _does_
|
|
261
268
|
select (an "Add new" row that adds an item and commits it to `value`), use a
|
|
262
|
-
plain `[forComboboxOption]` — see
|
|
269
|
+
plain `[forComboboxOption]` — see the static options under [Examples](#examples).
|
|
263
270
|
|
|
264
271
|
### Focus & keyboard (model A)
|
|
265
272
|
|
package/context-menu/README.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Context Menu
|
|
3
|
+
group: primitives
|
|
4
|
+
archetype: [overlay]
|
|
5
|
+
apgUrl: https://www.w3.org/WAI/ARIA/apg/patterns/menu/
|
|
6
|
+
---
|
|
7
|
+
|
|
1
8
|
# ContextMenu
|
|
2
9
|
|
|
3
10
|
A menu opened by right-click or long-press, anchored to the pointer position.
|
|
@@ -140,7 +147,7 @@ Both triggers carry `[menuPositioning]`, a partial `{ side, align, sideOffset, a
|
|
|
140
147
|
|
|
141
148
|
Same vetoable dismiss API as DropdownMenu. Call `preventDefault()` on the emitted veto to suppress the directive's default action; the original DOM event, when present, is on `.event`.
|
|
142
149
|
|
|
143
|
-
`(autoFocusOnOpen)` / `(autoFocusOnClose)` are output-shape because ContextMenu always routes close transitions through `[(open)]` (via the implicit `openChange` emitter).
|
|
150
|
+
`(autoFocusOnOpen)` / `(autoFocusOnClose)` are output-shape because ContextMenu always routes close transitions through `[(open)]` (via the implicit `openChange` emitter). Dialog and Drawer take callback-shape inputs for the same pair instead: either can be closed by a direct `open.set(false)` that bypasses the `(dismiss)` output entirely, so their close hook has to be a stored function reference that still runs during teardown.
|
|
144
151
|
|
|
145
152
|
### Data attributes
|
|
146
153
|
|
package/date-field/README.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Date Field
|
|
3
|
+
group: primitives
|
|
4
|
+
archetype: [form-control]
|
|
5
|
+
apgUrl: https://www.w3.org/WAI/ARIA/apg/patterns/spinbutton/
|
|
6
|
+
---
|
|
7
|
+
|
|
1
8
|
# DateField
|
|
2
9
|
|
|
3
10
|
A segmented date (and optional time) input over a pluggable date adapter — each part a spinbutton with keyboard stepping, locale-driven segment order and min / max clamping.
|
|
@@ -171,7 +178,7 @@ Set `granularity` to `'hour'`, `'minute'`, or `'second'` (`granularity > 'day'`)
|
|
|
171
178
|
|
|
172
179
|
On the AM/PM segment, `a` / `p` set the period and ArrowUp / ArrowDown toggle it; the period is derived from the entered hour, so clearing it is a no-op (clear or step the hour instead). The value stays `null` until every visible segment — date **and** time — is filled.
|
|
173
180
|
|
|
174
|
-
##
|
|
181
|
+
## Scoped defaults
|
|
175
182
|
|
|
176
183
|
```ts
|
|
177
184
|
import { provideForDateFieldDefaults } from 'forty-cdk/date-field';
|
|
@@ -256,7 +263,7 @@ The two endpoints are typed independently, so order is not guaranteed by constru
|
|
|
256
263
|
|
|
257
264
|
Each endpoint is its own tab stop, so `Tab` moves start group → end group → next control; arrows move between segments **within** an endpoint. Every other key behaves as in the [Keyboard](#keyboard) table below. Roving tabindex is per endpoint, and `aria-invalid="true"` is reflected on the root when the form marks it invalid **or** when two complete endpoints are out of order; everything else matches the [Accessibility](#accessibility) notes below.
|
|
258
265
|
|
|
259
|
-
### Range
|
|
266
|
+
### Range scoped defaults
|
|
260
267
|
|
|
261
268
|
`provideForDateRangeFieldDefaults` mirrors `provideForDateFieldDefaults` and adds `startLabel` / `endLabel` for the two endpoint group `aria-label`s (`'Start date'` / `'End date'` by default). Both wrapper patterns work via `FOR_DATE_RANGE_FIELD_HOST_DIRECTIVE_INPUTS` / `FOR_DATE_RANGE_FIELD_HOST_DIRECTIVE_OUTPUTS` — see [Wrapping form primitives](../../../docs/wrapping-form-primitives.md).
|
|
262
269
|
|
package/date-picker/README.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Date Picker
|
|
3
|
+
group: primitives
|
|
4
|
+
archetype: [overlay, form-control]
|
|
5
|
+
apgUrl: https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/examples/datepicker-dialog/
|
|
6
|
+
---
|
|
7
|
+
|
|
1
8
|
# DatePicker
|
|
2
9
|
|
|
3
10
|
A trigger that opens a floating calendar to pick a date, composing ForCalendar inside a dismissible popover with min / max bounds and per-date availability.
|
package/dialog/README.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Dialog
|
|
3
|
+
group: primitives
|
|
4
|
+
archetype: [overlay]
|
|
5
|
+
apgUrl: https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/
|
|
6
|
+
---
|
|
7
|
+
|
|
1
8
|
# Dialog
|
|
2
9
|
|
|
3
10
|
A modal window overlaid on the page, with a focus trap, scroll lock and Escape / dismiss handling. Also openable imperatively through ForDialogManager.
|
|
@@ -249,7 +256,7 @@ Keep `dismissible: true` (the default) so Escape still closes, and veto only the
|
|
|
249
256
|
|
|
250
257
|
### Inputs — focus callbacks
|
|
251
258
|
|
|
252
|
-
The auto-focus pair is bound as **function references** (input callbacks), not as event listeners. Each callback receives a `VetoableEvent` whose `preventDefault()` suppresses the directive's default focus action. This shape mirrors `ForDialogManager`'s `config.autoFocusOn*` callbacks and guarantees the `autoFocusOnClose` callback fires reliably on every close path — including a direct `open.set(false)` that bypasses the `(dismiss)` output.
|
|
259
|
+
The auto-focus pair is bound as **function references** (input callbacks), not as event listeners. Each callback receives a `VetoableEvent` whose `preventDefault()` suppresses the directive's default focus action. This shape mirrors `ForDialogManager`'s `config.autoFocusOn*` callbacks and guarantees the `autoFocusOnClose` callback fires reliably on every close path — including a direct `open.set(false)` that bypasses the `(dismiss)` output. The trigger-anchored overlays (Popover, DropdownMenu, Select, …) expose the same pair as **outputs** instead, because every close transition there runs through their own `[(open)]` model, so no path can bypass the emitter.
|
|
253
260
|
|
|
254
261
|
| Property | Type | Description |
|
|
255
262
|
| ------------------ | -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
package/disclosure/README.md
CHANGED
package/drag-drop/README.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Drag & Drop
|
|
3
|
+
group: utilities
|
|
4
|
+
archetype: [headless-utility]
|
|
5
|
+
---
|
|
6
|
+
|
|
1
7
|
# Drag & Drop
|
|
2
8
|
|
|
3
9
|
Headless, accessible drag-and-drop for sortable lists and cross-list transfers, driven by both keyboard and pointer. Ships drag handles, custom preview / placeholder templates, live-sort, FLIP reorder animations, auto-scroll, and boundary / axis-lock constraints.
|
|
@@ -369,8 +375,9 @@ A custom integration that cannot use either companion must supply the same three
|
|
|
369
375
|
mechanisms itself: map window-relative to absolute indices with the reusable
|
|
370
376
|
`translateWindowReorder` helper (`forty-cdk/core`), keep the lifted row mounted
|
|
371
377
|
for the duration of the drag, and step the keyboard target over the true total
|
|
372
|
-
count.
|
|
373
|
-
|
|
378
|
+
count. Miss any one of the three and the failure is silent — an index that
|
|
379
|
+
addresses the wrong row, a lifted row recycled mid-drag, or a keyboard move that
|
|
380
|
+
stops at the window edge.
|
|
374
381
|
|
|
375
382
|
## Data attributes
|
|
376
383
|
|
package/drawer/README.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Drawer
|
|
3
|
+
group: primitives
|
|
4
|
+
archetype: [overlay]
|
|
5
|
+
apgUrl: https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/
|
|
6
|
+
---
|
|
7
|
+
|
|
1
8
|
# Drawer
|
|
2
9
|
|
|
3
10
|
A side or bottom sheet built on the modal dialog pattern, adding pointer-driven swipe-to-dismiss and snap points.
|
package/dropdown-menu/README.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Dropdown Menu
|
|
3
|
+
group: primitives
|
|
4
|
+
archetype: [overlay]
|
|
5
|
+
apgUrl: https://www.w3.org/WAI/ARIA/apg/patterns/menu-button/
|
|
6
|
+
---
|
|
7
|
+
|
|
1
8
|
# DropdownMenu
|
|
2
9
|
|
|
3
10
|
A button that opens a menu of actions, with full keyboard navigation, typeahead and submenus.
|
|
@@ -156,7 +163,7 @@ Angular resolves `ng-template` DI at the template's **declaration** site, not wh
|
|
|
156
163
|
|
|
157
164
|
Every output above is vetoable — each handler receives a `VetoableEvent` (or `VetoableNativeEvent<E>` when there is a native DOM event). Call `preventDefault()` on the emitted veto to suppress the directive's default action; the original DOM event, when present, is on `.event`.
|
|
158
165
|
|
|
159
|
-
`(autoFocusOnOpen)` / `(autoFocusOnClose)` are output-shape because DropdownMenu always routes close transitions through `[(open)]` (via the implicit `openChange` emitter).
|
|
166
|
+
`(autoFocusOnOpen)` / `(autoFocusOnClose)` are output-shape because DropdownMenu always routes close transitions through `[(open)]` (via the implicit `openChange` emitter). Dialog and Drawer take callback-shape inputs for the same pair instead: either can be closed by a direct `open.set(false)` that bypasses the `(dismiss)` output entirely, so their close hook has to be a stored function reference that still runs during teardown.
|
|
160
167
|
|
|
161
168
|
### Data attributes
|
|
162
169
|
|
|
@@ -628,8 +628,11 @@ class ForListbox extends FormUiControlBase {
|
|
|
628
628
|
}
|
|
629
629
|
this.markTouched();
|
|
630
630
|
}
|
|
631
|
+
onPointerLeave() {
|
|
632
|
+
this.#pointerHost.set(null);
|
|
633
|
+
}
|
|
631
634
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: ForListbox, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
632
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.2", type: ForListbox, isStandalone: true, selector: "[forListbox]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, compareWith: { classPropertyName: "compareWith", publicName: "compareWith", isSignal: true, isRequired: false, transformFunction: null }, itemToFormValue: { classPropertyName: "itemToFormValue", publicName: "itemToFormValue", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, loop: { classPropertyName: "loop", publicName: "loop", isSignal: true, isRequired: false, transformFunction: null }, totalCount: { classPropertyName: "totalCount", publicName: "totalCount", isSignal: true, isRequired: false, transformFunction: null }, visibleRange: { classPropertyName: "visibleRange", publicName: "visibleRange", isSignal: true, isRequired: false, transformFunction: null }, dataVersion: { classPropertyName: "dataVersion", publicName: "dataVersion", isSignal: true, isRequired: false, transformFunction: null }, _dirInput: { classPropertyName: "_dirInput", publicName: "dir", isSignal: true, isRequired: false, transformFunction: null }, selectionFollowsFocus: { classPropertyName: "selectionFollowsFocus", publicName: "selectionFollowsFocus", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", scrollToIndex: "scrollToIndex" }, host: { attributes: { "role": "listbox" }, listeners: { "keydown": "onHostKeyDown($event)", "focusin": "onHostFocusIn()", "focusout": "onFocusOut($event)" }, properties: { "attr.aria-label": "resolvedAriaLabel()", "attr.aria-orientation": "orientation()", "attr.aria-multiselectable": "multiple() ? \"true\" : null", "attr.aria-disabled": "effectiveDisabled() ? \"true\" : null", "attr.aria-readonly": "readonly() ? \"true\" : null", "attr.aria-required": "required() ? \"true\" : null", "attr.aria-invalid": "invalid() ? \"true\" : null", "attr.aria-busy": "pending() ? \"true\" : null", "attr.aria-activedescendant": "activeDescendantId()", "attr.tabindex": "hostTabindex()", "attr.data-orientation": "orientation()", "attr.data-disabled": "effectiveDisabled() ? \"\" : null", "attr.data-readonly": "readonly() ? \"\" : null", "attr.dir": "dir()" } }, providers: [{ provide: FOR_LISTBOX_CONTEXT, useExisting: ForListbox }], exportAs: ["forListbox"], usesInheritance: true, ngImport: i0 });
|
|
635
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.2", type: ForListbox, isStandalone: true, selector: "[forListbox]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, compareWith: { classPropertyName: "compareWith", publicName: "compareWith", isSignal: true, isRequired: false, transformFunction: null }, itemToFormValue: { classPropertyName: "itemToFormValue", publicName: "itemToFormValue", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, loop: { classPropertyName: "loop", publicName: "loop", isSignal: true, isRequired: false, transformFunction: null }, totalCount: { classPropertyName: "totalCount", publicName: "totalCount", isSignal: true, isRequired: false, transformFunction: null }, visibleRange: { classPropertyName: "visibleRange", publicName: "visibleRange", isSignal: true, isRequired: false, transformFunction: null }, dataVersion: { classPropertyName: "dataVersion", publicName: "dataVersion", isSignal: true, isRequired: false, transformFunction: null }, _dirInput: { classPropertyName: "_dirInput", publicName: "dir", isSignal: true, isRequired: false, transformFunction: null }, selectionFollowsFocus: { classPropertyName: "selectionFollowsFocus", publicName: "selectionFollowsFocus", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", scrollToIndex: "scrollToIndex" }, host: { attributes: { "role": "listbox" }, listeners: { "keydown": "onHostKeyDown($event)", "focusin": "onHostFocusIn()", "focusout": "onFocusOut($event)", "pointerleave": "onPointerLeave()" }, properties: { "attr.aria-label": "resolvedAriaLabel()", "attr.aria-orientation": "orientation()", "attr.aria-multiselectable": "multiple() ? \"true\" : null", "attr.aria-disabled": "effectiveDisabled() ? \"true\" : null", "attr.aria-readonly": "readonly() ? \"true\" : null", "attr.aria-required": "required() ? \"true\" : null", "attr.aria-invalid": "invalid() ? \"true\" : null", "attr.aria-busy": "pending() ? \"true\" : null", "attr.aria-activedescendant": "activeDescendantId()", "attr.tabindex": "hostTabindex()", "attr.data-orientation": "orientation()", "attr.data-disabled": "effectiveDisabled() ? \"\" : null", "attr.data-readonly": "readonly() ? \"\" : null", "attr.dir": "dir()" } }, providers: [{ provide: FOR_LISTBOX_CONTEXT, useExisting: ForListbox }], exportAs: ["forListbox"], usesInheritance: true, ngImport: i0 });
|
|
633
636
|
}
|
|
634
637
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: ForListbox, decorators: [{
|
|
635
638
|
type: Directive,
|
|
@@ -655,6 +658,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImpor
|
|
|
655
658
|
'(keydown)': 'onHostKeyDown($event)',
|
|
656
659
|
'(focusin)': 'onHostFocusIn()',
|
|
657
660
|
'(focusout)': 'onFocusOut($event)',
|
|
661
|
+
'(pointerleave)': 'onPointerLeave()',
|
|
658
662
|
},
|
|
659
663
|
providers: [{ provide: FOR_LISTBOX_CONTEXT, useExisting: ForListbox }],
|
|
660
664
|
}]
|
|
@@ -685,6 +689,8 @@ const FOR_LISTBOX_OPTION = new InjectionToken('FOR_LISTBOX_OPTION');
|
|
|
685
689
|
|
|
686
690
|
|
|
687
691
|
|
|
692
|
+
|
|
693
|
+
|
|
688
694
|
class ForListboxOption {
|
|
689
695
|
buttonType = hostButtonType();
|
|
690
696
|
#group = injectListboxContext('ForListboxOption');
|