@sectile/vue 0.18.0 → 0.18.2
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/dist/accordion.d.ts +1 -1
- package/dist/accordion.js +1 -1
- package/dist/carousel.d.ts +1 -1
- package/dist/carousel.js +1 -1
- package/dist/cascade-list.js +1 -1
- package/dist/cascade-list.js.map +1 -1
- package/dist/cascade-select.js +1 -1
- package/dist/cascade-select.js.map +1 -1
- package/dist/checkbox-group.js +1 -1
- package/dist/checkbox-group.js.map +1 -1
- package/dist/checkbox.d.ts +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/checkbox.js.map +1 -1
- package/dist/color-picker.js +1 -1
- package/dist/color-picker.js.map +1 -1
- package/dist/combobox.d.ts +1 -1
- package/dist/combobox.js +1 -1
- package/dist/combobox.js.map +1 -1
- package/dist/disclosure.d.ts +1 -1
- package/dist/disclosure.js +1 -1
- package/dist/editable.js +1 -1
- package/dist/editable.js.map +1 -1
- package/dist/{internal/form-context.d.ts → form/context.d.ts} +3 -2
- package/dist/{internal/form-context.js → form/context.js} +2 -2
- package/dist/form/context.js.map +1 -0
- package/dist/form/contracts.d.ts +219 -0
- package/dist/form/contracts.js +2 -0
- package/dist/form/contracts.js.map +1 -0
- package/dist/{internal/form-control-inventory.js → form/control-inventory.js} +1 -1
- package/dist/form/control-inventory.js.map +1 -0
- package/dist/{internal/form-control.js → form/control.js} +1 -1
- package/dist/form/control.js.map +1 -0
- package/dist/form/field.d.ts +81 -0
- package/dist/form/field.js +2 -0
- package/dist/form/field.js.map +1 -0
- package/dist/form/native.d.ts +15 -0
- package/dist/form/native.js +2 -0
- package/dist/form/native.js.map +1 -0
- package/dist/form/part.d.ts +16 -0
- package/dist/form/part.js +2 -0
- package/dist/form/part.js.map +1 -0
- package/dist/form/parts.d.ts +93 -0
- package/dist/form/parts.js +2 -0
- package/dist/form/parts.js.map +1 -0
- package/dist/{internal/form-presence-parts.d.ts → form/presence-parts.d.ts} +1 -1
- package/dist/form/presence-parts.js +2 -0
- package/dist/form/presence-parts.js.map +1 -0
- package/dist/form/root.d.ts +2 -0
- package/dist/form/root.js +2 -0
- package/dist/form/root.js.map +1 -0
- package/dist/form/selectors.d.ts +7 -0
- package/dist/form/selectors.js +2 -0
- package/dist/form/selectors.js.map +1 -0
- package/dist/form.d.ts +8 -398
- package/dist/form.js +1 -1
- package/dist/form.js.map +1 -1
- package/dist/grid.js +1 -1
- package/dist/grid.js.map +1 -1
- package/dist/index.d.ts +10 -10
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/input/decimal-input.js.map +1 -0
- package/dist/input/native-field.js +2 -0
- package/dist/input/native-field.js.map +1 -0
- package/dist/input/native-input.js.map +1 -0
- package/dist/input/native-text-state.d.ts +2 -0
- package/dist/input/native-text-state.js +2 -0
- package/dist/input/native-text-state.js.map +1 -0
- package/dist/internal/cascade-choice.d.ts +1 -1
- package/dist/internal/cascade-choice.js +1 -1
- package/dist/internal/cascade-choice.js.map +1 -1
- package/dist/internal/collection.d.ts +2 -0
- package/dist/internal/collection.js +1 -1
- package/dist/internal/collection.js.map +1 -1
- package/dist/listbox.d.ts +1 -1
- package/dist/listbox.js +1 -1
- package/dist/listbox.js.map +1 -1
- package/dist/menu.js +1 -1
- package/dist/menu.js.map +1 -1
- package/dist/meter-group.js +1 -1
- package/dist/meter-group.js.map +1 -1
- package/dist/meter.js +1 -1
- package/dist/meter.js.map +1 -1
- package/dist/multi-thumb-slider.js +1 -1
- package/dist/multi-thumb-slider.js.map +1 -1
- package/dist/navigation-menu.d.ts +1 -1
- package/dist/navigation-menu.js +1 -1
- package/dist/number-field.d.ts +1 -1
- package/dist/number-field.js +1 -1
- package/dist/number-field.js.map +1 -1
- package/dist/{alert-dialog.d.ts → overlay/alert-dialog.d.ts} +1 -1
- package/dist/overlay/alert-dialog.js +2 -0
- package/dist/overlay/alert-dialog.js.map +1 -0
- package/dist/{dialog.d.ts → overlay/dialog.d.ts} +1 -1
- package/dist/overlay/dialog.js +2 -0
- package/dist/overlay/dialog.js.map +1 -0
- package/dist/{drawer.d.ts → overlay/drawer.d.ts} +1 -1
- package/dist/overlay/drawer.js +2 -0
- package/dist/overlay/drawer.js.map +1 -0
- package/dist/{popover.d.ts → overlay/popover.d.ts} +1 -1
- package/dist/overlay/popover.js +2 -0
- package/dist/overlay/popover.js.map +1 -0
- package/dist/overlay/popup.js +2 -0
- package/dist/overlay/popup.js.map +1 -0
- package/dist/{tooltip.d.ts → overlay/tooltip.d.ts} +1 -1
- package/dist/overlay/tooltip.js +2 -0
- package/dist/overlay/tooltip.js.map +1 -0
- package/dist/pin-input.js +1 -1
- package/dist/pin-input.js.map +1 -1
- package/dist/{internal → presence}/conditional-presence.js.map +1 -1
- package/dist/{internal → presence}/presence.js.map +1 -1
- package/dist/progress.js +1 -1
- package/dist/progress.js.map +1 -1
- package/dist/quantity-field.js +1 -1
- package/dist/quantity-field.js.map +1 -1
- package/dist/radio-group.d.ts +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/radio-group.js.map +1 -1
- package/dist/select.d.ts +1 -1
- package/dist/select.js +1 -1
- package/dist/select.js.map +1 -1
- package/dist/slider.js +1 -1
- package/dist/slider.js.map +1 -1
- package/dist/spin-button.js +1 -1
- package/dist/spin-button.js.map +1 -1
- package/dist/switch.js +1 -1
- package/dist/switch.js.map +1 -1
- package/dist/tabs.d.ts +1 -1
- package/dist/tabs.js +1 -1
- package/dist/{internal/tabular-components.d.ts → tabular/components.d.ts} +1 -1
- package/dist/{internal/tabular-components.js → tabular/components.js} +1 -1
- package/dist/tabular/components.js.map +1 -0
- package/dist/tabular/context.d.ts +16 -0
- package/dist/tabular/context.js +2 -0
- package/dist/tabular/context.js.map +1 -0
- package/dist/{internal/tabular-profile.d.ts → tabular/controller.d.ts} +2 -32
- package/dist/tabular/controller.js +2 -0
- package/dist/tabular/controller.js.map +1 -0
- package/dist/{data-grid.d.ts → tabular/data-grid.d.ts} +7 -5
- package/dist/tabular/data-grid.js +2 -0
- package/dist/tabular/data-grid.js.map +1 -0
- package/dist/{data-table.d.ts → tabular/data-table.d.ts} +9 -36
- package/dist/tabular/data-table.js +2 -0
- package/dist/tabular/data-table.js.map +1 -0
- package/dist/{data-tree-grid.d.ts → tabular/data-tree-grid.d.ts} +7 -5
- package/dist/tabular/data-tree-grid.js +2 -0
- package/dist/tabular/data-tree-grid.js.map +1 -0
- package/dist/{internal/tabular-parts.d.ts → tabular/parts.d.ts} +2 -1
- package/dist/tabular/parts.js +2 -0
- package/dist/tabular/parts.js.map +1 -0
- package/dist/tabular/schema.d.ts +35 -0
- package/dist/tabular/schema.js +2 -0
- package/dist/tabular/schema.js.map +1 -0
- package/dist/tabular/source.d.ts +20 -0
- package/dist/tabular/source.js +2 -0
- package/dist/tabular/source.js.map +1 -0
- package/dist/tags-input.js +1 -1
- package/dist/tags-input.js.map +1 -1
- package/dist/{calendar.d.ts → temporal/calendar.d.ts} +21 -21
- package/dist/temporal/calendar.js +2 -0
- package/dist/temporal/calendar.js.map +1 -0
- package/dist/temporal/capabilities/calendar.d.ts +1 -0
- package/dist/temporal/capabilities/calendar.js +2 -0
- package/dist/temporal/capabilities/calendar.js.map +1 -0
- package/dist/temporal/capabilities/date-picker.d.ts +1 -0
- package/dist/temporal/capabilities/date-picker.js +2 -0
- package/dist/temporal/capabilities/date-picker.js.map +1 -0
- package/dist/temporal/capabilities/date-range-picker.d.ts +1 -0
- package/dist/temporal/capabilities/date-range-picker.js +2 -0
- package/dist/temporal/capabilities/date-range-picker.js.map +1 -0
- package/dist/temporal/capabilities/date-time-picker.d.ts +1 -0
- package/dist/temporal/capabilities/date-time-picker.js +2 -0
- package/dist/temporal/capabilities/date-time-picker.js.map +1 -0
- package/dist/temporal/capabilities/date-time-range-picker.d.ts +1 -0
- package/dist/temporal/capabilities/date-time-range-picker.js +2 -0
- package/dist/temporal/capabilities/date-time-range-picker.js.map +1 -0
- package/dist/temporal/capabilities/month-picker.d.ts +1 -0
- package/dist/temporal/capabilities/month-picker.js +2 -0
- package/dist/temporal/capabilities/month-picker.js.map +1 -0
- package/dist/temporal/capabilities/month-range-picker.d.ts +1 -0
- package/dist/temporal/capabilities/month-range-picker.js +2 -0
- package/dist/temporal/capabilities/month-range-picker.js.map +1 -0
- package/dist/temporal/capabilities/range-calendar.d.ts +1 -0
- package/dist/temporal/capabilities/range-calendar.js +2 -0
- package/dist/temporal/capabilities/range-calendar.js.map +1 -0
- package/dist/temporal/capabilities/year-picker.d.ts +1 -0
- package/dist/temporal/capabilities/year-picker.js +2 -0
- package/dist/temporal/capabilities/year-picker.js.map +1 -0
- package/dist/temporal/capabilities/year-range-picker.d.ts +1 -0
- package/dist/temporal/capabilities/year-range-picker.js +2 -0
- package/dist/temporal/capabilities/year-range-picker.js.map +1 -0
- package/dist/{internal/picker-capability.js → temporal/capability.js} +1 -1
- package/dist/temporal/capability.js.map +1 -0
- package/dist/{date-field.d.ts → temporal/date-field.d.ts} +1 -1
- package/dist/temporal/date-field.js +2 -0
- package/dist/temporal/date-field.js.map +1 -0
- package/dist/{date-picker.d.ts → temporal/date-picker.d.ts} +24 -24
- package/dist/temporal/date-picker.js +2 -0
- package/dist/temporal/date-picker.js.map +1 -0
- package/dist/{date-range-field.d.ts → temporal/date-range-field.d.ts} +1 -1
- package/dist/temporal/date-range-field.js +2 -0
- package/dist/temporal/date-range-field.js.map +1 -0
- package/dist/{date-range-picker.d.ts → temporal/date-range-picker.d.ts} +27 -27
- package/dist/temporal/date-range-picker.js +2 -0
- package/dist/temporal/date-range-picker.js.map +1 -0
- package/dist/{date-time-field.d.ts → temporal/date-time-field.d.ts} +1 -1
- package/dist/temporal/date-time-field.js +2 -0
- package/dist/temporal/date-time-field.js.map +1 -0
- package/dist/{date-time-picker.d.ts → temporal/date-time-picker.d.ts} +30 -30
- package/dist/temporal/date-time-picker.js +2 -0
- package/dist/temporal/date-time-picker.js.map +1 -0
- package/dist/{date-time-range-picker.d.ts → temporal/date-time-range-picker.d.ts} +39 -39
- package/dist/temporal/date-time-range-picker.js +2 -0
- package/dist/temporal/date-time-range-picker.js.map +1 -0
- package/dist/{month-picker.d.ts → temporal/month-picker.d.ts} +14 -14
- package/dist/temporal/month-picker.js +2 -0
- package/dist/temporal/month-picker.js.map +1 -0
- package/dist/{month-range-picker.d.ts → temporal/month-range-picker.d.ts} +17 -17
- package/dist/temporal/month-range-picker.js +2 -0
- package/dist/temporal/month-range-picker.js.map +1 -0
- package/dist/{internal/date-picker.d.ts → temporal/picker.d.ts} +1 -1
- package/dist/temporal/picker.js +2 -0
- package/dist/temporal/picker.js.map +1 -0
- package/dist/{range-calendar.d.ts → temporal/range-calendar.d.ts} +11 -11
- package/dist/temporal/range-calendar.js +2 -0
- package/dist/temporal/range-calendar.js.map +1 -0
- package/dist/temporal/temporal-provider.js.map +1 -0
- package/dist/{time-field.d.ts → temporal/time-field.d.ts} +1 -1
- package/dist/temporal/time-field.js +2 -0
- package/dist/temporal/time-field.js.map +1 -0
- package/dist/{time-range-field.d.ts → temporal/time-range-field.d.ts} +1 -1
- package/dist/temporal/time-range-field.js +2 -0
- package/dist/temporal/time-range-field.js.map +1 -0
- package/dist/{year-picker.d.ts → temporal/year-picker.d.ts} +16 -16
- package/dist/temporal/year-picker.js +2 -0
- package/dist/temporal/year-picker.js.map +1 -0
- package/dist/{year-range-picker.d.ts → temporal/year-range-picker.d.ts} +19 -19
- package/dist/temporal/year-range-picker.js +2 -0
- package/dist/temporal/year-range-picker.js.map +1 -0
- package/dist/text.js +1 -1
- package/dist/text.js.map +1 -1
- package/dist/toast.js +1 -1
- package/dist/toggle-group.js +1 -1
- package/dist/toggle-group.js.map +1 -1
- package/dist/tree-grid.d.ts +1 -1
- package/dist/tree-grid.js +1 -1
- package/dist/tree-grid.js.map +1 -1
- package/dist/tree-view.d.ts +1 -1
- package/dist/tree-view.js +1 -1
- package/dist/virtual/virtual-collection.js.map +1 -0
- package/dist/virtual/virtual-core.js +2 -0
- package/dist/virtual/virtual-core.js.map +1 -0
- package/dist/{virtual-grid.d.ts → virtual/virtual-grid.d.ts} +1 -1
- package/dist/virtual/virtual-grid.js +2 -0
- package/dist/virtual/virtual-grid.js.map +1 -0
- package/dist/virtual/virtual-list.js.map +1 -0
- package/dist/{virtual-masonry.d.ts → virtual/virtual-masonry.d.ts} +1 -1
- package/dist/virtual/virtual-masonry.js +2 -0
- package/dist/virtual/virtual-masonry.js.map +1 -0
- package/dist/{virtual-spatial.d.ts → virtual/virtual-spatial.d.ts} +1 -1
- package/dist/virtual/virtual-spatial.js +2 -0
- package/dist/virtual/virtual-spatial.js.map +1 -0
- package/dist/virtual-core.d.ts +1 -1
- package/dist/virtual-core.js +1 -1
- package/dist/virtual-list.d.ts +2 -2
- package/dist/virtual-list.js +1 -1
- package/package.json +94 -94
- package/dist/alert-dialog.js +0 -2
- package/dist/alert-dialog.js.map +0 -1
- package/dist/calendar.js +0 -2
- package/dist/calendar.js.map +0 -1
- package/dist/data-grid.js +0 -2
- package/dist/data-grid.js.map +0 -1
- package/dist/data-table.js +0 -2
- package/dist/data-table.js.map +0 -1
- package/dist/data-tree-grid.js +0 -2
- package/dist/data-tree-grid.js.map +0 -1
- package/dist/date-field.js +0 -2
- package/dist/date-field.js.map +0 -1
- package/dist/date-picker.js +0 -2
- package/dist/date-picker.js.map +0 -1
- package/dist/date-range-field.js +0 -2
- package/dist/date-range-field.js.map +0 -1
- package/dist/date-range-picker.js +0 -2
- package/dist/date-range-picker.js.map +0 -1
- package/dist/date-time-field.js +0 -2
- package/dist/date-time-field.js.map +0 -1
- package/dist/date-time-picker.js +0 -2
- package/dist/date-time-picker.js.map +0 -1
- package/dist/date-time-range-picker.js +0 -2
- package/dist/date-time-range-picker.js.map +0 -1
- package/dist/dialog.js +0 -2
- package/dist/dialog.js.map +0 -1
- package/dist/drawer.js +0 -2
- package/dist/drawer.js.map +0 -1
- package/dist/internal/calendar-capability.d.ts +0 -1
- package/dist/internal/calendar-capability.js +0 -2
- package/dist/internal/calendar-capability.js.map +0 -1
- package/dist/internal/date-picker-capability.d.ts +0 -1
- package/dist/internal/date-picker-capability.js +0 -2
- package/dist/internal/date-picker-capability.js.map +0 -1
- package/dist/internal/date-picker.js +0 -2
- package/dist/internal/date-picker.js.map +0 -1
- package/dist/internal/date-range-picker-capability.d.ts +0 -1
- package/dist/internal/date-range-picker-capability.js +0 -2
- package/dist/internal/date-range-picker-capability.js.map +0 -1
- package/dist/internal/date-time-picker-capability.d.ts +0 -1
- package/dist/internal/date-time-picker-capability.js +0 -2
- package/dist/internal/date-time-picker-capability.js.map +0 -1
- package/dist/internal/date-time-range-picker-capability.d.ts +0 -1
- package/dist/internal/date-time-range-picker-capability.js +0 -2
- package/dist/internal/date-time-range-picker-capability.js.map +0 -1
- package/dist/internal/decimal-input.js.map +0 -1
- package/dist/internal/form-context.js.map +0 -1
- package/dist/internal/form-control-inventory.js.map +0 -1
- package/dist/internal/form-control.js.map +0 -1
- package/dist/internal/form-presence-parts.js +0 -2
- package/dist/internal/form-presence-parts.js.map +0 -1
- package/dist/internal/month-picker-capability.d.ts +0 -1
- package/dist/internal/month-picker-capability.js +0 -2
- package/dist/internal/month-picker-capability.js.map +0 -1
- package/dist/internal/month-range-picker-capability.d.ts +0 -1
- package/dist/internal/month-range-picker-capability.js +0 -2
- package/dist/internal/month-range-picker-capability.js.map +0 -1
- package/dist/internal/native-field.js +0 -2
- package/dist/internal/native-field.js.map +0 -1
- package/dist/internal/native-input.js.map +0 -1
- package/dist/internal/picker-capability.js.map +0 -1
- package/dist/internal/popup.js +0 -2
- package/dist/internal/popup.js.map +0 -1
- package/dist/internal/range-calendar-capability.d.ts +0 -1
- package/dist/internal/range-calendar-capability.js +0 -2
- package/dist/internal/range-calendar-capability.js.map +0 -1
- package/dist/internal/tabular-components.js.map +0 -1
- package/dist/internal/tabular-parts.js +0 -2
- package/dist/internal/tabular-parts.js.map +0 -1
- package/dist/internal/tabular-profile.js +0 -2
- package/dist/internal/tabular-profile.js.map +0 -1
- package/dist/internal/virtual-collection.js.map +0 -1
- package/dist/internal/virtual-core.js +0 -2
- package/dist/internal/virtual-core.js.map +0 -1
- package/dist/internal/virtual-list.js.map +0 -1
- package/dist/internal/year-picker-capability.d.ts +0 -1
- package/dist/internal/year-picker-capability.js +0 -2
- package/dist/internal/year-picker-capability.js.map +0 -1
- package/dist/internal/year-range-picker-capability.d.ts +0 -1
- package/dist/internal/year-range-picker-capability.js +0 -2
- package/dist/internal/year-range-picker-capability.js.map +0 -1
- package/dist/month-picker.js +0 -2
- package/dist/month-picker.js.map +0 -1
- package/dist/month-range-picker.js +0 -2
- package/dist/month-range-picker.js.map +0 -1
- package/dist/popover.js +0 -2
- package/dist/popover.js.map +0 -1
- package/dist/range-calendar.js +0 -2
- package/dist/range-calendar.js.map +0 -1
- package/dist/temporal-provider.js.map +0 -1
- package/dist/time-field.js +0 -2
- package/dist/time-field.js.map +0 -1
- package/dist/time-range-field.js +0 -2
- package/dist/time-range-field.js.map +0 -1
- package/dist/tooltip.js +0 -2
- package/dist/tooltip.js.map +0 -1
- package/dist/virtual-grid.js +0 -2
- package/dist/virtual-grid.js.map +0 -1
- package/dist/virtual-masonry.js +0 -2
- package/dist/virtual-masonry.js.map +0 -1
- package/dist/virtual-spatial.js +0 -2
- package/dist/virtual-spatial.js.map +0 -1
- package/dist/year-picker.js +0 -2
- package/dist/year-picker.js.map +0 -1
- package/dist/year-range-picker.js +0 -2
- package/dist/year-range-picker.js.map +0 -1
- /package/dist/{internal/form-control-inventory.d.ts → form/control-inventory.d.ts} +0 -0
- /package/dist/{internal/form-control.d.ts → form/control.d.ts} +0 -0
- /package/dist/{internal → input}/decimal-input.d.ts +0 -0
- /package/dist/{internal → input}/decimal-input.js +0 -0
- /package/dist/{internal → input}/native-field.d.ts +0 -0
- /package/dist/{internal → input}/native-input.d.ts +0 -0
- /package/dist/{internal → input}/native-input.js +0 -0
- /package/dist/{internal → overlay}/popup.d.ts +0 -0
- /package/dist/{internal → presence}/conditional-presence.d.ts +0 -0
- /package/dist/{internal → presence}/conditional-presence.js +0 -0
- /package/dist/{internal → presence}/presence.d.ts +0 -0
- /package/dist/{internal → presence}/presence.js +0 -0
- /package/dist/{internal/picker-capability.d.ts → temporal/capability.d.ts} +0 -0
- /package/dist/{temporal-provider.d.ts → temporal/temporal-provider.d.ts} +0 -0
- /package/dist/{temporal-provider.js → temporal/temporal-provider.js} +0 -0
- /package/dist/{internal → virtual}/virtual-collection.d.ts +0 -0
- /package/dist/{internal → virtual}/virtual-collection.js +0 -0
- /package/dist/{internal → virtual}/virtual-core.d.ts +0 -0
- /package/dist/{internal → virtual}/virtual-list.d.ts +0 -0
- /package/dist/{internal → virtual}/virtual-list.js +0 -0
package/dist/combobox.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { type PropType, type SlotsType, type VNodeChild } from 'vue';
|
|
|
2
2
|
import { type ComboboxItem as ComboboxItemDefinition, type ComboboxPolicies } from '@sectile/dom/combobox';
|
|
3
3
|
import type { PositionBoundary, PositionOptions, PositionPadding, PositionStrategy, PositionTracking } from '@sectile/dom/position';
|
|
4
4
|
import { type PrimitiveAs } from './primitive.js';
|
|
5
|
-
import { type ConditionalPresenceProps } from './
|
|
5
|
+
import { type ConditionalPresenceProps } from './presence/conditional-presence.js';
|
|
6
6
|
export interface ComboboxRootProps extends Omit<PositionOptions, 'arrowPadding'> {
|
|
7
7
|
readonly items: readonly ComboboxItemDefinition<string>[];
|
|
8
8
|
readonly modelValue?: string | null;
|
package/dist/combobox.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{computed,defineComponent,h,inject,mergeProps,nextTick,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{createCombobox}from"@sectile/dom/combobox";import{createTextState}from"@sectile/dom/text";import{Primitive}from"./primitive.js";import{useNativeInputFormControl}from"./internal/form-control.js";import{reconcileCollectionState}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{usePresence}from"./internal/presence.js";import{conditionalPresenceProps,useConditionalPresence}from"./internal/conditional-presence.js";const key=Symbol("SectileComboboxRoot");const partProps={as:{type:[String,Object,Function],default:"span"},asChild:{type:Boolean,default:false}};const ComboboxRoot=defineComponent({name:"SectileComboboxRoot",inheritAttrs:false,props:{items:{type:Array,required:true},modelValue:{type:String,default:void 0},defaultValue:{type:String,default:null},inputValue:{type:String,default:void 0},defaultInputValue:{type:String,default:""},open:{type:Boolean,default:void 0},defaultOpen:{type:Boolean,default:false},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},label:{type:String,default:void 0},position:{type:Boolean,default:true},side:{type:String,default:"bottom"},align:{type:String,default:"start"},sideOffset:{type:Number,default:8},collisionPadding:{type:[Number,Object],default:8},collisionBoundary:{type:[String,Object],default:void 0},avoidCollisions:{type:Boolean,default:true},hideWhenDetached:{type:Boolean,default:false},strategy:{type:String,default:"absolute"},tracking:{type:String,default:"events"},policies:{type:Object,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,"update:inputValue":_value=>true,"update:open":_value=>true,highlight:_value=>true,accept:_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const input=shallowRef();const popup=shallowRef();const connection=shallowRef();const localValue=shallowRef(props.modelValue!==void 0?props.modelValue:props.defaultValue);const localInput=shallowRef(props.inputValue??props.defaultInputValue);const localOpen=shallowRef(props.open??props.defaultOpen);const highlighted=shallowRef(null);let proposedInputState=null;const controlled={value:useControlledStateInvariant("ComboboxRoot","modelValue",()=>props.modelValue),input:useControlledStateInvariant("ComboboxRoot","inputValue",()=>props.inputValue),open:useControlledStateInvariant("ComboboxRoot","open",()=>props.open)};const state=computed(()=>Object.freeze({value:props.modelValue!==void 0?props.modelValue:localValue.value,inputValue:props.inputValue??localInput.value,highlightedValue:highlighted.value,open:props.open??localOpen.value,disabled:props.disabled,readonly:props.readonly}));const itemLabels=computed(()=>new Map(props.items.map(item=>[item.id,item.label])));const matchingQuery=computed(()=>{const fallback=state.value.inputValue;const text=connection.value?.getSnapshot().state.text;return text===void 0?fallback:text.composition===null?text.snapshot.text:text.composition.baseline.text});const matchesItem=id=>{const label=itemLabels.value.get(id);if(label===void 0)return false;const matches=props.policies?.matches;return matches===void 0||matches(label,matchingQuery.value,id)};const hasMatches=()=>{for(const item of props.items){if(matchesItem(item.id))return true}return false};const refresh=()=>{const snapshot=connection.value?.getSnapshot().state;if(snapshot===void 0)return;localValue.value=snapshot.selection.selected[0]??null;localInput.value=snapshot.text.snapshot.text;localOpen.value=snapshot.popupOpen;highlighted.value=snapshot.cursor.current;refreshItems()};const refreshItems=()=>{if(popup.value===void 0||connection.value===void 0)return;popup.value.querySelectorAll("[data-sectile-combobox-id]").forEach(element=>{const id=element.dataset["sectileComboboxId"];if(id!==void 0)connection.value?.setItemAttributes(element,{id,disabled:element.dataset["disabled"]==="true"})})};const connect=()=>{connection.value?.disconnect();if(input.value===void 0)return;const items=props.items.map(item=>item.id);const requestedValue=controlled.value?props.modelValue:localValue.value;const reconciled=reconcileCollectionState(items,requestedValue===null?[]:[requestedValue],highlighted.value,[],"single",{preserveNullCurrent:true});const value=reconciled.selected[0]??null;localValue.value=value;highlighted.value=reconciled.current;if(controlled.value&&requestedValue!==value)emit("update:modelValue",value);connection.value=createCombobox({input:input.value,...popup.value===void 0?{}:{popup:popup.value},items:props.items,manageVisibility:false,...props.policies===void 0?{}:{policies:props.policies},...controlled.value?{value}:{defaultValue:value},defaultHighlightedValue:reconciled.current,...controlled.input?{inputState:createTextState(props.inputValue)}:{defaultInputState:createTextState(localInput.value)},...controlled.open?{open:props.open}:{defaultOpen:localOpen.value},disabled:props.disabled,readOnly:props.readonly,position:props.position,side:props.side,align:props.align,sideOffset:props.sideOffset,collisionPadding:props.collisionPadding,...props.collisionBoundary===void 0?{}:{collisionBoundary:props.collisionBoundary},avoidCollisions:props.avoidCollisions,hideWhenDetached:props.hideWhenDetached,strategy:props.strategy,tracking:props.tracking,onValueChange:({value:value2})=>{localValue.value=value2;emit("update:modelValue",value2)},onInputStateChange:({value:value2})=>{proposedInputState=value2;localInput.value=value2.snapshot.text;emit("update:inputValue",value2.snapshot.text);if(!controlled.input)return;const proposal=value2;void nextTick(()=>{if(connection.value===void 0||proposedInputState!==proposal)return;if(props.inputValue!==proposal.snapshot.text)return;proposedInputState=null;syncControlledValues(proposal)})},onOpenChange:({value:value2})=>{localOpen.value=value2;emit("update:open",value2)},onHighlightedValueChange:({value:value2})=>{highlighted.value=value2;emit("highlight",value2)},onAccept:id=>emit("accept",id),onUpdate:refresh});connection.value.setInputAttributes(props.label);connection.value.setPopupAttributes(props.label);refreshItems();refresh()};let mounted=false;let connectScheduled=false;const scheduleConnect=()=>{if(!mounted||connectScheduled)return;connectScheduled=true;void nextTick(()=>{connectScheduled=false;if(mounted)connect()})};provide(key,{state,position:computed(()=>props.position),strategy:computed(()=>props.strategy),label:computed(()=>props.label),connection:computed(()=>connection.value),matchesItem,hasMatches,registerInput:element=>{const changed=input.value!==element;input.value=element;if(changed)scheduleConnect()},registerPopup:element=>{const changed=popup.value!==element;popup.value=element;if(changed)scheduleConnect()},registerItem:(element,id,disabled)=>connection.value?.setItemAttributes(element,{id,disabled})});onMounted(()=>{mounted=true;connect()});onBeforeUnmount(()=>{mounted=false;connection.value?.disconnect();connection.value=void 0;proposedInputState=null});watch(()=>props.items,(items,previousItems)=>{if(!sameComboboxItems(items,previousItems))connect()});watch([()=>props.disabled,()=>props.readonly,()=>props.label,()=>props.position,()=>props.side,()=>props.align,()=>props.sideOffset,()=>props.collisionPadding,()=>props.collisionBoundary,()=>props.avoidCollisions,()=>props.hideWhenDetached,()=>props.strategy,()=>props.tracking,()=>props.policies],connect);watch([()=>props.modelValue,()=>props.inputValue,()=>props.open],()=>{const inputState=controlled.input&&proposedInputState!==null&&proposedInputState.snapshot.text===props.inputValue?proposedInputState:controlled.input?createTextState(props.inputValue):void 0;proposedInputState=null;syncControlledValues(inputState)});const syncControlledValues=inputState=>{if(connection.value===void 0)return;const result=connection.value.syncControlledValues({...controlled.value?{value:props.modelValue}:{},...controlled.input?{inputState:inputState??createTextState(props.inputValue)}:{},...controlled.open?{open:props.open}:{}});if(!result.ok)throw new TypeError(result.error.message);refresh()};return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"combobox","data-part":"root","data-state":state.value.open?"open":"closed","data-disabled":props.disabled?"":void 0,"data-readonly":props.readonly?"":void 0}),{default:()=>slots["default"]?.(state.value)})}});const ComboboxInput=defineComponent({name:"SectileComboboxInput",inheritAttrs:false,props:{name:{type:String,default:void 0},form:{type:String,default:void 0},required:{type:Boolean,default:false},as:{type:[String,Object,Function],default:"input"},asChild:{type:Boolean,default:false}},setup(props,{attrs}){const root=useRoot("ComboboxInput");const input=shallowRef(null);const participation=useNativeInputFormControl(input);const renderServerValue=typeof window==="undefined";const registerInput=node=>{input.value=node instanceof HTMLInputElement?node:null;root.registerInput(input.value??void 0)};return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:registerInput,type:"text",role:"combobox",...renderServerValue?{value:root.state.value.inputValue}:{},name:props.name,form:props.form,required:props.required,disabled:root.state.value.disabled,readonly:root.state.value.readonly,"aria-label":root.label.value,"aria-autocomplete":"list","aria-expanded":String(root.state.value.open),"data-scope":"combobox","data-part":"input"},participation.controlProps.value))}});const ComboboxContent=defineComponent({name:"SectileComboboxContent",inheritAttrs:false,props:{as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot("ComboboxContent");const element=shallowRef();const open=computed(()=>root.state.value.open);const present=usePresence(open,element);watch(present,async()=>{await nextTick();root.connection.value?.render()},{flush:"post"});const registerContent=node=>{const content=node instanceof HTMLElement?node:void 0;element.value=content;root.registerPopup(content)};return()=>{const exiting=!open.value&&present.value;return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:registerContent,role:"listbox",hidden:!present.value,"aria-label":root.label.value,...exiting?{inert:true,"aria-hidden":"true"}:{},style:root.position.value?{position:root.strategy.value,visibility:element.value===void 0?"hidden":void 0}:void 0,"data-scope":"combobox","data-part":"content","data-state":open.value?"open":"closed"}),{default:()=>slots["default"]?.(root.state.value)})}}});const ComboboxItem=defineComponent({name:"SectileComboboxItem",inheritAttrs:false,props:{value:{type:String,required:true},disabled:{type:Boolean,default:false},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("ComboboxItem");const state=computed(()=>({value:props.value,selected:root.state.value.value===props.value,highlighted:root.state.value.highlightedValue===props.value,disabled:root.state.value.disabled||props.disabled}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{if(node instanceof HTMLElement)root.registerItem(node,props.value,state.value.disabled)},role:"option",hidden:!root.matchesItem(props.value),"aria-selected":String(state.value.selected),"aria-disabled":state.value.disabled?"true":void 0,"data-sectile-combobox-id":props.value,"data-disabled":state.value.disabled?"true":void 0,"data-scope":"combobox","data-part":"item","data-selected":state.value.selected?"":void 0,"data-highlighted":state.value.highlighted?"":void 0}),{default:()=>slots["default"]?.(state.value)})}});const ComboboxEmpty=defineComponent({name:"SectileComboboxEmpty",inheritAttrs:false,props:{...partProps,...conditionalPresenceProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("ComboboxEmpty");const active=computed(()=>!root.hasMatches());const forcePresent=computed(()=>props.forcePresent);const presence=useConditionalPresence(active,forcePresent);return()=>{const inactivePresent=!active.value&&presence.present.value;return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:presence.register,role:active.value?"status":void 0,"aria-live":active.value?void 0:"off",hidden:presence.hidden.value,...inactivePresent?{inert:true,"aria-hidden":"true"}:{},"data-scope":"combobox","data-part":"empty","data-state":active.value?"visible":"hidden"}),{default:()=>slots["default"]?.(root.state.value)})}}});function useRoot(part){const root=inject(key);if(root===void 0)throw new TypeError(`${part} must be used inside ComboboxRoot.`);return root}function sameComboboxItems(items,previousItems){return items.length===previousItems.length&&items.every((item,index)=>{const previousItem=previousItems[index];return previousItem!==void 0&&item.id===previousItem.id&&item.label===previousItem.label})}export{ComboboxContent,ComboboxEmpty,ComboboxInput,ComboboxItem,ComboboxRoot};
|
|
1
|
+
import{computed,defineComponent,h,inject,mergeProps,nextTick,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{createCombobox}from"@sectile/dom/combobox";import{createTextState}from"@sectile/dom/text";import{Primitive}from"./primitive.js";import{useNativeInputFormControl}from"./form/control.js";import{reconcileCollectionState}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{usePresence}from"./presence/presence.js";import{conditionalPresenceProps,useConditionalPresence}from"./presence/conditional-presence.js";const key=Symbol("SectileComboboxRoot");const partProps={as:{type:[String,Object,Function],default:"span"},asChild:{type:Boolean,default:false}};const ComboboxRoot=defineComponent({name:"SectileComboboxRoot",inheritAttrs:false,props:{items:{type:Array,required:true},modelValue:{type:String,default:void 0},defaultValue:{type:String,default:null},inputValue:{type:String,default:void 0},defaultInputValue:{type:String,default:""},open:{type:Boolean,default:void 0},defaultOpen:{type:Boolean,default:false},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},label:{type:String,default:void 0},position:{type:Boolean,default:true},side:{type:String,default:"bottom"},align:{type:String,default:"start"},sideOffset:{type:Number,default:8},collisionPadding:{type:[Number,Object],default:8},collisionBoundary:{type:[String,Object],default:void 0},avoidCollisions:{type:Boolean,default:true},hideWhenDetached:{type:Boolean,default:false},strategy:{type:String,default:"absolute"},tracking:{type:String,default:"events"},policies:{type:Object,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,"update:inputValue":_value=>true,"update:open":_value=>true,highlight:_value=>true,accept:_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const input=shallowRef();const popup=shallowRef();const connection=shallowRef();const matchingText=shallowRef();const localValue=shallowRef(props.modelValue!==void 0?props.modelValue:props.defaultValue);const localInput=shallowRef(props.inputValue??props.defaultInputValue);const localOpen=shallowRef(props.open??props.defaultOpen);const highlighted=shallowRef(null);let proposedInputState=null;const livePolicies={};Object.defineProperties(livePolicies,{matches:{get:()=>props.policies?.matches},boundary:{get:()=>props.policies?.boundary}});const controlled={value:useControlledStateInvariant("ComboboxRoot","modelValue",()=>props.modelValue),input:useControlledStateInvariant("ComboboxRoot","inputValue",()=>props.inputValue),open:useControlledStateInvariant("ComboboxRoot","open",()=>props.open)};const state=computed(()=>Object.freeze({value:props.modelValue!==void 0?props.modelValue:localValue.value,inputValue:props.inputValue??localInput.value,highlightedValue:highlighted.value,open:props.open??localOpen.value,disabled:props.disabled,readonly:props.readonly}));const itemLabels=computed(()=>new Map(props.items.map(item=>[item.id,item.label])));const matchingQuery=computed(()=>{const text=matchingText.value;return text===void 0?state.value.inputValue:text.composition===null?text.snapshot.text:text.composition.baseline.text});const matchesItem=id=>{const label=itemLabels.value.get(id);if(label===void 0)return false;const matches=props.policies?.matches;return matches===void 0||matches(label,matchingQuery.value,id)};const hasMatches=()=>{for(const item of props.items){if(matchesItem(item.id))return true}return false};const refresh=()=>{const snapshot=connection.value?.getSnapshot().state;if(snapshot===void 0)return;matchingText.value=snapshot.text;localValue.value=snapshot.selection.selected[0]??null;localInput.value=snapshot.text.snapshot.text;localOpen.value=snapshot.popupOpen;highlighted.value=snapshot.cursor.current;refreshItems()};const refreshItems=()=>{if(popup.value===void 0||connection.value===void 0)return;popup.value.querySelectorAll("[data-sectile-combobox-id]").forEach(element=>{const id=element.dataset["sectileComboboxId"];if(id!==void 0)connection.value?.setItemAttributes(element,{id,disabled:element.dataset["disabled"]==="true"})})};let mounted=false;let inputComposing=false;let reconnectPending=false;let reconnectTimer=null;const connect=()=>{const previousText=connection.value?.getSnapshot().state.text;connection.value?.disconnect();if(input.value===void 0)return;const items=props.items.map(item=>item.id);const requestedValue=controlled.value?props.modelValue:localValue.value;const reconciled=reconcileCollectionState(items,requestedValue===null?[]:[requestedValue],highlighted.value,[],"single",{preserveNullCurrent:true});const value=reconciled.selected[0]??null;const inputState=controlled.input?proposedInputState!==null?proposedInputState:previousText!==void 0&&previousText.snapshot.text===props.inputValue?previousText:createTextState(props.inputValue):previousText??createTextState(localInput.value);localValue.value=value;highlighted.value=reconciled.current;if(controlled.value&&requestedValue!==value)emit("update:modelValue",value);connection.value=createCombobox({input:input.value,...popup.value===void 0?{}:{popup:popup.value},items:props.items,manageVisibility:false,policies:livePolicies,...controlled.value?{value}:{defaultValue:value},defaultHighlightedValue:reconciled.current,...controlled.input?{inputState}:{defaultInputState:inputState},...controlled.open?{open:props.open}:{defaultOpen:localOpen.value},disabled:props.disabled,readOnly:props.readonly,position:props.position,side:props.side,align:props.align,sideOffset:props.sideOffset,collisionPadding:props.collisionPadding,...props.collisionBoundary===void 0?{}:{collisionBoundary:props.collisionBoundary},avoidCollisions:props.avoidCollisions,hideWhenDetached:props.hideWhenDetached,strategy:props.strategy,tracking:props.tracking,onValueChange:({value:value2})=>{localValue.value=value2;emit("update:modelValue",value2)},onInputStateChange:({value:value2})=>{proposedInputState=value2;matchingText.value=value2;localInput.value=value2.snapshot.text;emit("update:inputValue",value2.snapshot.text);if(!controlled.input||value2.composition!==null)return;const proposal=value2;void nextTick(()=>{if(connection.value===void 0||proposedInputState!==proposal)return;proposedInputState=null;const text=props.inputValue;syncControlledValues(proposal.snapshot.text===text?proposal:createTextState(text))})},onOpenChange:({value:value2})=>{localOpen.value=value2;emit("update:open",value2)},onHighlightedValueChange:({value:value2})=>{highlighted.value=value2;emit("highlight",value2)},onAccept:id=>emit("accept",id),onUpdate:refresh});connection.value.setInputAttributes(props.label);connection.value.setPopupAttributes(props.label);refreshItems();refresh()};const requestConnect=()=>{if(inputComposing||reconnectPending){reconnectPending=true;return}connect()};const setInputComposing=composing=>{inputComposing=composing;if(composing||!reconnectPending||reconnectTimer!==null)return;reconnectTimer=setTimeout(()=>{reconnectTimer=null;if(!mounted||inputComposing)return;reconnectPending=false;connect()},0)};let connectScheduled=false;const scheduleConnect=()=>{if(!mounted||connectScheduled)return;connectScheduled=true;void nextTick(()=>{connectScheduled=false;if(mounted)connect()})};provide(key,{state,position:computed(()=>props.position),strategy:computed(()=>props.strategy),label:computed(()=>props.label),connection:computed(()=>connection.value),matchesItem,hasMatches,registerInput:element=>{const changed=input.value!==element;input.value=element;if(changed)scheduleConnect()},registerPopup:element=>{const changed=popup.value!==element;popup.value=element;if(changed)scheduleConnect()},registerItem:(element,id,disabled)=>connection.value?.setItemAttributes(element,{id,disabled}),setInputComposing});onMounted(()=>{mounted=true;connect()});onBeforeUnmount(()=>{mounted=false;if(reconnectTimer!==null)clearTimeout(reconnectTimer);reconnectTimer=null;reconnectPending=false;connection.value?.disconnect();connection.value=void 0;proposedInputState=null});watch(()=>props.items,(items,previousItems)=>{if(!sameComboboxItems(items,previousItems))requestConnect()});watch([()=>props.disabled,()=>props.readonly,()=>props.label,()=>props.position,()=>props.side,()=>props.align,()=>props.sideOffset,()=>props.collisionPadding,()=>props.collisionBoundary,()=>props.avoidCollisions,()=>props.hideWhenDetached,()=>props.strategy,()=>props.tracking],requestConnect);watch([()=>props.modelValue,()=>props.inputValue,()=>props.open],()=>{const inputState=controlled.input&&proposedInputState!==null&&proposedInputState.snapshot.text===props.inputValue?proposedInputState:controlled.input?createTextState(props.inputValue):void 0;proposedInputState=null;syncControlledValues(inputState)});const syncControlledValues=inputState=>{if(connection.value===void 0)return;const result=connection.value.syncControlledValues({...controlled.value?{value:props.modelValue}:{},...controlled.input?{inputState:inputState??createTextState(props.inputValue)}:{},...controlled.open?{open:props.open}:{}});if(!result.ok)throw new TypeError(result.error.message);refresh()};return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"combobox","data-part":"root","data-state":state.value.open?"open":"closed","data-disabled":props.disabled?"":void 0,"data-readonly":props.readonly?"":void 0}),{default:()=>slots["default"]?.(state.value)})}});const ComboboxInput=defineComponent({name:"SectileComboboxInput",inheritAttrs:false,props:{name:{type:String,default:void 0},form:{type:String,default:void 0},required:{type:Boolean,default:false},as:{type:[String,Object,Function],default:"input"},asChild:{type:Boolean,default:false}},setup(props,{attrs}){const root=useRoot("ComboboxInput");const input=shallowRef(null);const participation=useNativeInputFormControl(input);const renderServerValue=typeof window==="undefined";const registerInput=node=>{input.value=node instanceof HTMLInputElement?node:null;root.registerInput(input.value??void 0)};return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:registerInput,type:"text",role:"combobox",...renderServerValue?{value:root.state.value.inputValue}:{},name:props.name,form:props.form,required:props.required,disabled:root.state.value.disabled,readonly:root.state.value.readonly,"aria-label":root.label.value,"aria-autocomplete":"list","aria-expanded":String(root.state.value.open),onCompositionstart:()=>root.setInputComposing(true),onCompositionend:()=>root.setInputComposing(false),"data-scope":"combobox","data-part":"input"},participation.controlProps.value))}});const ComboboxContent=defineComponent({name:"SectileComboboxContent",inheritAttrs:false,props:{as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot("ComboboxContent");const element=shallowRef();const open=computed(()=>root.state.value.open);const present=usePresence(open,element);watch(present,async()=>{await nextTick();root.connection.value?.render()},{flush:"post"});const registerContent=node=>{const content=node instanceof HTMLElement?node:void 0;element.value=content;root.registerPopup(content)};return()=>{const exiting=!open.value&&present.value;return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:registerContent,role:"listbox",hidden:!present.value,"aria-label":root.label.value,...exiting?{inert:true,"aria-hidden":"true"}:{},style:root.position.value?{position:root.strategy.value,visibility:element.value===void 0?"hidden":void 0}:void 0,"data-scope":"combobox","data-part":"content","data-state":open.value?"open":"closed"}),{default:()=>slots["default"]?.(root.state.value)})}}});const ComboboxItem=defineComponent({name:"SectileComboboxItem",inheritAttrs:false,props:{value:{type:String,required:true},disabled:{type:Boolean,default:false},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("ComboboxItem");const state=computed(()=>({value:props.value,selected:root.state.value.value===props.value,highlighted:root.state.value.highlightedValue===props.value,disabled:root.state.value.disabled||props.disabled}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{if(node instanceof HTMLElement)root.registerItem(node,props.value,state.value.disabled)},role:"option",hidden:!root.matchesItem(props.value),"aria-selected":String(state.value.selected),"aria-disabled":state.value.disabled?"true":void 0,"data-sectile-combobox-id":props.value,"data-disabled":state.value.disabled?"true":void 0,"data-scope":"combobox","data-part":"item","data-selected":state.value.selected?"":void 0,"data-highlighted":state.value.highlighted?"":void 0}),{default:()=>slots["default"]?.(state.value)})}});const ComboboxEmpty=defineComponent({name:"SectileComboboxEmpty",inheritAttrs:false,props:{...partProps,...conditionalPresenceProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("ComboboxEmpty");const active=computed(()=>!root.hasMatches());const forcePresent=computed(()=>props.forcePresent);const presence=useConditionalPresence(active,forcePresent);return()=>{const inactivePresent=!active.value&&presence.present.value;return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:presence.register,role:active.value?"status":void 0,"aria-live":active.value?void 0:"off",hidden:presence.hidden.value,...inactivePresent?{inert:true,"aria-hidden":"true"}:{},"data-scope":"combobox","data-part":"empty","data-state":active.value?"visible":"hidden"}),{default:()=>slots["default"]?.(root.state.value)})}}});function useRoot(part){const root=inject(key);if(root===void 0)throw new TypeError(`${part} must be used inside ComboboxRoot.`);return root}function sameComboboxItems(items,previousItems){return items.length===previousItems.length&&items.every((item,index)=>{const previousItem=previousItems[index];return previousItem!==void 0&&item.id===previousItem.id&&item.label===previousItem.label})}export{ComboboxContent,ComboboxEmpty,ComboboxInput,ComboboxItem,ComboboxRoot};
|
|
2
2
|
//# sourceMappingURL=combobox.js.map
|
package/dist/combobox.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/combobox.ts"],"mappings":"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","names":["value"],"file":"combobox.js"}
|
|
1
|
+
{"version":3,"sources":["../src/combobox.ts"],"mappings":"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","names":["value"],"file":"combobox.js"}
|
package/dist/disclosure.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type PropType, type SlotsType, type VNodeChild } from 'vue';
|
|
2
2
|
import { type PrimitiveAs } from './primitive.js';
|
|
3
|
-
import { type ConditionalPresenceProps } from './
|
|
3
|
+
import { type ConditionalPresenceProps } from './presence/conditional-presence.js';
|
|
4
4
|
export interface DisclosureRootProps {
|
|
5
5
|
readonly modelValue?: boolean;
|
|
6
6
|
readonly defaultValue?: boolean;
|
package/dist/disclosure.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{computed,defineComponent,h,inject,mergeProps,provide,shallowRef,watch}from"vue";import{createDisclosureController,getDisclosureContentAttributes,getDisclosureTriggerAttributes}from"@sectile/dom/disclosure";import{Primitive}from"./primitive.js";import{useHostId}from"./host-provider.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{conditionalPresenceProps,useConditionalPresence}from"./
|
|
1
|
+
import{computed,defineComponent,h,inject,mergeProps,provide,shallowRef,watch}from"vue";import{createDisclosureController,getDisclosureContentAttributes,getDisclosureTriggerAttributes}from"@sectile/dom/disclosure";import{Primitive}from"./primitive.js";import{useHostId}from"./host-provider.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{conditionalPresenceProps,useConditionalPresence}from"./presence/conditional-presence.js";const disclosureContextKey=Symbol("SectileDisclosure");const DisclosureRoot=defineComponent({name:"SectileDisclosureRoot",inheritAttrs:false,props:{modelValue:{type:Boolean,default:void 0},defaultValue:{type:Boolean,default:false},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},contentId:{type:String,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const controlled=useControlledStateInvariant("DisclosureRoot","modelValue",()=>props.modelValue);const generatedId=useHostId();const contentId=props.contentId??`sectile-disclosure-${generatedId}`;const controller=shallowRef(createController(controlled,controlled?props.modelValue:props.defaultValue,props,emit));const snapshot=shallowRef(controller.value.getSnapshot());const refresh=()=>{snapshot.value=controller.value.getSnapshot()};const rebuild=()=>{const open=controlled?props.modelValue:snapshot.value.state.open;controller.value=createController(controlled,open,props,emit);refresh()};watch(()=>props.modelValue,value=>{if(!controlled||value===void 0)return;const result=controller.value.syncControlledValue(value);if(!result.ok)throw new TypeError(result.error.message);snapshot.value=result.value});watch([()=>props.disabled,()=>props.readonly],rebuild);const slotProps=computed(()=>Object.freeze({open:snapshot.value.state.open,disabled:props.disabled,readonly:props.readonly}));const toggle=()=>{if(controller.value.handleEvent("toggle"))refresh()};provide(disclosureContextKey,{slotProps,contentId,toggle});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"disclosure","data-part":"root","data-state":slotProps.value.open?"open":"closed","data-disabled":props.disabled?"":void 0,"data-readonly":props.readonly?"":void 0}),{default:()=>slots["default"]?.(slotProps.value)})}});const DisclosureTrigger=defineComponent({name:"SectileDisclosureTrigger",inheritAttrs:false,props:{as:{type:[String,Object,Function],default:"button"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const context=useDisclosureContext("DisclosureTrigger");const attributes=computed(()=>getDisclosureTriggerAttributes({open:context.slotProps.value.open},{panelID:context.contentId,disabled:context.slotProps.value.disabled,readOnly:context.slotProps.value.readonly,native:true}));const handleClick=event=>{if(!event.defaultPrevented)context.toggle()};return()=>h(Primitive,mergeProps(attrs,attributes.value,{as:props.as,asChild:props.asChild,...props.as==="button"&&!props.asChild?{type:"button"}:{},onClick:handleClick}),{default:()=>slots["default"]?.(context.slotProps.value)})}});const DisclosureContent=defineComponent({name:"SectileDisclosureContent",inheritAttrs:false,props:{...conditionalPresenceProps,as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const context=useDisclosureContext("DisclosureContent");const active=computed(()=>context.slotProps.value.open);const forcePresent=computed(()=>props.forcePresent);const presence=useConditionalPresence(active,forcePresent);const attributes=computed(()=>getDisclosureContentAttributes({open:context.slotProps.value.open},{id:context.contentId}));return()=>{const inactivePresent=!active.value&&presence.present.value;return h(Primitive,mergeProps(attrs,attributes.value,{as:props.as,asChild:props.asChild,elementRef:presence.register,hidden:presence.hidden.value,...inactivePresent?{inert:true,"aria-hidden":"true"}:{}}),{default:()=>slots["default"]?.(context.slotProps.value)})}}});function useDisclosureContext(part){const context=inject(disclosureContextKey);if(context===void 0)throw new TypeError(`${part} must be used inside DisclosureRoot.`);return context}function createController(controlled,open,props,emit){const result=createDisclosureController({...controlled?{open}:{defaultOpen:open},disabled:props.disabled,readOnly:props.readonly,onOpenChange:next=>emit("update:modelValue",next)});if(!result.ok)throw new TypeError(result.error.message);return result.value}export{DisclosureContent,DisclosureRoot,DisclosureTrigger};
|
|
2
2
|
//# sourceMappingURL=disclosure.js.map
|
package/dist/editable.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onMounted,provide,ref,shallowRef,watch}from"vue";import{createEditable}from"@sectile/dom/editable";import{Primitive}from"./primitive.js";import{useNativeInputFormControl}from"./
|
|
1
|
+
import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onMounted,provide,ref,shallowRef,watch}from"vue";import{createEditable}from"@sectile/dom/editable";import{Primitive}from"./primitive.js";import{useNativeInputFormControl}from"./form/control.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{useNextTickTask}from"./internal/scheduled-task.js";const editableContextKey=Symbol("SectileEditable");const partProps={as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}};const EditableRoot=defineComponent({name:"SectileEditableRoot",inheritAttrs:false,props:{modelValue:{type:String,default:void 0},defaultValue:{type:String,default:""},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},submitOnBlur:{type:Boolean,default:false},policies:{type:Object,default:void 0},name:{type:String,default:void 0},label:{type:String,default:void 0},...partProps},emits:{"update:modelValue":_value=>true,"update:editing":_editing=>true},slots:Object,setup(props,{attrs,emit,slots}){const controlled=useControlledStateInvariant("EditableRoot","modelValue",()=>props.modelValue);const initial=controlled?props.modelValue:props.defaultValue;const snapshot=shallowRef({value:initial,draft:initial,editing:false});const root=shallowRef(null);const preview=shallowRef(null);const input=shallowRef(null);const editTrigger=shallowRef(null);const submitTrigger=shallowRef(null);const cancelTrigger=shallowRef(null);const multiline=ref(false);let connection=null;let mounted=false;const refresh=()=>{if(connection!==null)snapshot.value=connection.getSnapshot().state};const mount=()=>{if(!mounted||root.value===null||preview.value===null||input.value===null)return;connection?.disconnect();connection=createEditable({root:root.value,preview:preview.value,input:input.value,...editTrigger.value===null?{}:{editTrigger:editTrigger.value},...submitTrigger.value===null?{}:{submitTrigger:submitTrigger.value},...cancelTrigger.value===null?{}:{cancelTrigger:cancelTrigger.value},...controlled?{value:props.modelValue}:{defaultValue:snapshot.value.value},disabled:props.disabled,readOnly:props.readonly,submitOnBlur:props.submitOnBlur,...props.policies===void 0?{}:{policies:props.policies},...props.name===void 0?{}:{name:props.name},...props.label===void 0?{}:{label:props.label},onValueChange:value=>emit("update:modelValue",value),onEditingChange:editing=>emit("update:editing",editing),onUpdate:refresh});refresh()};const reset=()=>{queueMicrotask(()=>{const value=controlled?props.modelValue:initial;snapshot.value={value,draft:value,editing:false};mount()})};const mountTask=useNextTickTask(mount);let inputComposing=false;let reconnectPending=false;let reconnectTimer=null;const requestMount=()=>{if(inputComposing){reconnectPending=true;return}mountTask.schedule()};const setInputComposing=composing=>{inputComposing=composing;if(composing||!reconnectPending||reconnectTimer!==null)return;reconnectTimer=setTimeout(()=>{reconnectTimer=null;if(!mounted||inputComposing)return;reconnectPending=false;mountTask.schedule()},0)};onMounted(()=>{mounted=true;mount()});onBeforeUnmount(()=>{mounted=false;if(reconnectTimer!==null)clearTimeout(reconnectTimer);reconnectTimer=null;reconnectPending=false;mountTask.cancel();connection?.disconnect();connection=null});watch(()=>props.modelValue,value=>{if(!controlled||value===void 0||connection===null)return;const result=connection.syncControlledValue(value);if(!result.ok)throw new TypeError(result.error.message);snapshot.value=result.value.state});watch([()=>props.disabled,()=>props.readonly,()=>props.submitOnBlur,()=>props.policies],requestMount);const slotProps=computed(()=>Object.freeze({...snapshot.value,disabled:props.disabled,readonly:props.readonly}));provide(editableContextKey,{slotProps,root,preview,input,editTrigger,submitTrigger,cancelTrigger,multiline,setInputComposing,reset});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:element=>{root.value=element},"data-scope":"editable","data-part":"root","data-state":slotProps.value.editing?"editing":"idle","data-disabled":props.disabled?"":void 0,"data-readonly":props.readonly?"":void 0}),{default:()=>slots["default"]?.(slotProps.value)})}});const EditableArea=defineComponent({name:"SectileEditableArea",inheritAttrs:false,props:partProps,slots:Object,setup(props,{attrs,slots}){const context=useEditableContext("EditableArea");return()=>renderPart(props,attrs,slots,context,"area")}});const EditablePreview=defineComponent({name:"SectileEditablePreview",inheritAttrs:false,props:{...partProps,as:{...partProps.as,default:"span"}},slots:Object,setup(props,{attrs,slots}){const context=useEditableContext("EditablePreview");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:element=>{context.preview.value=element},hidden:context.slotProps.value.editing,tabindex:context.slotProps.value.disabled?-1:0,"data-scope":"editable","data-part":"preview"}),{default:()=>slots["default"]?.(context.slotProps.value)})}});const EditableInput=defineComponent({name:"SectileEditableInput",inheritAttrs:false,props:{multiline:{type:Boolean,default:false},type:{type:String,default:"text"},name:{type:String,default:void 0},form:{type:String,default:void 0},required:{type:Boolean,default:false}},setup(props,{attrs}){const context=useEditableContext("EditableInput");const participation=useNativeInputFormControl(context.input,{reset:context.reset});const renderServerValue=typeof window==="undefined";context.multiline.value=props.multiline;return()=>h(props.multiline?"textarea":"input",mergeProps(attrs,{ref:element=>{context.input.value=element},...!props.multiline?{type:props.type}:{},name:props.name,form:props.form,required:props.required,...renderServerValue?{value:context.slotProps.value.draft}:{},hidden:!context.slotProps.value.editing,disabled:context.slotProps.value.disabled,readonly:context.slotProps.value.readonly,onCompositionstart:()=>context.setInputComposing(true),onCompositionend:()=>context.setInputComposing(false),"data-scope":"editable","data-part":"input"},participation.controlProps.value))}});const EditableEditTrigger=createTrigger("Edit","editTrigger","edit-trigger",false);const EditableSubmitTrigger=createTrigger("Submit","submitTrigger","submit-trigger",true);const EditableCancelTrigger=createTrigger("Cancel","cancelTrigger","cancel-trigger",true);function createTrigger(label,key,part,editing){return defineComponent({name:`SectileEditable${label}Trigger`,inheritAttrs:false,props:{...partProps,as:{...partProps.as,default:"button"}},slots:Object,setup(props,{attrs,slots}){const context=useEditableContext(`Editable${label}Trigger`);return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:element=>{context[key].value=element},...props.as==="button"&&!props.asChild?{type:"button"}:{},hidden:context.slotProps.value.editing!==editing,disabled:context.slotProps.value.disabled,"data-scope":"editable","data-part":part}),{default:()=>slots["default"]?.(context.slotProps.value)})}})}function renderPart(props,attrs,slots,context,part){return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"editable","data-part":part,"data-state":context.slotProps.value.editing?"editing":"idle"}),{default:()=>slots.default?.(context.slotProps.value)})}function useEditableContext(part){const context=inject(editableContextKey);if(context===void 0)throw new TypeError(`${part} must be used inside EditableRoot.`);return context}export{EditableArea,EditableCancelTrigger,EditableEditTrigger,EditableInput,EditablePreview,EditableRoot,EditableSubmitTrigger};
|
|
2
2
|
//# sourceMappingURL=editable.js.map
|
package/dist/editable.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/editable.ts"],"mappings":"AAAA,OACE,SACA,gBACA,EACA,OACA,WACA,gBACA,UACA,QACA,IACA,WACA,UAMK,MACP,OACE,mBAIK,wBACP,OAAS,cAAmC,iBAC5C,OAAS,8BAAiC,
|
|
1
|
+
{"version":3,"sources":["../src/editable.ts"],"mappings":"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","names":[],"file":"editable.js"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type ComputedRef, type ShallowRef } from 'vue';
|
|
2
2
|
import type { FormConnection, FormParticipant } from '@sectile/dom/form';
|
|
3
|
-
import type { FormFieldSlotProps, FormIssue, FormSelectorFunction, FormSubscribeOptions } from '
|
|
4
|
-
import type { FormControlRegistration, FormLabelMode } from './
|
|
3
|
+
import type { FormFieldSelectorFunction, FormFieldSlotProps, FormIssue, FormSelectorFunction, FormSubscribeOptions } from './contracts.js';
|
|
4
|
+
import type { FormControlRegistration, FormLabelMode } from './control.js';
|
|
5
5
|
export interface FormContext {
|
|
6
6
|
readonly summary: ShallowRef<HTMLElement | null>;
|
|
7
7
|
readonly summaryId: string;
|
|
@@ -20,3 +20,4 @@ export declare const formFieldContextKey: unique symbol;
|
|
|
20
20
|
export declare function useFormContext(part: string): FormContext;
|
|
21
21
|
export declare function useFormFieldContext(part: string): FormFieldContext;
|
|
22
22
|
export declare function useFormSelectorFromContext<Selected>(context: FormContext, selectorSource: () => FormSelectorFunction<Selected>, equalsSource?: () => NonNullable<FormSubscribeOptions<Selected>['equals']>): Readonly<ShallowRef<Selected>>;
|
|
23
|
+
export declare function useFormFieldSelectorFromContext<Selected>(context: FormContext, idSource: () => string, selectorSource: () => FormFieldSelectorFunction<Selected>, equalsSource?: () => NonNullable<FormSubscribeOptions<Selected>['equals']>): Readonly<ShallowRef<Selected>>;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{inject,onScopeDispose,shallowRef,watch}from"vue";const formContextKey=Symbol("SectileForm");const formFieldContextKey=Symbol("SectileFormField");const emptyState=Object.freeze({validation:Object.freeze({generation:0,status:"idle",trigger:null,intent:null}),submission:Object.freeze({generation:0,status:"idle",count:0,failure:null}),touched:false,dirty:false,valid:true,fields:Object.freeze([]),issues:Object.freeze([]),allIssues:Object.freeze([])});function useFormContext(part){const context=inject(formContextKey,null);if(context===null)throw new TypeError(`${part} must be rendered inside FormRoot.`);return context}function useFormFieldContext(part){const context=inject(formFieldContextKey,null);if(context===null)throw new TypeError(`${part} must be rendered inside FormField.`);return context}function useFormSelectorFromContext(context,selectorSource,equalsSource=()=>Object.is){const initialSelector=selectorSource();const selected=shallowRef(initialSelector(context.connection.value?.state??emptyState));let unsubscribe;const stop=watch([context.connection,selectorSource,equalsSource],([target,selector,equals])=>{unsubscribe?.();unsubscribe=void 0;const next=selector(target?.state??emptyState);if(!equals(selected.value,next))selected.value=next;if(target!==null){unsubscribe=target.subscribeForm(selector,value=>{selected.value=value},{equals})}},{immediate:true,flush:"sync"});onScopeDispose(()=>{unsubscribe?.();stop()});return selected}export{formContextKey,formFieldContextKey,useFormContext,useFormFieldContext,useFormSelectorFromContext};
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{inject,onScopeDispose,shallowRef,watch}from"vue";const formContextKey=Symbol("SectileForm");const formFieldContextKey=Symbol("SectileFormField");const emptyState=Object.freeze({validation:Object.freeze({generation:0,status:"idle",trigger:null,intent:null}),submission:Object.freeze({generation:0,status:"idle",count:0,failure:null}),touched:false,dirty:false,valid:true,fields:Object.freeze([]),issues:Object.freeze([]),allIssues:Object.freeze([])});function useFormContext(part){const context=inject(formContextKey,null);if(context===null)throw new TypeError(`${part} must be rendered inside FormRoot.`);return context}function useFormFieldContext(part){const context=inject(formFieldContextKey,null);if(context===null)throw new TypeError(`${part} must be rendered inside FormField.`);return context}function useFormSelectorFromContext(context,selectorSource,equalsSource=()=>Object.is){const initialSelector=selectorSource();const selected=shallowRef(initialSelector(context.connection.value?.state??emptyState));let unsubscribe;const stop=watch([context.connection,selectorSource,equalsSource],([target,selector,equals])=>{unsubscribe?.();unsubscribe=void 0;const next=selector(target?.state??emptyState);if(!equals(selected.value,next))selected.value=next;if(target!==null){unsubscribe=target.subscribeForm(selector,value=>{selected.value=value},{equals})}},{immediate:true,flush:"sync"});onScopeDispose(()=>{unsubscribe?.();stop()});return selected}function useFormFieldSelectorFromContext(context,idSource,selectorSource,equalsSource=()=>Object.is){const initialSelector=selectorSource();const selected=shallowRef(initialSelector(context.connection.value?.getField(idSource())??null));let unsubscribe;const stop=watch([context.connection,idSource,selectorSource,equalsSource],([target,id,selector,equals])=>{unsubscribe?.();unsubscribe=void 0;const next=selector(target?.getField(id)??null);if(!equals(selected.value,next))selected.value=next;if(target!==null){unsubscribe=target.subscribeField(id,selector,value=>{selected.value=value},{equals})}},{immediate:true,flush:"sync"});onScopeDispose(()=>{unsubscribe?.();stop()});return selected}export{formContextKey,formFieldContextKey,useFormContext,useFormFieldContext,useFormFieldSelectorFromContext,useFormSelectorFromContext};
|
|
2
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/form/context.ts"],"mappings":"AAAA,OACE,OACA,eACA,WACA,UAGK,MAgCA,MAAM,eAAiB,OAAO,aAAa,EAC3C,MAAM,oBAAsB,OAAO,kBAAkB,EAE5D,MAAM,WAAwB,OAAO,OAAO,CAC1C,WAAY,OAAO,OAAO,CAAE,WAAY,EAAG,OAAQ,OAAQ,QAAS,KAAM,OAAQ,IAAI,CAAE,EACxF,WAAY,OAAO,OAAO,CAAE,WAAY,EAAG,OAAQ,OAAQ,MAAO,EAAG,QAAS,IAAI,CAAE,EACpF,QAAS,MACT,MAAO,MACP,MAAO,KACP,OAAQ,OAAO,OAAO,CAAA,CAAE,EACxB,OAAQ,OAAO,OAAO,CAAA,CAAE,EACxB,UAAW,OAAO,OAAO,CAAA,CAAE,EAC5B,EAEK,SAAU,eAAe,KAAY,CACzC,MAAM,QAAU,OAA2B,eAAgB,IAAI,EAC/D,GAAI,UAAY,KAAM,MAAM,IAAI,UAAU,GAAG,IAAI,oCAAoC,EACrF,OAAO,OACT,CAEM,SAAU,oBAAoB,KAAY,CAC9C,MAAM,QAAU,OAAgC,oBAAqB,IAAI,EACzE,GAAI,UAAY,KAAM,MAAM,IAAI,UAAU,GAAG,IAAI,qCAAqC,EACtF,OAAO,OACT,CAEM,SAAU,2BACd,QACA,eACA,aAA4E,IAAM,OAAO,GAAE,CAE3F,MAAM,gBAAkB,eAAc,EACtC,MAAM,SAAW,WACf,gBAAgB,QAAQ,WAAW,OAAO,OAAS,UAAU,CAAC,EAEhE,IAAI,YACJ,MAAM,KAAO,MACX,CAAC,QAAQ,WAAY,eAAgB,YAAY,EACjD,CAAC,CAAC,OAAQ,SAAU,MAAM,IAAK,CAC7B,cAAa,EACb,YAAc,OACd,MAAM,KAAO,SAAS,QAAQ,OAAS,UAAU,EACjD,GAAI,CAAC,OAAO,SAAS,MAAO,IAAI,EAAG,SAAS,MAAQ,KACpD,GAAI,SAAW,KAAM,CACnB,YAAc,OAAO,cAAc,SAAW,OAAS,CACrD,SAAS,MAAQ,KACnB,EAAG,CAAE,MAAM,CAAE,CACf,CACF,EACA,CAAE,UAAW,KAAM,MAAO,MAAM,CAAE,EAEpC,eAAe,IAAK,CAClB,cAAa,EACb,KAAI,CACN,CAAC,EACD,OAAO,QACT,CAEM,SAAU,gCACd,QACA,SACA,eACA,aAA4E,IAAM,OAAO,GAAE,CAE3F,MAAM,gBAAkB,eAAc,EACtC,MAAM,SAAW,WAAW,gBAC1B,QAAQ,WAAW,OAAO,SAAS,SAAQ,CAAE,GAAK,IAAI,CACvD,EACD,IAAI,YACJ,MAAM,KAAO,MACX,CAAC,QAAQ,WAAY,SAAU,eAAgB,YAAY,EAC3D,CAAC,CAAC,OAAQ,GAAI,SAAU,MAAM,IAAK,CACjC,cAAa,EACb,YAAc,OACd,MAAM,KAAO,SAAS,QAAQ,SAAS,EAAE,GAAK,IAAI,EAClD,GAAI,CAAC,OAAO,SAAS,MAAO,IAAI,EAAG,SAAS,MAAQ,KACpD,GAAI,SAAW,KAAM,CACnB,YAAc,OAAO,eAAe,GAAI,SAAW,OAAS,CAC1D,SAAS,MAAQ,KACnB,EAAG,CAAE,MAAM,CAAE,CACf,CACF,EACA,CAAE,UAAW,KAAM,MAAO,MAAM,CAAE,EAEpC,eAAe,IAAK,CAClB,cAAa,EACb,KAAI,CACN,CAAC,EACD,OAAO,QACT","names":[],"file":"context.js"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import type { FormState as DomainFormState, FormFieldState as DomainFormFieldState, FormFieldMetaInput as DomainFormFieldMetaInput, FormIssue as DomainFormIssue, FormReinitializeOptions, FormSubmissionFailure, FormValidationTrigger, FormValidationIntent, FormIssueSource } from '@sectile/form/state';
|
|
2
|
+
import type { StandardSchemaV1 } from '@sectile/form/schema';
|
|
3
|
+
import type { FormFieldPath } from '@sectile/form/path';
|
|
4
|
+
import type { VNodeProps, AllowedComponentProps, ComponentCustomProps, VNodeChild, ShallowRef } from 'vue';
|
|
5
|
+
import type { PrimitiveAs } from '../primitive.js';
|
|
6
|
+
import type { ConditionalPresenceProps } from '../presence/conditional-presence.js';
|
|
7
|
+
export interface FormState extends DomainFormState<string> {
|
|
8
|
+
}
|
|
9
|
+
export interface FormFieldState extends DomainFormFieldState<string> {
|
|
10
|
+
}
|
|
11
|
+
export interface FormFieldMetaInput extends DomainFormFieldMetaInput {
|
|
12
|
+
}
|
|
13
|
+
export interface FormSubscribeOptions<Selected> {
|
|
14
|
+
readonly equals?: (previous: Selected, next: Selected) => boolean;
|
|
15
|
+
}
|
|
16
|
+
export type FormSelectorFunction<Selected> = (state: FormState) => Selected;
|
|
17
|
+
export type FormFieldSelectorFunction<Selected> = (field: FormFieldState | null) => Selected;
|
|
18
|
+
export interface FormIssue extends DomainFormIssue<string> {
|
|
19
|
+
}
|
|
20
|
+
export type FormValues<Shape extends object = Record<string, unknown>> = Readonly<Shape>;
|
|
21
|
+
export type FormSchema<Input extends object = Record<string, unknown>, Output extends object = Input> = StandardSchemaV1<FormValues<Input>, FormValues<Output>>;
|
|
22
|
+
export type FormSchemaInput<Schema extends StandardSchemaV1> = StandardSchemaV1.InferInput<Schema>;
|
|
23
|
+
export type FormSchemaOutput<Schema extends StandardSchemaV1> = StandardSchemaV1.InferOutput<Schema>;
|
|
24
|
+
export interface FormSubmitEvent<Values extends object = Record<string, unknown>> {
|
|
25
|
+
readonly formData: FormData;
|
|
26
|
+
readonly values: FormValues<Values>;
|
|
27
|
+
readonly submitter: HTMLElement | null;
|
|
28
|
+
readonly state: FormState;
|
|
29
|
+
readonly reinitialize: (options?: FormReinitializeOptions) => void;
|
|
30
|
+
readonly nativeEvent: SubmitEvent;
|
|
31
|
+
readonly defaultPrevented: boolean;
|
|
32
|
+
preventDefault(): void;
|
|
33
|
+
stopPropagation(): void;
|
|
34
|
+
stopImmediatePropagation(): void;
|
|
35
|
+
}
|
|
36
|
+
export interface FormIssueInput {
|
|
37
|
+
readonly id?: string;
|
|
38
|
+
readonly message: string;
|
|
39
|
+
readonly path?: FormFieldPath;
|
|
40
|
+
readonly relatedPaths?: readonly FormFieldPath[];
|
|
41
|
+
}
|
|
42
|
+
export type FormSubmitIssue = FormIssueInput;
|
|
43
|
+
export type FormSubmitResult = void | {
|
|
44
|
+
readonly ok: true;
|
|
45
|
+
} | {
|
|
46
|
+
readonly ok: false;
|
|
47
|
+
readonly failure?: FormSubmissionFailure;
|
|
48
|
+
readonly issues?: readonly FormSubmitIssue[];
|
|
49
|
+
};
|
|
50
|
+
export type FormSubmitHandler<Values extends object = Record<string, unknown>> = (event: FormSubmitEvent<Values>) => FormSubmitResult | PromiseLike<FormSubmitResult>;
|
|
51
|
+
export interface FormSubmissionDefinition {
|
|
52
|
+
readonly schema?: never;
|
|
53
|
+
readonly onSubmit: FormSubmitHandler<Record<string, unknown>>;
|
|
54
|
+
}
|
|
55
|
+
export interface FormSchemaSubmissionDefinition<Schema extends FormSchema<object, object>> {
|
|
56
|
+
readonly schema: Schema;
|
|
57
|
+
readonly onSubmit: FormSubmitHandler<FormSchemaOutput<Schema>>;
|
|
58
|
+
}
|
|
59
|
+
export declare function defineFormSubmission<const Schema extends FormSchema<object, object>>(definition: FormSchemaSubmissionDefinition<Schema>): FormSchemaSubmissionDefinition<Schema>;
|
|
60
|
+
export declare function defineFormSubmission(definition: FormSubmissionDefinition): FormSubmissionDefinition;
|
|
61
|
+
export type FormSubmitErrorMapper = (reason: unknown) => FormSubmissionFailure | undefined;
|
|
62
|
+
export type FormResetHandler = () => void;
|
|
63
|
+
export type FormStateChangeHandler = (state: FormState) => void;
|
|
64
|
+
export type FormInteractionValidationTrigger = Exclude<FormValidationTrigger, 'submit'>;
|
|
65
|
+
export interface FormValidateContext {
|
|
66
|
+
readonly trigger: FormValidationTrigger;
|
|
67
|
+
readonly intent: FormValidationIntent;
|
|
68
|
+
readonly changedFieldId: string | null;
|
|
69
|
+
readonly signal: AbortSignal;
|
|
70
|
+
}
|
|
71
|
+
export interface FormValidationIssue {
|
|
72
|
+
readonly message: string;
|
|
73
|
+
readonly path?: FormFieldPath;
|
|
74
|
+
readonly relatedPaths?: readonly FormFieldPath[];
|
|
75
|
+
}
|
|
76
|
+
export interface FormValidationResult {
|
|
77
|
+
readonly issues?: readonly FormValidationIssue[];
|
|
78
|
+
}
|
|
79
|
+
export type FormValidateHandler<Values extends object = Record<string, unknown>> = (values: FormValues<Values>, context: FormValidateContext) => FormValidationResult | PromiseLike<FormValidationResult>;
|
|
80
|
+
export type FormSubmitStartedAction = () => number | null;
|
|
81
|
+
export type FormSubmitSucceededAction = (generation: number) => boolean;
|
|
82
|
+
export type FormSubmitFailedAction = (generation: number, result: {
|
|
83
|
+
readonly failure?: FormSubmissionFailure;
|
|
84
|
+
readonly issues?: readonly FormIssue[];
|
|
85
|
+
}) => boolean;
|
|
86
|
+
export type FormReplaceIssuesAction = (source: FormIssueSource, issues: readonly FormIssue[]) => boolean;
|
|
87
|
+
export type FormResetAction = () => void;
|
|
88
|
+
export type FormReinitializeAction = (options?: FormReinitializeOptions) => void;
|
|
89
|
+
export interface FormRootProps<Input extends object = Record<string, unknown>, Output extends object = Input> {
|
|
90
|
+
readonly issues?: readonly FormIssueInput[];
|
|
91
|
+
readonly schema?: FormSchema<Input, Output>;
|
|
92
|
+
readonly validate?: FormValidateHandler<Input>;
|
|
93
|
+
readonly validateOn?: readonly FormInteractionValidationTrigger[];
|
|
94
|
+
readonly revalidateOn?: readonly FormInteractionValidationTrigger[];
|
|
95
|
+
readonly onSubmit?: FormSubmitHandler<Output>;
|
|
96
|
+
readonly mapSubmitError?: FormSubmitErrorMapper;
|
|
97
|
+
}
|
|
98
|
+
export interface FormRootSlotProps {
|
|
99
|
+
readonly state: FormState;
|
|
100
|
+
readonly validation: FormState['validation'];
|
|
101
|
+
readonly submission: FormState['submission'];
|
|
102
|
+
readonly valid: boolean;
|
|
103
|
+
readonly touched: boolean;
|
|
104
|
+
readonly dirty: boolean;
|
|
105
|
+
readonly submitted: boolean;
|
|
106
|
+
readonly submitCount: number;
|
|
107
|
+
readonly submitStarted: FormSubmitStartedAction;
|
|
108
|
+
readonly submitSucceeded: FormSubmitSucceededAction;
|
|
109
|
+
readonly submitFailed: FormSubmitFailedAction;
|
|
110
|
+
readonly replaceIssues: FormReplaceIssuesAction;
|
|
111
|
+
readonly reinitialize: FormReinitializeAction;
|
|
112
|
+
readonly reset: FormResetAction;
|
|
113
|
+
}
|
|
114
|
+
export type FormRootPublicProps<Input extends object = Record<string, unknown>, Output extends object = Input> = FormRootProps<Input, Output> & VNodeProps & AllowedComponentProps & ComponentCustomProps & {
|
|
115
|
+
readonly onReset?: () => unknown;
|
|
116
|
+
readonly onStateChange?: (state: FormState) => unknown;
|
|
117
|
+
};
|
|
118
|
+
export interface FormRootComponent {
|
|
119
|
+
new <Input extends object = Record<string, unknown>, Output extends object = Input>(props: FormRootPublicProps<Input, Output>): {
|
|
120
|
+
$props: FormRootPublicProps<Input, Output>;
|
|
121
|
+
$slots: {
|
|
122
|
+
default?: (props: FormRootSlotProps) => VNodeChild;
|
|
123
|
+
};
|
|
124
|
+
submitStarted: FormSubmitStartedAction;
|
|
125
|
+
submitSucceeded: FormSubmitSucceededAction;
|
|
126
|
+
submitFailed: FormSubmitFailedAction;
|
|
127
|
+
replaceIssues: FormReplaceIssuesAction;
|
|
128
|
+
reinitialize: FormReinitializeAction;
|
|
129
|
+
reset: FormResetAction;
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
export interface FormFieldProps {
|
|
133
|
+
readonly id?: string;
|
|
134
|
+
readonly name?: FormFieldPath;
|
|
135
|
+
readonly form?: string;
|
|
136
|
+
readonly required?: boolean;
|
|
137
|
+
readonly disabled?: boolean;
|
|
138
|
+
readonly readonly?: boolean;
|
|
139
|
+
readonly as?: PrimitiveAs;
|
|
140
|
+
readonly asChild?: boolean;
|
|
141
|
+
}
|
|
142
|
+
export type FormFieldPublicProps = FormFieldProps & VNodeProps & AllowedComponentProps & ComponentCustomProps;
|
|
143
|
+
export interface FormFieldSlotProps {
|
|
144
|
+
readonly id: string;
|
|
145
|
+
readonly controlId: string;
|
|
146
|
+
readonly labelId: string;
|
|
147
|
+
readonly descriptionId: string;
|
|
148
|
+
readonly messageId: string;
|
|
149
|
+
readonly describedBy: string;
|
|
150
|
+
readonly valid: boolean;
|
|
151
|
+
readonly touched: boolean;
|
|
152
|
+
readonly dirty: boolean;
|
|
153
|
+
readonly issues: readonly FormIssue[];
|
|
154
|
+
readonly relatedIssues: readonly FormIssue[];
|
|
155
|
+
readonly setMeta: (meta: FormFieldMetaInput) => boolean;
|
|
156
|
+
readonly replaceIssues: (source: FormIssueSource, issues: readonly FormIssue[]) => boolean;
|
|
157
|
+
readonly upsertIssue: (issue: FormIssue) => boolean;
|
|
158
|
+
readonly removeIssue: (issueId: string | number) => boolean;
|
|
159
|
+
readonly clearIssues: (source?: FormIssueSource) => boolean;
|
|
160
|
+
}
|
|
161
|
+
export interface FormFieldController {
|
|
162
|
+
readonly state: Readonly<ShallowRef<FormFieldState | null>>;
|
|
163
|
+
setMeta(meta: FormFieldMetaInput): boolean;
|
|
164
|
+
replaceIssues(source: FormIssueSource, issues: readonly FormIssue[]): boolean;
|
|
165
|
+
upsertIssue(issue: FormIssue): boolean;
|
|
166
|
+
removeIssue(issueId: string | number): boolean;
|
|
167
|
+
clearIssues(source?: FormIssueSource): boolean;
|
|
168
|
+
}
|
|
169
|
+
export interface FormSelectorProps<Selected> {
|
|
170
|
+
readonly select: FormSelectorFunction<Selected>;
|
|
171
|
+
readonly equals?: NonNullable<FormSubscribeOptions<Selected>['equals']>;
|
|
172
|
+
}
|
|
173
|
+
export interface FormSelectorComponent {
|
|
174
|
+
new <Selected>(props: FormSelectorProps<Selected>): {
|
|
175
|
+
$props: FormSelectorProps<Selected>;
|
|
176
|
+
$slots: {
|
|
177
|
+
default?: (props: {
|
|
178
|
+
readonly selected: Selected;
|
|
179
|
+
}) => VNodeChild;
|
|
180
|
+
};
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
export interface FormFieldSelectorProps<Selected> {
|
|
184
|
+
readonly id: string;
|
|
185
|
+
readonly select: FormFieldSelectorFunction<Selected>;
|
|
186
|
+
readonly equals?: NonNullable<FormSubscribeOptions<Selected>['equals']>;
|
|
187
|
+
}
|
|
188
|
+
export interface FormFieldSelectorComponent {
|
|
189
|
+
new <Selected>(props: FormFieldSelectorProps<Selected>): {
|
|
190
|
+
$props: FormFieldSelectorProps<Selected>;
|
|
191
|
+
$slots: {
|
|
192
|
+
default?: (props: {
|
|
193
|
+
readonly selected: Selected;
|
|
194
|
+
}) => VNodeChild;
|
|
195
|
+
};
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
export interface FormSummarySlotProps {
|
|
199
|
+
readonly validation: FormState['validation'];
|
|
200
|
+
readonly submission: FormState['submission'];
|
|
201
|
+
readonly issues: readonly FormIssue[];
|
|
202
|
+
readonly serverIssues: readonly FormIssue[];
|
|
203
|
+
readonly firstIssue: FormIssue | null;
|
|
204
|
+
readonly valid: boolean;
|
|
205
|
+
}
|
|
206
|
+
export interface FormSubmitSlotProps {
|
|
207
|
+
readonly valid: boolean;
|
|
208
|
+
readonly submitting: boolean;
|
|
209
|
+
readonly canSubmit: boolean;
|
|
210
|
+
readonly submission: FormState['submission'];
|
|
211
|
+
}
|
|
212
|
+
export interface FormPartProps {
|
|
213
|
+
readonly as?: PrimitiveAs;
|
|
214
|
+
readonly asChild?: boolean;
|
|
215
|
+
}
|
|
216
|
+
export interface FormMessageProps extends FormPartProps, ConditionalPresenceProps {
|
|
217
|
+
}
|
|
218
|
+
export interface FormSummaryProps extends FormPartProps, ConditionalPresenceProps {
|
|
219
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/form/contracts.ts"],"mappings":"AAwGM,SAAU,qBACd,WAAiG,CAEjG,OAAO,OAAO,OAAO,CAAE,GAAG,UAAU,CAAE,CACxC","names":[],"file":"contracts.js"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
const formValueControlInventory=Object.freeze({TextField:{family:"scalar",phase:"simple"},NumberField:{family:"numeric",phase:"simple"},CheckboxRoot:{family:"boolean",phase:"simple"},SwitchRoot:{family:"boolean",phase:"simple"},CheckboxGroupRoot:{family:"group",phase:"simple"},RadioGroupRoot:{family:"group",phase:"simple"},ListboxRoot:{family:"selection",phase:"simple"},SelectRoot:{family:"selection",phase:"simple"},ComboboxRoot:{family:"selection",phase:"simple"},CascadeListRoot:{family:"selection",phase:"simple"},CascadeSelectRoot:{family:"selection",phase:"simple"},RatingRoot:{family:"selection",phase:"simple"},ToggleGroupRoot:{family:"selection",phase:"simple"},EditableRoot:{family:"editable",phase:"simple"},TagsInputRoot:{family:"token",phase:"simple"},PinInputRoot:{family:"token",phase:"simple"},SpinButtonRoot:{family:"numeric",phase:"simple"},QuantityFieldRoot:{family:"numeric",phase:"simple"},DateField:{family:"compound",phase:"compound"},DateTimeField:{family:"compound",phase:"compound"},TimeField:{family:"compound",phase:"compound"},DateRangeFieldRoot:{family:"compound",phase:"compound"},TimeRangeFieldRoot:{family:"compound",phase:"compound"},SliderRoot:{family:"compound",phase:"compound"},MultiThumbSliderRoot:{family:"compound",phase:"compound"},ColorPickerRoot:{family:"compound",phase:"compound"},CalendarRoot:{family:"compound",phase:"compound"},RangeCalendarRoot:{family:"compound",phase:"compound"},DatePickerRoot:{family:"compound",phase:"compound"},DateRangePickerRoot:{family:"compound",phase:"compound"},DateTimePickerRoot:{family:"compound",phase:"compound"},DateTimeRangePickerRoot:{family:"compound",phase:"compound"},MonthPickerRoot:{family:"compound",phase:"compound"},MonthRangePickerRoot:{family:"compound",phase:"compound"},YearPickerRoot:{family:"compound",phase:"compound"},YearRangePickerRoot:{family:"compound",phase:"compound"}});export{formValueControlInventory};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=control-inventory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/form/control-inventory.ts"],"mappings":"AAsBO,MAAM,0BAA4B,OAAO,OAAO,CACrD,UAAW,CAAE,OAAQ,SAAU,MAAO,QAAQ,EAC9C,YAAa,CAAE,OAAQ,UAAW,MAAO,QAAQ,EACjD,aAAc,CAAE,OAAQ,UAAW,MAAO,QAAQ,EAClD,WAAY,CAAE,OAAQ,UAAW,MAAO,QAAQ,EAChD,kBAAmB,CAAE,OAAQ,QAAS,MAAO,QAAQ,EACrD,eAAgB,CAAE,OAAQ,QAAS,MAAO,QAAQ,EAClD,YAAa,CAAE,OAAQ,YAAa,MAAO,QAAQ,EACnD,WAAY,CAAE,OAAQ,YAAa,MAAO,QAAQ,EAClD,aAAc,CAAE,OAAQ,YAAa,MAAO,QAAQ,EACpD,gBAAiB,CAAE,OAAQ,YAAa,MAAO,QAAQ,EACvD,kBAAmB,CAAE,OAAQ,YAAa,MAAO,QAAQ,EACzD,WAAY,CAAE,OAAQ,YAAa,MAAO,QAAQ,EAClD,gBAAiB,CAAE,OAAQ,YAAa,MAAO,QAAQ,EACvD,aAAc,CAAE,OAAQ,WAAY,MAAO,QAAQ,EACnD,cAAe,CAAE,OAAQ,QAAS,MAAO,QAAQ,EACjD,aAAc,CAAE,OAAQ,QAAS,MAAO,QAAQ,EAChD,eAAgB,CAAE,OAAQ,UAAW,MAAO,QAAQ,EACpD,kBAAmB,CAAE,OAAQ,UAAW,MAAO,QAAQ,EACvD,UAAW,CAAE,OAAQ,WAAY,MAAO,UAAU,EAClD,cAAe,CAAE,OAAQ,WAAY,MAAO,UAAU,EACtD,UAAW,CAAE,OAAQ,WAAY,MAAO,UAAU,EAClD,mBAAoB,CAAE,OAAQ,WAAY,MAAO,UAAU,EAC3D,mBAAoB,CAAE,OAAQ,WAAY,MAAO,UAAU,EAC3D,WAAY,CAAE,OAAQ,WAAY,MAAO,UAAU,EACnD,qBAAsB,CAAE,OAAQ,WAAY,MAAO,UAAU,EAC7D,gBAAiB,CAAE,OAAQ,WAAY,MAAO,UAAU,EACxD,aAAc,CAAE,OAAQ,WAAY,MAAO,UAAU,EACrD,kBAAmB,CAAE,OAAQ,WAAY,MAAO,UAAU,EAC1D,eAAgB,CAAE,OAAQ,WAAY,MAAO,UAAU,EACvD,oBAAqB,CAAE,OAAQ,WAAY,MAAO,UAAU,EAC5D,mBAAoB,CAAE,OAAQ,WAAY,MAAO,UAAU,EAC3D,wBAAyB,CAAE,OAAQ,WAAY,MAAO,UAAU,EAChE,gBAAiB,CAAE,OAAQ,WAAY,MAAO,UAAU,EACxD,qBAAsB,CAAE,OAAQ,WAAY,MAAO,UAAU,EAC7D,eAAgB,CAAE,OAAQ,WAAY,MAAO,UAAU,EACvD,oBAAqB,CAAE,OAAQ,WAAY,MAAO,UAAU,EACT","names":[],"file":"control-inventory.js"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{computed,getCurrentInstance,inject,onBeforeUnmount,onMounted,provide}from"vue";const formControlFieldContextKey=Symbol("SectileFormControlField");const formControlOwnerKey=Symbol("SectileFormControlOwner");function provideFormControlFieldContext(context){provide(formControlFieldContextKey,context)}function useFormControl(registration){const field=inject(formControlFieldContextKey,null);const owned=inject(formControlOwnerKey,false);const instance=getCurrentInstance();const explicit=Object.freeze([...new Set([...registration.explicit??[],...explicitMetadataAttributes(instance?.vnode.props??null)])]);const normalized=Object.freeze({...registration,explicit});const controlProps=computed(()=>field!==null&&!owned?field.attributesFor(normalized):Object.freeze({}));let unregister;if(field!==null&&!owned){onMounted(()=>{unregister=field.registerControl(normalized)});onBeforeUnmount(()=>unregister?.())}return Object.freeze({participating:field!==null&&!owned,controlProps})}const nativeInputControlCapabilities=Object.freeze({id:true,describedBy:true,invalid:true,required:true,disabled:true,readonly:true});const compositeControlCapabilities=Object.freeze({id:true,describedBy:true,invalid:true,labelledBy:true});const hiddenInputSubmissionCapabilities=Object.freeze({name:true,form:true,required:true,disabled:true});const hiddenSelectSubmissionCapabilities=hiddenInputSubmissionCapabilities;const hiddenValueSubmissionCapabilities=Object.freeze({name:true,form:true,disabled:true});function useNativeInputFormControl(element,options={}){return useFormControl({element,semanticControl:element,focusTarget:element,validationTarget:element,labelMode:"for",capabilities:nativeInputControlCapabilities,...options.reset===void 0?{}:{reset:options.reset},...options.getValue===void 0?{}:{getValue:options.getValue},...options.isValueEqual===void 0?{}:{isValueEqual:options.isValueEqual}})}function useCompositeFormControl(options){return useFormControl({element:options.root,semanticControl:options.root,focusTarget:options.focusTarget??options.root,validationTarget:options.validationTarget??options.root,labelMode:options.labelMode??"labelledby",capabilities:compositeControlCapabilities,...options.submissions===void 0?{}:{submissions:options.submissions},...options.reset===void 0?{}:{reset:options.reset},...options.getValue===void 0?{}:{getValue:options.getValue},...options.isValueEqual===void 0?{}:{isValueEqual:options.isValueEqual}})}function provideFormControlOwner(){provide(formControlOwnerKey,true)}function explicitMetadataAttributes(vnodeProps){if(vnodeProps===null)return[];const aliases={id:["id"],name:["name"],form:["form"],required:["required"],disabled:["disabled"],readonly:["readonly","readOnly"],"aria-describedby":["aria-describedby","ariaDescribedby"],"aria-errormessage":["aria-errormessage","ariaErrormessage"],"aria-invalid":["aria-invalid","ariaInvalid"],"aria-labelledby":["aria-labelledby","ariaLabelledby"],"aria-disabled":["aria-disabled","ariaDisabled"],"aria-required":["aria-required","ariaRequired"],"aria-readonly":["aria-readonly","ariaReadonly"]};return Object.entries(aliases).filter(([,names])=>names.some(name=>Object.hasOwn(vnodeProps,name))).map(([attribute])=>attribute)}export{compositeControlCapabilities,hiddenInputSubmissionCapabilities,hiddenSelectSubmissionCapabilities,hiddenValueSubmissionCapabilities,nativeInputControlCapabilities,provideFormControlFieldContext,provideFormControlOwner,useCompositeFormControl,useFormControl,useNativeInputFormControl};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/form/control.ts"],"mappings":"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","names":[],"file":"control.js"}
|