base-ui-vue 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/README.md +41 -1
  2. package/dist/button/Button.cjs +53 -12
  3. package/dist/button/Button.cjs.map +1 -1
  4. package/dist/button/Button.js +26 -15
  5. package/dist/button/Button.js.map +1 -1
  6. package/dist/button/ToolbarButton.cjs +367 -0
  7. package/dist/button/ToolbarButton.cjs.map +1 -0
  8. package/dist/button/ToolbarButton.js +320 -0
  9. package/dist/button/ToolbarButton.js.map +1 -0
  10. package/dist/button/ToolbarButtonDataAttributes.cjs +27 -0
  11. package/dist/button/ToolbarButtonDataAttributes.cjs.map +1 -0
  12. package/dist/button/ToolbarButtonDataAttributes.js +21 -0
  13. package/dist/button/ToolbarButtonDataAttributes.js.map +1 -0
  14. package/dist/checkbox/index.cjs +1173 -0
  15. package/dist/checkbox/index.cjs.map +1 -0
  16. package/dist/checkbox/index.js +1048 -0
  17. package/dist/checkbox/index.js.map +1 -0
  18. package/dist/checkbox-group/CheckboxGroup.cjs +629 -0
  19. package/dist/checkbox-group/CheckboxGroup.cjs.map +1 -0
  20. package/dist/checkbox-group/CheckboxGroup.js +540 -0
  21. package/dist/checkbox-group/CheckboxGroup.js.map +1 -0
  22. package/dist/checkbox-group/CheckboxGroupDataAttributes.cjs +18 -0
  23. package/dist/checkbox-group/CheckboxGroupDataAttributes.cjs.map +1 -0
  24. package/dist/checkbox-group/CheckboxGroupDataAttributes.js +12 -0
  25. package/dist/checkbox-group/CheckboxGroupDataAttributes.js.map +1 -0
  26. package/dist/composite/composite.cjs +167 -0
  27. package/dist/composite/composite.cjs.map +1 -1
  28. package/dist/composite/composite.js +96 -1
  29. package/dist/composite/composite.js.map +1 -1
  30. package/dist/composite/constants.cjs +12 -0
  31. package/dist/composite/constants.cjs.map +1 -0
  32. package/dist/composite/constants.js +6 -0
  33. package/dist/composite/constants.js.map +1 -0
  34. package/dist/control/FieldControl.cjs +18 -343
  35. package/dist/control/FieldControl.cjs.map +1 -1
  36. package/dist/control/FieldControl.js +14 -285
  37. package/dist/control/FieldControl.js.map +1 -1
  38. package/dist/control/SliderControl.cjs +636 -0
  39. package/dist/control/SliderControl.cjs.map +1 -0
  40. package/dist/control/SliderControl.js +553 -0
  41. package/dist/control/SliderControl.js.map +1 -0
  42. package/dist/control/SliderControlDataAttributes.cjs +47 -0
  43. package/dist/control/SliderControlDataAttributes.cjs.map +1 -0
  44. package/dist/control/SliderControlDataAttributes.js +41 -0
  45. package/dist/control/SliderControlDataAttributes.js.map +1 -0
  46. package/dist/csp-provider/CSPContext.cjs +32 -0
  47. package/dist/csp-provider/CSPContext.cjs.map +1 -0
  48. package/dist/csp-provider/CSPContext.js +21 -0
  49. package/dist/csp-provider/CSPContext.js.map +1 -0
  50. package/dist/csp-provider/CSPProvider.cjs +46 -0
  51. package/dist/csp-provider/CSPProvider.cjs.map +1 -0
  52. package/dist/csp-provider/CSPProvider.js +41 -0
  53. package/dist/csp-provider/CSPProvider.js.map +1 -0
  54. package/dist/description/FieldDescription.cjs +5 -5
  55. package/dist/description/FieldDescription.cjs.map +1 -1
  56. package/dist/description/FieldDescription.js +1 -1
  57. package/dist/direction-provider/DirectionProvider.cjs +2 -2
  58. package/dist/direction-provider/DirectionProvider.cjs.map +1 -1
  59. package/dist/direction-provider/DirectionProvider.js +1 -1
  60. package/dist/error/FieldError.cjs +10 -288
  61. package/dist/error/FieldError.cjs.map +1 -1
  62. package/dist/error/FieldError.js +4 -246
  63. package/dist/error/FieldError.js.map +1 -1
  64. package/dist/form/Form.cjs +5 -4
  65. package/dist/form/Form.cjs.map +1 -1
  66. package/dist/form/Form.js +5 -4
  67. package/dist/form/Form.js.map +1 -1
  68. package/dist/group/ToolbarGroup.cjs +92 -0
  69. package/dist/group/ToolbarGroup.cjs.map +1 -0
  70. package/dist/group/ToolbarGroup.js +87 -0
  71. package/dist/group/ToolbarGroup.js.map +1 -0
  72. package/dist/group/ToolbarGroupDataAttributes.cjs +23 -0
  73. package/dist/group/ToolbarGroupDataAttributes.cjs.map +1 -0
  74. package/dist/group/ToolbarGroupDataAttributes.js +17 -0
  75. package/dist/group/ToolbarGroupDataAttributes.js.map +1 -0
  76. package/dist/header/AccordionHeader.cjs +2 -2
  77. package/dist/header/AccordionHeader.js +1 -1
  78. package/dist/image/AvatarImage.cjs +4 -4
  79. package/dist/image/AvatarImage.cjs.map +1 -1
  80. package/dist/image/AvatarImage.js +1 -1
  81. package/dist/index.cjs +80 -10
  82. package/dist/index.d.cts +2751 -612
  83. package/dist/index.d.cts.map +1 -1
  84. package/dist/index.d.ts +2751 -612
  85. package/dist/index.d.ts.map +1 -1
  86. package/dist/index.js +15 -5
  87. package/dist/index2.cjs +3651 -370
  88. package/dist/index2.cjs.map +1 -1
  89. package/dist/index2.js +3365 -270
  90. package/dist/index2.js.map +1 -1
  91. package/package.json +8 -4
  92. package/src/accordion/root/AccordionRoot.vue +2 -1
  93. package/src/checkbox/index.ts +23 -0
  94. package/src/checkbox/indicator/CheckboxIndicator.vue +102 -0
  95. package/src/checkbox/indicator/CheckboxIndicatorDataAttributes.ts +61 -0
  96. package/src/checkbox/root/CheckboxRoot.vue +632 -0
  97. package/src/checkbox/root/CheckboxRootContext.ts +22 -0
  98. package/src/checkbox/root/CheckboxRootDataAttributes.ts +54 -0
  99. package/src/checkbox/utils/useStateAttributesMapping.ts +30 -0
  100. package/src/checkbox-group/CheckboxGroup.vue +241 -0
  101. package/src/checkbox-group/CheckboxGroupContext.ts +39 -0
  102. package/src/checkbox-group/CheckboxGroupDataAttributes.ts +6 -0
  103. package/src/checkbox-group/index.ts +11 -0
  104. package/src/checkbox-group/useCheckboxGroupParent.ts +173 -0
  105. package/src/collapsible/panel/useCollapsiblePanel.ts +2 -1
  106. package/src/collapsible/root/useCollapsibleRoot.ts +3 -1
  107. package/src/composite/composite.ts +2 -0
  108. package/src/composite/item/CompositeItem.vue +7 -8
  109. package/src/composite/root/CompositeRoot.vue +12 -1
  110. package/src/csp-provider/CSPContext.ts +26 -0
  111. package/src/csp-provider/CSPProvider.vue +40 -0
  112. package/src/csp-provider/index.ts +5 -0
  113. package/src/field/item/FieldItem.vue +6 -1
  114. package/src/field/label/FieldLabel.vue +10 -51
  115. package/src/field/root/FieldRoot.vue +16 -3
  116. package/src/floating-ui-vue/types.ts +1 -4
  117. package/src/floating-ui-vue/utils/element.ts +12 -0
  118. package/src/floating-ui-vue/utils/shadowDom.ts +44 -0
  119. package/src/floating-ui-vue/utils.ts +3 -0
  120. package/src/form/Form.vue +5 -3
  121. package/src/index.ts +9 -0
  122. package/src/labelable-provider/LabelableContext.ts +2 -2
  123. package/src/labelable-provider/LabelableProvider.vue +21 -4
  124. package/src/labelable-provider/index.ts +2 -0
  125. package/src/labelable-provider/useAriaLabelledBy.ts +9 -9
  126. package/src/labelable-provider/useLabel.ts +115 -0
  127. package/src/labelable-provider/useLabelableId.ts +12 -10
  128. package/src/separator/Separator.vue +65 -0
  129. package/src/separator/SeparatorDataAttributes.ts +7 -0
  130. package/src/separator/index.ts +3 -0
  131. package/src/slider/control/SliderControl.vue +497 -0
  132. package/src/slider/control/SliderControlDataAttributes.ts +35 -0
  133. package/src/slider/index.ts +35 -0
  134. package/src/slider/indicator/SliderIndicator.vue +144 -0
  135. package/src/slider/indicator/SliderIndicatorDataAttributes.ts +35 -0
  136. package/src/slider/label/SliderLabel.vue +75 -0
  137. package/src/slider/root/SliderRoot.vue +557 -0
  138. package/src/slider/root/SliderRootContext.ts +126 -0
  139. package/src/slider/root/SliderRootDataAttributes.ts +35 -0
  140. package/src/slider/root/stateAttributesMapping.ts +13 -0
  141. package/src/slider/thumb/SliderThumb.vue +601 -0
  142. package/src/slider/thumb/SliderThumbDataAttributes.ts +39 -0
  143. package/src/slider/thumb/prehydrationScript.min.ts +5 -0
  144. package/src/slider/thumb/prehydrationScript.template.js +69 -0
  145. package/src/slider/track/SliderTrack.vue +48 -0
  146. package/src/slider/track/SliderTrackDataAttributes.ts +10 -0
  147. package/src/slider/utils/asc.ts +3 -0
  148. package/src/slider/utils/getMidpoint.ts +9 -0
  149. package/src/slider/utils/getPushedThumbValues.ts +68 -0
  150. package/src/slider/utils/getSliderValue.ts +25 -0
  151. package/src/slider/utils/replaceArrayItemAtIndex.ts +15 -0
  152. package/src/slider/utils/resolveThumbCollision.ts +177 -0
  153. package/src/slider/utils/roundValueToStep.ts +19 -0
  154. package/src/slider/utils/test-utils.ts +25 -0
  155. package/src/slider/utils/validateMinimumDistance.ts +20 -0
  156. package/src/slider/utils/valueArrayToPercentages.ts +10 -0
  157. package/src/slider/value/SliderValue.vue +90 -0
  158. package/src/slider/value/SliderValueDataAttributes.ts +35 -0
  159. package/src/switch/index.ts +14 -0
  160. package/src/switch/root/SwitchRoot.vue +448 -0
  161. package/src/switch/root/SwitchRootContext.ts +22 -0
  162. package/src/switch/root/SwitchRootDataAttributes.ts +46 -0
  163. package/src/switch/stateAttributesMapping.ts +23 -0
  164. package/src/switch/thumb/SwitchThumb.vue +59 -0
  165. package/src/switch/thumb/SwitchThumbDataAttributes.ts +46 -0
  166. package/src/toggle/Toggle.vue +211 -0
  167. package/src/toggle/ToggleDataAttributes.ts +6 -0
  168. package/src/toggle/index.ts +3 -0
  169. package/src/toggle-group/ToggleGroup.vue +224 -0
  170. package/src/toggle-group/ToggleGroupContext.ts +45 -0
  171. package/src/toggle-group/ToggleGroupDataAttributes.ts +15 -0
  172. package/src/toggle-group/index.ts +5 -0
  173. package/src/toolbar/button/ToolbarButton.vue +99 -0
  174. package/src/toolbar/button/ToolbarButtonDataAttributes.ts +15 -0
  175. package/src/toolbar/group/ToolbarGroup.vue +70 -0
  176. package/src/toolbar/group/ToolbarGroupContext.ts +23 -0
  177. package/src/toolbar/group/ToolbarGroupDataAttributes.ts +11 -0
  178. package/src/toolbar/index.ts +27 -0
  179. package/src/toolbar/input/ToolbarInput.vue +114 -0
  180. package/src/toolbar/input/ToolbarInputDataAttributes.ts +15 -0
  181. package/src/toolbar/link/ToolbarLink.vue +54 -0
  182. package/src/toolbar/link/ToolbarLinkDataAttributes.ts +7 -0
  183. package/src/toolbar/root/ToolbarRoot.vue +144 -0
  184. package/src/toolbar/root/ToolbarRootContext.ts +29 -0
  185. package/src/toolbar/root/ToolbarRootDataAttributes.ts +11 -0
  186. package/src/toolbar/separator/ToolbarSeparator.vue +41 -0
  187. package/src/toolbar/separator/ToolbarSeparatorDataAttributes.ts +7 -0
  188. package/src/use-button/useButton.ts +2 -1
  189. package/src/utils/areArraysEqual.ts +12 -0
  190. package/src/utils/clamp.ts +7 -0
  191. package/src/utils/createBaseUIEventDetails.ts +9 -0
  192. package/src/utils/formatNumber.ts +7 -0
  193. package/src/utils/owner.ts +5 -0
  194. package/src/utils/resolveAriaLabelledBy.ts +10 -0
  195. package/src/utils/useControllableState.ts +78 -14
  196. package/src/utils/useFocusableWhenDisabled.ts +6 -1
  197. package/src/utils/useMergedRefs.ts +26 -2
  198. package/src/utils/useRegisteredLabelId.ts +21 -0
  199. package/src/utils/valueToPercent.ts +7 -0
  200. package/src/utils/visuallyHidden.ts +24 -0
  201. package/dist/direction-provider/DirectionContext.cjs +0 -26
  202. package/dist/direction-provider/DirectionContext.cjs.map +0 -1
  203. package/dist/direction-provider/DirectionContext.js +0 -15
  204. package/dist/direction-provider/DirectionContext.js.map +0 -1
@@ -1,297 +1,26 @@
1
- import { EMPTY_OBJECT, NOOP, mergeProps as mergeProps$1, useRenderElement } from "../button/Button.js";
2
- import { computed, createBlock, createCommentVNode, defineComponent, inject, mergeProps, openBlock, ref, renderSlot, resolveDynamicComponent, shallowReadonly, shallowRef, unref, useAttrs, useId, watchEffect } from "vue";
1
+ import { mergeProps as mergeProps$1, useRenderElement } from "../button/Button.js";
2
+ import { useAriaLabelledBy } from "../checkbox/index.js";
3
+ import { fieldValidityMapping, useBaseUiId, useField, useFieldRootContext, useLabelableContext } from "../checkbox-group/CheckboxGroup.js";
4
+ import { computed, createBlock, createCommentVNode, defineComponent, mergeProps, openBlock, ref, renderSlot, resolveDynamicComponent, shallowRef, toValue, unref, useAttrs, watchEffect } from "vue";
3
5
 
4
- //#region src/utils/useId.ts
5
- let globalId = 0;
6
- /**
7
- * Generates a unique ID string, optionally prefixed.
8
- * Uses Vue 3.5+ `useId()` when available, otherwise falls back to an
9
- * incrementing counter (client-side only, not SSR-safe).
10
- *
11
- * @param idOverride - If provided, returned as-is.
12
- * @param prefix - Optional prefix prepended to the generated id.
13
- */
14
- function useId$1(idOverride, prefix) {
15
- if (idOverride != null) return idOverride;
16
- if (typeof useId === "function") {
17
- const reactId = useId();
18
- return prefix ? `${prefix}-${reactId}` : reactId;
19
- }
20
- globalId += 1;
21
- const id = String(globalId);
22
- return prefix ? `${prefix}-${id}` : id;
23
- }
24
-
25
- //#endregion
26
- //#region src/utils/useBaseUiId.ts
27
- /**
28
- * Wraps `useId` and prefixes generated IDs with `base-ui-`.
29
- * @param idOverride - If provided, returned as-is.
30
- */
31
- function useBaseUiId(idOverride) {
32
- return useId$1(idOverride, "base-ui");
33
- }
34
-
35
- //#endregion
36
- //#region src/labelable-provider/LabelableContext.ts
37
- const defaultContext$1 = {
38
- controlId: shallowReadonly(shallowRef(void 0)),
39
- setControlId: NOOP,
40
- labelId: shallowReadonly(shallowRef(void 0)),
41
- setLabelId: NOOP,
42
- messageIds: shallowReadonly(shallowRef([])),
43
- setMessageIds: NOOP,
44
- getDescriptionProps: () => ({})
45
- };
46
- const labelableContextKey = Symbol("LabelableContext");
47
- function useLabelableContext() {
48
- return inject(labelableContextKey, defaultContext$1);
49
- }
50
-
51
- //#endregion
52
- //#region src/labelable-provider/useAriaLabelledBy.ts
53
- function useAriaLabelledBy(params) {
54
- const { ariaLabelledBy, labelId, labelSourceRef, enableFallback = true, labelSourceId } = params;
55
- const fallbackAriaLabelledBy = ref(void 0);
56
- const generatedLabelId = useBaseUiId(labelSourceId ? `${labelSourceId}-label` : void 0);
57
- const resolvedAriaLabelledBy = computed(() => {
58
- const explicit = ariaLabelledBy?.value;
59
- const fromContext = labelId?.value;
60
- return explicit ?? fromContext ?? fallbackAriaLabelledBy.value;
61
- });
62
- watchEffect(() => {
63
- if (ariaLabelledBy?.value || labelId?.value || !enableFallback) {
64
- fallbackAriaLabelledBy.value = void 0;
65
- return;
66
- }
67
- const next = getAriaLabelledBy(labelSourceRef.value, generatedLabelId);
68
- if (fallbackAriaLabelledBy.value !== next) fallbackAriaLabelledBy.value = next;
69
- });
70
- return resolvedAriaLabelledBy;
71
- }
72
- function getAriaLabelledBy(labelSource, generatedLabelId) {
73
- const label = findAssociatedLabel(labelSource);
74
- if (!label) return;
75
- if (!label.id && generatedLabelId) label.id = generatedLabelId;
76
- return label.id || void 0;
77
- }
78
- function findAssociatedLabel(labelSource) {
79
- if (!labelSource) return;
80
- const parent = labelSource.parentElement;
81
- if (parent && parent.tagName === "LABEL") return parent;
82
- const controlId = labelSource.id;
83
- if (controlId) {
84
- const nextSibling = labelSource.nextElementSibling;
85
- if (nextSibling && nextSibling.htmlFor === controlId) return nextSibling;
86
- }
87
- const labels = labelSource.labels;
88
- return labels && labels[0] ? labels[0] : void 0;
89
- }
90
-
91
- //#endregion
92
6
  //#region src/labelable-provider/useLabelableId.ts
93
7
  function useLabelableId(params = {}) {
94
8
  const { id } = params;
95
- const { controlId, setControlId } = useLabelableContext();
96
- const defaultId = useBaseUiId(id);
97
- const resolvedId = id ?? defaultId;
9
+ const { controlId, registerControlId } = useLabelableContext();
10
+ const source = Symbol("labelable-id");
11
+ const defaultId = useBaseUiId();
12
+ const resolvedId = computed(() => toValue(id) ?? defaultId);
98
13
  watchEffect((onCleanup) => {
99
- if (!resolvedId) {
100
- setControlId(void 0);
14
+ if (!resolvedId.value) {
15
+ registerControlId(source, void 0);
101
16
  return;
102
17
  }
103
- setControlId(resolvedId);
104
- onCleanup(() => {
105
- setControlId(void 0);
106
- });
107
- });
108
- return computed(() => controlId.value ?? defaultId);
109
- }
110
-
111
- //#endregion
112
- //#region src/field/root/FieldRootDataAttributes.ts
113
- let FieldRootDataAttributes = /* @__PURE__ */ function(FieldRootDataAttributes) {
114
- /**
115
- * Present when the field is disabled.
116
- */
117
- FieldRootDataAttributes["disabled"] = "data-disabled";
118
- /**
119
- * Present when the field has been touched.
120
- */
121
- FieldRootDataAttributes["touched"] = "data-touched";
122
- /**
123
- * Present when the field's value has changed.
124
- */
125
- FieldRootDataAttributes["dirty"] = "data-dirty";
126
- /**
127
- * Present when the field is in valid state.
128
- */
129
- FieldRootDataAttributes["valid"] = "data-valid";
130
- /**
131
- * Present when the field is in invalid state.
132
- */
133
- FieldRootDataAttributes["invalid"] = "data-invalid";
134
- /**
135
- * Present when the field is filled.
136
- */
137
- FieldRootDataAttributes["filled"] = "data-filled";
138
- /**
139
- * Present when the field control is focused.
140
- */
141
- FieldRootDataAttributes["focused"] = "data-focused";
142
- return FieldRootDataAttributes;
143
- }({});
144
-
145
- //#endregion
146
- //#region src/field/utils/constants.ts
147
- const DEFAULT_VALIDITY_STATE = {
148
- badInput: false,
149
- customError: false,
150
- patternMismatch: false,
151
- rangeOverflow: false,
152
- rangeUnderflow: false,
153
- stepMismatch: false,
154
- tooLong: false,
155
- tooShort: false,
156
- typeMismatch: false,
157
- valid: null,
158
- valueMissing: false
159
- };
160
- const DEFAULT_FIELD_STATE_ATTRIBUTES = {
161
- valid: null,
162
- touched: false,
163
- dirty: false,
164
- filled: false,
165
- focused: false
166
- };
167
- const DEFAULT_FIELD_ROOT_STATE = {
168
- disabled: false,
169
- ...DEFAULT_FIELD_STATE_ATTRIBUTES
170
- };
171
- const fieldValidityMapping = { valid(value) {
172
- if (value === null) return null;
173
- if (value) return { [FieldRootDataAttributes.valid]: "" };
174
- return { [FieldRootDataAttributes.invalid]: "" };
175
- } };
176
-
177
- //#endregion
178
- //#region src/field/root/FieldRootContext.ts
179
- function createDefaultContext() {
180
- const defaultValidation = {
181
- getValidationProps: () => ({}),
182
- getInputValidationProps: () => ({}),
183
- inputRef: shallowReadonly(shallowRef(null)),
184
- setInputRef: () => {},
185
- commit: async () => {}
186
- };
187
- return {
188
- invalid: ref(void 0),
189
- name: ref(void 0),
190
- validityData: ref({
191
- state: { ...DEFAULT_VALIDITY_STATE },
192
- errors: [],
193
- error: "",
194
- value: "",
195
- initialValue: null
196
- }),
197
- setValidityData: NOOP,
198
- disabled: ref(false),
199
- touched: ref(false),
200
- setTouched: NOOP,
201
- dirty: ref(false),
202
- setDirty: NOOP,
203
- filled: ref(false),
204
- setFilled: NOOP,
205
- focused: ref(false),
206
- setFocused: NOOP,
207
- validate: () => null,
208
- validationMode: ref("onSubmit"),
209
- validationDebounceTime: ref(0),
210
- shouldValidateOnChange: () => false,
211
- state: ref({ ...DEFAULT_FIELD_ROOT_STATE }),
212
- markedDirtyRef: ref(false),
213
- validation: defaultValidation
214
- };
215
- }
216
- const fieldRootContextKey = Symbol("FieldRootContext");
217
- let _defaultContext = null;
218
- function useFieldRootContext(optional = true) {
219
- const context = inject(fieldRootContextKey, void 0);
220
- if (!context && !optional) throw new Error("Base UI Vue: FieldRootContext is missing. Field parts must be placed within <FieldRoot>.");
221
- if (!context) {
222
- if (!_defaultContext) _defaultContext = createDefaultContext();
223
- return _defaultContext;
224
- }
225
- return context;
226
- }
227
-
228
- //#endregion
229
- //#region src/form/FormContext.ts
230
- const formContextKey = Symbol("FormContext");
231
- const defaultContext = {
232
- errors: { value: EMPTY_OBJECT },
233
- clearErrors: NOOP,
234
- formRef: { value: { fields: /* @__PURE__ */ new Map() } },
235
- validationMode: { value: "onSubmit" },
236
- submitAttempted: { value: false }
237
- };
238
- function useFormContext() {
239
- return inject(formContextKey, defaultContext);
240
- }
241
-
242
- //#endregion
243
- //#region src/field/utils/getCombinedFieldValidityData.ts
244
- /**
245
- * Combines the field's client-side, stateful validity data with the external
246
- * invalid state to determine the field's true validity.
247
- */
248
- function getCombinedFieldValidityData(validityData, invalid) {
249
- return {
250
- ...validityData,
251
- state: {
252
- ...validityData.state,
253
- valid: !invalid && validityData.state.valid
254
- }
255
- };
256
- }
257
-
258
- //#endregion
259
- //#region src/field/useField.ts
260
- function useField(params) {
261
- const { enabled, value, id, name, controlRef, commit } = params;
262
- const { formRef } = useFormContext();
263
- const { invalid, markedDirtyRef, validityData, setValidityData } = useFieldRootContext();
264
- const getValue = params.getValue ?? (() => value.value);
265
- watchEffect(() => {
266
- if (enabled && !enabled.value) return;
267
- let initialValue = value.value;
268
- if (initialValue === void 0) initialValue = getValue();
269
- if (validityData.value.initialValue === null && initialValue !== null) setValidityData({
270
- ...validityData.value,
271
- initialValue
272
- });
273
- });
274
- watchEffect((onCleanup) => {
275
- if (enabled && !enabled.value) return;
276
- const currentId = id.value;
277
- if (!currentId) return;
278
- const fields = formRef.value.fields;
279
- fields.set(currentId, {
280
- getValue,
281
- name: name?.value,
282
- controlRef,
283
- validityData: getCombinedFieldValidityData(validityData.value, invalid.value),
284
- validate() {
285
- let nextValue = value.value;
286
- if (nextValue === void 0) nextValue = getValue();
287
- markedDirtyRef.value = true;
288
- commit(nextValue);
289
- }
290
- });
18
+ registerControlId(source, resolvedId.value);
291
19
  onCleanup(() => {
292
- fields.delete(currentId);
20
+ registerControlId(source, void 0);
293
21
  });
294
22
  });
23
+ return computed(() => controlId.value ?? resolvedId.value);
295
24
  }
296
25
 
297
26
  //#endregion
@@ -507,5 +236,5 @@ var FieldControl_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ d
507
236
  var FieldControl_default = FieldControl_vue_vue_type_script_setup_true_lang_default;
508
237
 
509
238
  //#endregion
510
- export { DEFAULT_VALIDITY_STATE, FieldControl_default, fieldRootContextKey, fieldValidityMapping, formContextKey, getCombinedFieldValidityData, labelableContextKey, useBaseUiId, useFieldRootContext, useFormContext, useLabelableContext };
239
+ export { FieldControl_default, useLabelableId };
511
240
  //# sourceMappingURL=FieldControl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FieldControl.js","names":["useId","vueUseId","useId","defaultContext"],"sources":["../../src/utils/useId.ts","../../src/utils/useBaseUiId.ts","../../src/labelable-provider/LabelableContext.ts","../../src/labelable-provider/useAriaLabelledBy.ts","../../src/labelable-provider/useLabelableId.ts","../../src/field/root/FieldRootDataAttributes.ts","../../src/field/utils/constants.ts","../../src/field/root/FieldRootContext.ts","../../src/form/FormContext.ts","../../src/field/utils/getCombinedFieldValidityData.ts","../../src/field/useField.ts","../../src/field/control/FieldControl.vue","../../src/field/control/FieldControl.vue"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"FieldControl.js","names":[],"sources":["../../src/labelable-provider/useLabelableId.ts","../../src/field/control/FieldControl.vue","../../src/field/control/FieldControl.vue"],"sourcesContent":[],"mappings":";;;;;;AASA,SAAgB,eAAe,SAAmC,EAAE,EAAE;CACpE,MAAM,EAAE,OAAO;CACf,MAAM,EAAE,WAAW,sBAAsB,qBAAqB;CAC9D,MAAM,SAAS,OAAO,eAAe;CAErC,MAAM,YAAY,aAAa;CAC/B,MAAM,aAAa,eAAe,QAAQ,GAAG,IAAI,UAAU;AAE3D,cAAa,cAAc;AACzB,MAAI,CAAC,WAAW,OAAO;AACrB,qBAAkB,QAAQ,OAAU;AACpC;;AAGF,oBAAkB,QAAQ,WAAW,MAAM;AAE3C,kBAAgB;AACd,qBAAkB,QAAQ,OAAU;IACpC;GACF;AAEF,QAAO,eAAe,UAAU,SAAS,WAAW,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECQ5D,MAAM,QAAQ;EAMd,MAAM,OAAO;EAIb,MAAM,QAAQ,UAAS;EACvB,MAAM,cAAc;EAIpB,MAAM,EACJ,OAAO,YACP,MAAM,WACN,UAAU,eACV,YACA,UACA,gBACA,cACA,YACA,WACA,gBACA,eAbmB,qBAAoB;EAgBzC,MAAM,WAAW,eAAe,cAAc,SAAS,MAAM,SAAQ;EACrE,MAAM,OAAO,eAAe,UAAU,SAAS,MAAM,KAAI;EAEzD,MAAM,QAAQ,gBAAmC;GAC/C,GAAG,WAAW;GACd,UAAU,SAAS;GACpB,EAAC;EAEF,MAAM,YAAY,eAAe,EAAE,IAAI,MAAM,IAAI,CAAA;EAEjD,MAAM,eAAe,eAAe,MAAM,UAAU,OAAS;EAC7D,MAAM,gBAAgB,WAAW,MAAM,gBAAgB,GAAE;EAEzD,MAAM,eAAe,eAAe;AAClC,OAAI,aAAa,MACf,QAAO,MAAM;AACf,UAAO,cAAc;IACtB;EAED,MAAM,kBAAkB,IAAwB,KAAI;EAEpD,MAAM,EAAE,YAAY,qBAAoB;EAExC,MAAM,iBAAiB,kBAAkB;GACvC,gBAFyB,eAAe,MAAM,mBAAwC;GAGtF;GACA,gBAAgB;GAChB,gBAAgB;GAChB,eAAe,UAAU,SAAS;GACnC,CAAA;AAED,oBAAkB;AAChB,cAAW,YAAY,gBAAgB,MAAgC;IACxE;AAED,WAAS;GACP,IAAI;GACJ;GACA,SAAS,MAAe,WAAW,OAAO,EAAE;GAC5C,OAAO;GACP,gBAAiB,gBAAgB,OAA4B,SAAS,cAAc;GACpF,YAAY;GACb,CAAA;AAED,oBAAkB;GAChB,MAAM,KAAK,gBAAgB;AAC3B,OAAI,CAAC,GACH;AAEF,OAAI,GAAG,SAAU,aAAa,SAAS,MAAM,UAAU,GACrD,WAAU,KAAI;YAEP,aAAa,SAAS,MAAM,UAAU,GAC7C,WAAU,MAAK;IAElB;EAED,SAAS,YAAY,OAAc;GACjC,MAAM,SAAS,MAAM;AACrB,iBAAc,QAAQ,OAAO;AAC7B,QAAK,eAAe,OAAO,OAAO,MAAK;AACvC,YAAS,OAAO,UAAU,aAAa,MAAM,aAAY;AACzD,aAAU,OAAO,UAAU,GAAE;;EAG/B,SAAS,oBAAoB,OAAc;AACzC,eAAY,MAAK;AAEjB,GAD6B,WAAW,yBAAwB,CAC3C,UAAU,MAAK;;EAGtC,SAAS,cAAc;AACrB,cAAW,KAAI;;EAGjB,SAAS,WAAW,OAAc;GAChC,MAAM,SAAS,MAAM;AACrB,cAAW,KAAI;AACf,cAAW,MAAK;AAEhB,OAAI,eAAe,UAAU,SAC3B,YAAW,OAAO,OAAO,MAAK;;EAIlC,SAAS,cAAc,OAAsB;GAC3C,MAAM,SAAS,MAAM;AACrB,OAAI,OAAO,YAAY,WAAW,MAAM,QAAQ,SAAS;AACvD,eAAW,KAAI;AACf,mBAAe,QAAQ;AACvB,eAAW,OAAO,OAAO,MAAK;;;EA8BlC,MAAM,EACJ,KACA,aACA,YACA,KAAK,cACH,iBAAiB;GACnB,gBAAgB;GAChB;GACA,OAlCmB,eAAe,aAClC,aACA,WAAW,yBAAyB,EACpC;IACE,MAAM,UAAU;IAChB,YAAY,SAAS;IACrB,QAAQ,KAAK;IACb,mBAAmB,eAAe;IAClC,aAAa,MAAM,aAAa;IAChC,QAAQ,MAAM;IACd,YAAY,MAAM;IAClB,WAAW,MAAM;IACjB,aAAa,MAAM;IACnB,aAAa,MAAM;IACnB,OAAO,MAAM;IACb,OAAO,MAAM;IACb,QAAQ,MAAM;IACd,eAAe,MAAM;IACrB,SAAS,aAAa,QAAQ,MAAM,QAAQ,cAAc;IAC1D,WAAW;IACX,WAAW;IACX,UAAU;IACV,aAAa;IACd,CACF,CAAA;GAWC,wBAAwB;GACxB,gBAAgB;GAChB,KAAK;GACN,CAAA;;UAIa,MAAA,WAAU,GAAtB,WAA+E,KAAA,QAAA,WAAA;;IAAtD,KAAK,MAAA,UAAS;IAAG,OAAO,MAAA,YAAW;IAAG,OAAO,MAAA;sBACtE,YAKE,wBAJK,MAAA,IAAG,CAAA,EADV,WAKE;;IAFC,KAAK,MAAA,UAAS;MACP,MAAA,YAAW,CAAA,EAAA,MAAA,GAAA"}