base-ui-vue 0.1.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 (192) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -0
  3. package/dist/button/Button.cjs +524 -0
  4. package/dist/button/Button.cjs.map +1 -0
  5. package/dist/button/Button.js +453 -0
  6. package/dist/button/Button.js.map +1 -0
  7. package/dist/composite/composite.cjs +56 -0
  8. package/dist/composite/composite.cjs.map +1 -0
  9. package/dist/composite/composite.js +21 -0
  10. package/dist/composite/composite.js.map +1 -0
  11. package/dist/control/FieldControl.cjs +576 -0
  12. package/dist/control/FieldControl.cjs.map +1 -0
  13. package/dist/control/FieldControl.js +511 -0
  14. package/dist/control/FieldControl.js.map +1 -0
  15. package/dist/control/FieldControlDataAttributes.cjs +42 -0
  16. package/dist/control/FieldControlDataAttributes.cjs.map +1 -0
  17. package/dist/control/FieldControlDataAttributes.js +36 -0
  18. package/dist/control/FieldControlDataAttributes.js.map +1 -0
  19. package/dist/description/FieldDescription.cjs +86 -0
  20. package/dist/description/FieldDescription.cjs.map +1 -0
  21. package/dist/description/FieldDescription.js +81 -0
  22. package/dist/description/FieldDescription.js.map +1 -0
  23. package/dist/direction-provider/DirectionContext.cjs +26 -0
  24. package/dist/direction-provider/DirectionContext.cjs.map +1 -0
  25. package/dist/direction-provider/DirectionContext.js +15 -0
  26. package/dist/direction-provider/DirectionContext.js.map +1 -0
  27. package/dist/direction-provider/DirectionProvider.cjs +37 -0
  28. package/dist/direction-provider/DirectionProvider.cjs.map +1 -0
  29. package/dist/direction-provider/DirectionProvider.js +32 -0
  30. package/dist/direction-provider/DirectionProvider.js.map +1 -0
  31. package/dist/error/FieldError.cjs +414 -0
  32. package/dist/error/FieldError.cjs.map +1 -0
  33. package/dist/error/FieldError.js +373 -0
  34. package/dist/error/FieldError.js.map +1 -0
  35. package/dist/fallback/AvatarFallback.cjs +165 -0
  36. package/dist/fallback/AvatarFallback.cjs.map +1 -0
  37. package/dist/fallback/AvatarFallback.js +136 -0
  38. package/dist/fallback/AvatarFallback.js.map +1 -0
  39. package/dist/form/Form.cjs +159 -0
  40. package/dist/form/Form.cjs.map +1 -0
  41. package/dist/form/Form.js +154 -0
  42. package/dist/form/Form.js.map +1 -0
  43. package/dist/header/AccordionHeader.cjs +189 -0
  44. package/dist/header/AccordionHeader.cjs.map +1 -0
  45. package/dist/header/AccordionHeader.js +148 -0
  46. package/dist/header/AccordionHeader.js.map +1 -0
  47. package/dist/image/AvatarImage.cjs +150 -0
  48. package/dist/image/AvatarImage.cjs.map +1 -0
  49. package/dist/image/AvatarImage.js +145 -0
  50. package/dist/image/AvatarImage.js.map +1 -0
  51. package/dist/image/AvatarImageDataAttributes.cjs +26 -0
  52. package/dist/image/AvatarImageDataAttributes.cjs.map +1 -0
  53. package/dist/image/AvatarImageDataAttributes.js +20 -0
  54. package/dist/image/AvatarImageDataAttributes.js.map +1 -0
  55. package/dist/index.cjs +64 -0
  56. package/dist/index.d.cts +1501 -0
  57. package/dist/index.d.cts.map +1 -0
  58. package/dist/index.d.ts +1501 -0
  59. package/dist/index.d.ts.map +1 -0
  60. package/dist/index.js +15 -0
  61. package/dist/index2.cjs +2767 -0
  62. package/dist/index2.cjs.map +1 -0
  63. package/dist/index2.js +2618 -0
  64. package/dist/index2.js.map +1 -0
  65. package/package.json +77 -0
  66. package/src/accordion/accordion.types.ts +126 -0
  67. package/src/accordion/header/AccordionHeader.vue +36 -0
  68. package/src/accordion/index.ts +10 -0
  69. package/src/accordion/item/AccordionItem.vue +124 -0
  70. package/src/accordion/item/AccordionItemContext.ts +24 -0
  71. package/src/accordion/item/AccordionItemDataAttributes.ts +15 -0
  72. package/src/accordion/item/stateAttributesMapping.ts +14 -0
  73. package/src/accordion/panel/AccordionPanel.vue +156 -0
  74. package/src/accordion/panel/AccordionPanelCssVars.ts +12 -0
  75. package/src/accordion/root/AccordionRoot.vue +130 -0
  76. package/src/accordion/root/AccordionRootContext.ts +37 -0
  77. package/src/accordion/root/AccordionRootDataAttributes.ts +10 -0
  78. package/src/accordion/root/stateAttributesMapping.ts +6 -0
  79. package/src/accordion/trigger/AccordionTrigger.vue +186 -0
  80. package/src/avatar/fallback/AvatarFallback.vue +75 -0
  81. package/src/avatar/image/AvatarImage.vue +103 -0
  82. package/src/avatar/image/AvatarImageDataAttributes.ts +14 -0
  83. package/src/avatar/image/useImageLoadingStatus.ts +58 -0
  84. package/src/avatar/index.ts +19 -0
  85. package/src/avatar/root/AvatarRoot.vue +62 -0
  86. package/src/avatar/root/AvatarRootContext.ts +22 -0
  87. package/src/avatar/root/stateAttributesMapping.ts +7 -0
  88. package/src/button/Button.vue +59 -0
  89. package/src/button/ButtonDataAttributes.ts +6 -0
  90. package/src/button/button.types.ts +22 -0
  91. package/src/button/index.ts +2 -0
  92. package/src/collapsible/collapsible.types.ts +64 -0
  93. package/src/collapsible/index.ts +6 -0
  94. package/src/collapsible/panel/CollapsiblePanel.vue +145 -0
  95. package/src/collapsible/panel/CollapsiblePanelCssVars.ts +12 -0
  96. package/src/collapsible/panel/CollapsiblePanelDataAttributes.ts +18 -0
  97. package/src/collapsible/panel/useCollapsiblePanel.ts +489 -0
  98. package/src/collapsible/root/CollapsibleRoot.vue +60 -0
  99. package/src/collapsible/root/CollapsibleRootContext.ts +18 -0
  100. package/src/collapsible/root/stateAttributesMapping.ts +9 -0
  101. package/src/collapsible/root/useCollapsibleRoot.ts +252 -0
  102. package/src/collapsible/trigger/CollapsibleTrigger.vue +63 -0
  103. package/src/collapsible/trigger/CollapsibleTriggerDataAttributes.ts +6 -0
  104. package/src/composite/composite.ts +232 -0
  105. package/src/composite/constants.ts +1 -0
  106. package/src/composite/item/CompositeItem.vue +75 -0
  107. package/src/composite/item/useCompositeItem.ts +63 -0
  108. package/src/composite/list/CompositeList.vue +168 -0
  109. package/src/composite/list/CompositeListContext.ts +21 -0
  110. package/src/composite/list/useCompositeListItem.ts +130 -0
  111. package/src/composite/root/CompositeRoot.vue +106 -0
  112. package/src/composite/root/CompositeRootContext.ts +36 -0
  113. package/src/composite/root/index.ts +7 -0
  114. package/src/composite/root/useCompositeRoot.ts +418 -0
  115. package/src/direction-provider/DirectionContext.ts +29 -0
  116. package/src/direction-provider/DirectionProvider.vue +31 -0
  117. package/src/direction-provider/index.ts +8 -0
  118. package/src/field/control/FieldControl.vue +211 -0
  119. package/src/field/control/FieldControlDataAttributes.ts +30 -0
  120. package/src/field/description/FieldDescription.vue +62 -0
  121. package/src/field/description/FieldDescriptionDataAttributes.ts +30 -0
  122. package/src/field/error/FieldError.vue +159 -0
  123. package/src/field/error/FieldErrorDataAttributes.ts +38 -0
  124. package/src/field/index.ts +27 -0
  125. package/src/field/item/FieldItem.vue +63 -0
  126. package/src/field/item/FieldItemContext.ts +16 -0
  127. package/src/field/label/FieldLabel.vue +102 -0
  128. package/src/field/label/FieldLabelDataAttributes.ts +30 -0
  129. package/src/field/root/FieldRoot.vue +262 -0
  130. package/src/field/root/FieldRootContext.ts +97 -0
  131. package/src/field/root/FieldRootDataAttributes.ts +30 -0
  132. package/src/field/root/useFieldRootState.ts +81 -0
  133. package/src/field/root/useFieldValidation.ts +298 -0
  134. package/src/field/root/useFieldValidity.ts +30 -0
  135. package/src/field/useField.ts +73 -0
  136. package/src/field/utils/constants.ts +45 -0
  137. package/src/field/utils/getCombinedFieldValidityData.ts +18 -0
  138. package/src/field/validity/FieldValidity.vue +36 -0
  139. package/src/fieldset/index.ts +8 -0
  140. package/src/fieldset/legend/FieldsetLegend.vue +72 -0
  141. package/src/fieldset/root/FieldsetRoot.vue +74 -0
  142. package/src/fieldset/root/FieldsetRootContext.ts +26 -0
  143. package/src/floating-ui-vue/types.ts +4 -0
  144. package/src/floating-ui-vue/utils/composite.ts +475 -0
  145. package/src/floating-ui-vue/utils/constants.ts +4 -0
  146. package/src/floating-ui-vue/utils/event.ts +4 -0
  147. package/src/floating-ui-vue/utils.ts +2 -0
  148. package/src/form/Form.vue +188 -0
  149. package/src/form/FormContext.ts +59 -0
  150. package/src/form/index.ts +10 -0
  151. package/src/index.ts +14 -0
  152. package/src/labelable-provider/LabelableContext.ts +33 -0
  153. package/src/labelable-provider/LabelableProvider.vue +55 -0
  154. package/src/labelable-provider/index.ts +6 -0
  155. package/src/labelable-provider/useAriaLabelledBy.ts +100 -0
  156. package/src/labelable-provider/useLabelableId.ts +30 -0
  157. package/src/merge-props/index.ts +1 -0
  158. package/src/merge-props/mergeProps.ts +192 -0
  159. package/src/test/index.ts +1 -0
  160. package/src/test/utils.ts +9 -0
  161. package/src/types/index.ts +10 -0
  162. package/src/use-button/index.ts +1 -0
  163. package/src/use-button/useButton.ts +231 -0
  164. package/src/use-render/index.ts +1 -0
  165. package/src/use-render/useRender.spec.ts +90 -0
  166. package/src/use-render/useRender.ts +152 -0
  167. package/src/utils/collapsibleOpenStateMapping.ts +33 -0
  168. package/src/utils/constants.ts +1 -0
  169. package/src/utils/createBaseUIEventDetails.ts +127 -0
  170. package/src/utils/empty.ts +5 -0
  171. package/src/utils/error.ts +19 -0
  172. package/src/utils/getStateAttributesProps.ts +31 -0
  173. package/src/utils/isElementDisabled.ts +7 -0
  174. package/src/utils/noop.ts +1 -0
  175. package/src/utils/reasons.ts +69 -0
  176. package/src/utils/resolveRef.ts +9 -0
  177. package/src/utils/slot.ts +6 -0
  178. package/src/utils/stateAttributesMapping.ts +28 -0
  179. package/src/utils/transitionStatusMapping.ts +22 -0
  180. package/src/utils/types.ts +47 -0
  181. package/src/utils/useAnimationFrame.ts +130 -0
  182. package/src/utils/useAnimationsFinished.ts +101 -0
  183. package/src/utils/useBaseUiId.ts +9 -0
  184. package/src/utils/useControllableState.ts +44 -0
  185. package/src/utils/useFocusableWhenDisabled.ts +85 -0
  186. package/src/utils/useId.ts +26 -0
  187. package/src/utils/useMergedRefs.ts +91 -0
  188. package/src/utils/useOpenChangeComplete.ts +52 -0
  189. package/src/utils/useRenderElement.ts +162 -0
  190. package/src/utils/useTimeout.ts +48 -0
  191. package/src/utils/useTransitionStatus.ts +104 -0
  192. package/src/utils/warn.ts +15 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldDescription.cjs","names":[],"sources":["../../src/field/description/FieldDescription.vue","../../src/field/description/FieldDescription.vue"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwBA,MAAM,QAAQ;EAId,MAAM,2BAAiB;EAEvB,MAAM,cAAc,yCAAY,OAAS;EACzC,MAAM,6BAAoB,MAAM,MAAM,YAAW;EAEjD,MAAM,mBAAmB,iDAAoB,MAAK;EAClD,MAAM,EAAE,kBAAkB,kDAAoB;AAE9C,wBAAa,cAAc;GACzB,MAAM,YAAY,GAAG;AACrB,OAAI,WAAW;AACb,mBAAc,QAAO,IAAI,OAAO,UAAU,CAAA;AAC1C,oBAAgB,eAAc,QAAO,IAAI,QAAO,SAAQ,SAAS,UAAU,CAAC,CAAA;;IAE/E;EAED,MAAM,EAAE,KAAK,aAAa,eAAe,uCAAiB;GACxD,gBAAgB;GAChB,OAAO,iBAAiB;GACxB,gCAAuB;IACrB,GAAG;IACH,IAAI,GAAG;IACR,EAAE;GACH,wBAAwB;GACxB,gBAAgB;GACjB,CAAA;;yBAIa,WAAU,uBAAyD,KAAA,QAAA,WAAA;;IAAtD,sBAAO,YAAW;IAAG,sBAAO,iBAAgB,CAAC;oGACtD,IAAG,CAAA,8CAAA,EAAA,KAAA,GAAA,iBAAiB,YAAW,CAAA,CAAA,EAAA;oCACL,qBAAA,KAAA,QAAA,WAAA,EAAjC,sBAAO,iBAAgB,CAAC"}
@@ -0,0 +1,81 @@
1
+ import { useRenderElement } from "../button/Button.js";
2
+ import { fieldValidityMapping, useBaseUiId, useFieldRootContext, useLabelableContext } from "../control/FieldControl.js";
3
+ import { computed, createBlock, createCommentVNode, defineComponent, guardReactiveProps, mergeProps, normalizeProps, openBlock, renderSlot, resolveDynamicComponent, unref, useAttrs, watchEffect, withCtx } from "vue";
4
+
5
+ //#region src/field/description/FieldDescription.vue?vue&type=script&setup=true&lang.ts
6
+ var FieldDescription_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
7
+ name: "FieldDescription",
8
+ inheritAttrs: false,
9
+ __name: "FieldDescription",
10
+ props: {
11
+ id: {
12
+ type: String,
13
+ required: false
14
+ },
15
+ as: {
16
+ type: null,
17
+ required: false,
18
+ default: "p"
19
+ },
20
+ class: {
21
+ type: Function,
22
+ required: false,
23
+ skipCheck: true
24
+ },
25
+ style: {
26
+ type: [
27
+ Boolean,
28
+ null,
29
+ String,
30
+ Object,
31
+ Array,
32
+ Function
33
+ ],
34
+ required: false,
35
+ skipCheck: true
36
+ }
37
+ },
38
+ setup(__props) {
39
+ const props = __props;
40
+ const attrs = useAttrs();
41
+ const generatedId = useBaseUiId(void 0);
42
+ const id = computed(() => props.id ?? generatedId);
43
+ const fieldRootContext = useFieldRootContext(false);
44
+ const { setMessageIds } = useLabelableContext();
45
+ watchEffect((onCleanup) => {
46
+ const currentId = id.value;
47
+ if (currentId) {
48
+ setMessageIds((ids) => ids.concat(currentId));
49
+ onCleanup(() => setMessageIds((ids) => ids.filter((item) => item !== currentId)));
50
+ }
51
+ });
52
+ const { tag, mergedProps, renderless } = useRenderElement({
53
+ componentProps: props,
54
+ state: fieldRootContext.state,
55
+ props: computed(() => ({
56
+ ...attrs,
57
+ id: id.value
58
+ })),
59
+ stateAttributesMapping: fieldValidityMapping,
60
+ defaultTagName: "p"
61
+ });
62
+ return (_ctx, _cache) => {
63
+ return unref(renderless) ? renderSlot(_ctx.$slots, "default", {
64
+ key: 0,
65
+ props: unref(mergedProps),
66
+ state: unref(fieldRootContext).state
67
+ }) : (openBlock(), createBlock(resolveDynamicComponent(unref(tag)), normalizeProps(mergeProps({ key: 1 }, unref(mergedProps))), {
68
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", { state: unref(fieldRootContext).state })]),
69
+ _: 3
70
+ }, 16));
71
+ };
72
+ }
73
+ });
74
+
75
+ //#endregion
76
+ //#region src/field/description/FieldDescription.vue
77
+ var FieldDescription_default = FieldDescription_vue_vue_type_script_setup_true_lang_default;
78
+
79
+ //#endregion
80
+ export { FieldDescription_default };
81
+ //# sourceMappingURL=FieldDescription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldDescription.js","names":[],"sources":["../../src/field/description/FieldDescription.vue","../../src/field/description/FieldDescription.vue"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwBA,MAAM,QAAQ;EAId,MAAM,QAAQ,UAAS;EAEvB,MAAM,cAAc,YAAY,OAAS;EACzC,MAAM,KAAK,eAAe,MAAM,MAAM,YAAW;EAEjD,MAAM,mBAAmB,oBAAoB,MAAK;EAClD,MAAM,EAAE,kBAAkB,qBAAoB;AAE9C,eAAa,cAAc;GACzB,MAAM,YAAY,GAAG;AACrB,OAAI,WAAW;AACb,mBAAc,QAAO,IAAI,OAAO,UAAU,CAAA;AAC1C,oBAAgB,eAAc,QAAO,IAAI,QAAO,SAAQ,SAAS,UAAU,CAAC,CAAA;;IAE/E;EAED,MAAM,EAAE,KAAK,aAAa,eAAe,iBAAiB;GACxD,gBAAgB;GAChB,OAAO,iBAAiB;GACxB,OAAO,gBAAgB;IACrB,GAAG;IACH,IAAI,GAAG;IACR,EAAE;GACH,wBAAwB;GACxB,gBAAgB;GACjB,CAAA;;UAIa,MAAA,WAAU,GAAtB,WAA+E,KAAA,QAAA,WAAA;;IAAtD,OAAO,MAAA,YAAW;IAAG,OAAO,MAAA,iBAAgB,CAAC;sBACtE,YAEY,wBAFI,MAAA,IAAG,CAAA,EAAA,eAAA,WAAA,EAAA,KAAA,GAAA,EAAiB,MAAA,YAAW,CAAA,CAAA,EAAA;2BACL,CAAxC,WAAwC,KAAA,QAAA,WAAA,EAAjC,OAAO,MAAA,iBAAgB,CAAC"}
@@ -0,0 +1,26 @@
1
+ let vue = require("vue");
2
+
3
+ //#region src/direction-provider/DirectionContext.ts
4
+ /**
5
+ * @internal
6
+ */
7
+ const directionContextKey = Symbol("DirectionContext");
8
+ function useDirection() {
9
+ const context = (0, vue.inject)(directionContextKey, void 0);
10
+ return (0, vue.computed)(() => context?.direction.value ?? "ltr");
11
+ }
12
+
13
+ //#endregion
14
+ Object.defineProperty(exports, 'directionContextKey', {
15
+ enumerable: true,
16
+ get: function () {
17
+ return directionContextKey;
18
+ }
19
+ });
20
+ Object.defineProperty(exports, 'useDirection', {
21
+ enumerable: true,
22
+ get: function () {
23
+ return useDirection;
24
+ }
25
+ });
26
+ //# sourceMappingURL=DirectionContext.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DirectionContext.cjs","names":[],"sources":["../../src/direction-provider/DirectionContext.ts"],"sourcesContent":[],"mappings":";;;;;;AAYA,MAAa,sBAAsB,OACjC,mBACD;AAUD,SAAgB,eAA2C;CACzD,MAAM,0BAAiB,qBAAqB,OAAU;AAEtD,gCAAsB,SAAS,UAAU,SAAS,MAAM"}
@@ -0,0 +1,15 @@
1
+ import { computed, inject } from "vue";
2
+
3
+ //#region src/direction-provider/DirectionContext.ts
4
+ /**
5
+ * @internal
6
+ */
7
+ const directionContextKey = Symbol("DirectionContext");
8
+ function useDirection() {
9
+ const context = inject(directionContextKey, void 0);
10
+ return computed(() => context?.direction.value ?? "ltr");
11
+ }
12
+
13
+ //#endregion
14
+ export { directionContextKey, useDirection };
15
+ //# sourceMappingURL=DirectionContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DirectionContext.js","names":[],"sources":["../../src/direction-provider/DirectionContext.ts"],"sourcesContent":[],"mappings":";;;;;;AAYA,MAAa,sBAAsB,OACjC,mBACD;AAUD,SAAgB,eAA2C;CACzD,MAAM,UAAU,OAAO,qBAAqB,OAAU;AAEtD,QAAO,eAAe,SAAS,UAAU,SAAS,MAAM"}
@@ -0,0 +1,37 @@
1
+ const require_direction_provider_DirectionContext = require('./DirectionContext.cjs');
2
+ let vue = require("vue");
3
+
4
+ //#region src/direction-provider/DirectionProvider.vue?vue&type=script&setup=true&lang.ts
5
+ /**
6
+ * Enables RTL behavior for Base UI Vue components.
7
+ *
8
+ * Documentation: [Base UI Vue Direction Provider](https://base-ui-vue.com/utils/direction-provider)
9
+ */
10
+ var DirectionProvider_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({
11
+ name: "DirectionProvider",
12
+ __name: "DirectionProvider",
13
+ props: { direction: {
14
+ type: String,
15
+ required: false,
16
+ default: "ltr"
17
+ } },
18
+ setup(__props) {
19
+ (0, vue.provide)(require_direction_provider_DirectionContext.directionContextKey, { direction: (0, vue.toRef)(__props, "direction") });
20
+ return (_ctx, _cache) => {
21
+ return (0, vue.renderSlot)(_ctx.$slots, "default");
22
+ };
23
+ }
24
+ });
25
+
26
+ //#endregion
27
+ //#region src/direction-provider/DirectionProvider.vue
28
+ var DirectionProvider_default = DirectionProvider_vue_vue_type_script_setup_true_lang_default;
29
+
30
+ //#endregion
31
+ Object.defineProperty(exports, 'DirectionProvider_default', {
32
+ enumerable: true,
33
+ get: function () {
34
+ return DirectionProvider_default;
35
+ }
36
+ });
37
+ //# sourceMappingURL=DirectionProvider.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DirectionProvider.cjs","names":[],"sources":["../../src/direction-provider/DirectionProvider.vue","../../src/direction-provider/DirectionProvider.vue"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;;;;AAyBA,mBAAQ,iEAJa,EACnB,0BALY,SAKY,YAAY,EACtC,CAEyC;;8BAI/B,KAAA,QAAA,UAAA"}
@@ -0,0 +1,32 @@
1
+ import { directionContextKey } from "./DirectionContext.js";
2
+ import { defineComponent, provide, renderSlot, toRef } from "vue";
3
+
4
+ //#region src/direction-provider/DirectionProvider.vue?vue&type=script&setup=true&lang.ts
5
+ /**
6
+ * Enables RTL behavior for Base UI Vue components.
7
+ *
8
+ * Documentation: [Base UI Vue Direction Provider](https://base-ui-vue.com/utils/direction-provider)
9
+ */
10
+ var DirectionProvider_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
11
+ name: "DirectionProvider",
12
+ __name: "DirectionProvider",
13
+ props: { direction: {
14
+ type: String,
15
+ required: false,
16
+ default: "ltr"
17
+ } },
18
+ setup(__props) {
19
+ provide(directionContextKey, { direction: toRef(__props, "direction") });
20
+ return (_ctx, _cache) => {
21
+ return renderSlot(_ctx.$slots, "default");
22
+ };
23
+ }
24
+ });
25
+
26
+ //#endregion
27
+ //#region src/direction-provider/DirectionProvider.vue
28
+ var DirectionProvider_default = DirectionProvider_vue_vue_type_script_setup_true_lang_default;
29
+
30
+ //#endregion
31
+ export { DirectionProvider_default };
32
+ //# sourceMappingURL=DirectionProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DirectionProvider.js","names":[],"sources":["../../src/direction-provider/DirectionProvider.vue","../../src/direction-provider/DirectionProvider.vue"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;;;;AAyBA,UAAQ,qBAJa,EACnB,WAAW,MALC,SAKY,YAAY,EACtC,CAEyC;;UAIvC,WAAQ,KAAA,QAAA,UAAA"}
@@ -0,0 +1,414 @@
1
+ const require_button_Button = require('../button/Button.cjs');
2
+ const require_control_FieldControl = require('../control/FieldControl.cjs');
3
+ let vue = require("vue");
4
+
5
+ //#region src/utils/stateAttributesMapping.ts
6
+ let TransitionStatusDataAttributes = /* @__PURE__ */ function(TransitionStatusDataAttributes) {
7
+ /**
8
+ * Present when the component is animating in.
9
+ */
10
+ TransitionStatusDataAttributes["startingStyle"] = "data-starting-style";
11
+ /**
12
+ * Present when the component is animating out.
13
+ */
14
+ TransitionStatusDataAttributes["endingStyle"] = "data-ending-style";
15
+ return TransitionStatusDataAttributes;
16
+ }({});
17
+ const STARTING_HOOK = { [TransitionStatusDataAttributes.startingStyle]: "" };
18
+ const ENDING_HOOK = { [TransitionStatusDataAttributes.endingStyle]: "" };
19
+ const transitionStatusMapping = { transitionStatus(value) {
20
+ if (value === "starting") return STARTING_HOOK;
21
+ if (value === "ending") return ENDING_HOOK;
22
+ return null;
23
+ } };
24
+
25
+ //#endregion
26
+ //#region src/utils/resolveRef.ts
27
+ function resolveRef(refOrElement) {
28
+ const element = (0, vue.unref)(refOrElement);
29
+ if (element && "$el" in element) return element.$el;
30
+ return element;
31
+ }
32
+
33
+ //#endregion
34
+ //#region src/utils/useAnimationFrame.ts
35
+ /**
36
+ * Unlike `setTimeout`, rAF doesn't guarantee a positive integer return value, so we can't have
37
+ * a monomorphic `uint` type with `0` meaning empty.
38
+ * See warning note at:
39
+ * https://developer.mozilla.org/en-US/docs/Web/API/Window/requestAnimationFrame#return_value
40
+ */
41
+ const EMPTY = null;
42
+ let LAST_RAF = typeof window !== "undefined" ? window.requestAnimationFrame : void 0;
43
+ var Scheduler = class {
44
+ callbacks = [];
45
+ callbacksCount = 0;
46
+ nextId = 1;
47
+ startId = 1;
48
+ isScheduled = false;
49
+ tick = (timestamp) => {
50
+ this.isScheduled = false;
51
+ const currentCallbacks = this.callbacks;
52
+ const currentCallbacksCount = this.callbacksCount;
53
+ this.callbacks = [];
54
+ this.callbacksCount = 0;
55
+ this.startId = this.nextId;
56
+ if (currentCallbacksCount > 0) for (let i = 0; i < currentCallbacks.length; i += 1) currentCallbacks[i]?.(timestamp);
57
+ };
58
+ request(fn) {
59
+ if (typeof window === "undefined") return 0;
60
+ const id = this.nextId;
61
+ this.nextId += 1;
62
+ this.callbacks.push(fn);
63
+ this.callbacksCount += 1;
64
+ const didRAFChange = process.env.NODE_ENV !== "production" && LAST_RAF !== window.requestAnimationFrame && (LAST_RAF = window.requestAnimationFrame, true);
65
+ if (!this.isScheduled || didRAFChange) {
66
+ window.requestAnimationFrame(this.tick);
67
+ this.isScheduled = true;
68
+ }
69
+ return id;
70
+ }
71
+ cancel(id) {
72
+ const index = id - this.startId;
73
+ if (index < 0 || index >= this.callbacks.length) return;
74
+ this.callbacks[index] = null;
75
+ this.callbacksCount -= 1;
76
+ }
77
+ };
78
+ const scheduler = new Scheduler();
79
+ var AnimationFrame = class AnimationFrame {
80
+ static create() {
81
+ return new AnimationFrame();
82
+ }
83
+ static request(fn) {
84
+ return scheduler.request(fn);
85
+ }
86
+ static cancel(id) {
87
+ return scheduler.cancel(id);
88
+ }
89
+ currentId = EMPTY;
90
+ request(fn) {
91
+ this.cancel();
92
+ this.currentId = scheduler.request((timestamp) => {
93
+ this.currentId = EMPTY;
94
+ fn(timestamp);
95
+ });
96
+ }
97
+ cancel = () => {
98
+ if (this.currentId !== EMPTY) {
99
+ scheduler.cancel(this.currentId);
100
+ this.currentId = EMPTY;
101
+ }
102
+ };
103
+ disposeEffect = () => {
104
+ return this.cancel;
105
+ };
106
+ };
107
+ /**
108
+ * A `requestAnimationFrame` with automatic cleanup and guard.
109
+ */
110
+ function useAnimationFrame() {
111
+ const animationFrame = AnimationFrame.create();
112
+ (0, vue.onUnmounted)(animationFrame.disposeEffect());
113
+ return animationFrame;
114
+ }
115
+
116
+ //#endregion
117
+ //#region src/utils/useAnimationsFinished.ts
118
+ function useAnimationsFinished(elementOrRef, waitForStartingStyleRemoved = false, treatAbortedAsFinished = true) {
119
+ const frame = useAnimationFrame();
120
+ return (fnToExecute, signal = null) => {
121
+ frame.cancel();
122
+ function done() {
123
+ (0, vue.nextTick)(() => {
124
+ fnToExecute();
125
+ });
126
+ }
127
+ const resolvedElement = resolveRef(elementOrRef);
128
+ if (resolvedElement == null) return;
129
+ if (typeof resolvedElement.getAnimations !== "function" || globalThis.BASE_UI_ANIMATIONS_DISABLED) fnToExecute();
130
+ else {
131
+ function execWaitForStartingStyleRemoved() {
132
+ const startingStyleAttribute = TransitionStatusDataAttributes.startingStyle;
133
+ if (!resolvedElement.hasAttribute(startingStyleAttribute)) {
134
+ frame.request(exec);
135
+ return;
136
+ }
137
+ const attributeObserver = new MutationObserver(() => {
138
+ if (!resolvedElement.hasAttribute(startingStyleAttribute)) {
139
+ attributeObserver.disconnect();
140
+ exec();
141
+ }
142
+ });
143
+ attributeObserver.observe(resolvedElement, {
144
+ attributes: true,
145
+ attributeFilter: [startingStyleAttribute]
146
+ });
147
+ signal?.addEventListener("abort", () => attributeObserver.disconnect(), { once: true });
148
+ }
149
+ function exec() {
150
+ Promise.all(resolvedElement.getAnimations().map((anim) => anim.finished)).then(() => {
151
+ if (signal?.aborted) return;
152
+ done();
153
+ }).catch(() => {
154
+ const currentAnimations = resolvedElement.getAnimations();
155
+ if (treatAbortedAsFinished) {
156
+ if (signal?.aborted) return;
157
+ done();
158
+ } else if (currentAnimations.length > 0 && currentAnimations.some((anim) => anim.pending || anim.playState !== "finished")) exec();
159
+ });
160
+ }
161
+ if ((0, vue.toValue)(waitForStartingStyleRemoved)) {
162
+ execWaitForStartingStyleRemoved();
163
+ return;
164
+ }
165
+ frame.request(exec);
166
+ }
167
+ };
168
+ }
169
+
170
+ //#endregion
171
+ //#region src/utils/useTransitionStatus.ts
172
+ /**
173
+ * Provides a status string for CSS animations.
174
+ * @param openRef - a boolean that determines if the element is open.
175
+ * @param enableIdleStateRef - a boolean that enables the `'idle'` state between `'starting'` and `'ending'`
176
+ * @param deferEndingStateRef - a boolean that defers the `'ending'` state.
177
+ */
178
+ function useTransitionStatus(openRef, enableIdleStateRef = false, deferEndingStateRef = false) {
179
+ const open = (0, vue.computed)(() => (0, vue.toValue)(openRef));
180
+ const enableIdleState = (0, vue.computed)(() => (0, vue.toValue)(enableIdleStateRef));
181
+ const deferEndingState = (0, vue.computed)(() => (0, vue.toValue)(deferEndingStateRef));
182
+ const transitionStatus = (0, vue.ref)(open.value && enableIdleState.value ? "idle" : void 0);
183
+ const mounted = (0, vue.ref)(open.value);
184
+ (0, vue.watchEffect)(() => {
185
+ if (open.value && !mounted.value) {
186
+ mounted.value = true;
187
+ transitionStatus.value = "starting";
188
+ }
189
+ if (!open.value && mounted.value && transitionStatus.value !== "ending" && !deferEndingState.value) transitionStatus.value = "ending";
190
+ if (!open.value && !mounted.value && transitionStatus.value === "ending") transitionStatus.value = void 0;
191
+ });
192
+ (0, vue.watchEffect)((onCleanup) => {
193
+ if (!open.value && mounted.value && transitionStatus.value !== "ending" && deferEndingState.value) {
194
+ const frame = AnimationFrame.request(() => {
195
+ transitionStatus.value = "ending";
196
+ });
197
+ onCleanup(() => {
198
+ AnimationFrame.cancel(frame);
199
+ });
200
+ }
201
+ });
202
+ (0, vue.watchEffect)((onCleanup) => {
203
+ if (!open.value || enableIdleState.value) return;
204
+ const frame = AnimationFrame.request(() => {
205
+ transitionStatus.value = void 0;
206
+ });
207
+ onCleanup(() => {
208
+ AnimationFrame.cancel(frame);
209
+ });
210
+ });
211
+ (0, vue.watchEffect)((onCleanup) => {
212
+ if (!open.value || !enableIdleState.value) return;
213
+ if (open.value && mounted.value && transitionStatus.value !== "idle") transitionStatus.value = "starting";
214
+ const frame = AnimationFrame.request(() => {
215
+ transitionStatus.value = "idle";
216
+ });
217
+ onCleanup(() => {
218
+ AnimationFrame.cancel(frame);
219
+ });
220
+ });
221
+ return {
222
+ mounted,
223
+ setMounted(value) {
224
+ mounted.value = value;
225
+ },
226
+ transitionStatus
227
+ };
228
+ }
229
+
230
+ //#endregion
231
+ //#region src/utils/useOpenChangeComplete.ts
232
+ /**
233
+ * Calls the provided function when the CSS open/close animation or transition completes.
234
+ */
235
+ function useOpenChangeComplete(parameters) {
236
+ const runOnceAnimationsFinish = useAnimationsFinished(parameters.ref, parameters.open, false);
237
+ (0, vue.watchEffect)((onCleanup) => {
238
+ if (!((0, vue.toValue)(parameters.enabled) ?? true)) return;
239
+ const abortController = new AbortController();
240
+ runOnceAnimationsFinish(parameters.onComplete, abortController.signal);
241
+ onCleanup(() => {
242
+ abortController.abort();
243
+ });
244
+ });
245
+ }
246
+
247
+ //#endregion
248
+ //#region src/field/error/FieldError.vue?vue&type=script&setup=true&lang.ts
249
+ const _hoisted_1 = { key: 1 };
250
+ var FieldError_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({
251
+ name: "FieldError",
252
+ inheritAttrs: false,
253
+ __name: "FieldError",
254
+ props: {
255
+ id: {
256
+ type: String,
257
+ required: false
258
+ },
259
+ match: {
260
+ type: Boolean,
261
+ required: false,
262
+ skipCheck: true
263
+ },
264
+ as: {
265
+ type: null,
266
+ required: false,
267
+ default: "div"
268
+ },
269
+ class: {
270
+ type: Function,
271
+ required: false,
272
+ skipCheck: true
273
+ },
274
+ style: {
275
+ type: [
276
+ Boolean,
277
+ null,
278
+ String,
279
+ Object,
280
+ Array,
281
+ Function
282
+ ],
283
+ required: false,
284
+ skipCheck: true
285
+ }
286
+ },
287
+ setup(__props) {
288
+ const props = __props;
289
+ const stateAttributesMapping = {
290
+ ...require_control_FieldControl.fieldValidityMapping,
291
+ ...transitionStatusMapping
292
+ };
293
+ const attrs = (0, vue.useAttrs)();
294
+ const id = require_control_FieldControl.useBaseUiId(props.id);
295
+ const { validityData, state: fieldState, name } = require_control_FieldControl.useFieldRootContext(false);
296
+ const { setMessageIds } = require_control_FieldControl.useLabelableContext();
297
+ const { errors } = require_control_FieldControl.useFormContext();
298
+ const formError = (0, vue.computed)(() => {
299
+ const n = name.value;
300
+ return n ? errors.value[n] ?? null : null;
301
+ });
302
+ const rendered = (0, vue.computed)(() => {
303
+ if (formError.value || props.match === true) return true;
304
+ if (props.match) return Boolean(validityData.value.state[props.match]);
305
+ return validityData.value.state.valid === false;
306
+ });
307
+ const { mounted, transitionStatus, setMounted } = useTransitionStatus(rendered);
308
+ (0, vue.watch)(() => ({
309
+ rendered: rendered.value,
310
+ id
311
+ }), ({ rendered: isRendered }) => {
312
+ if (isRendered && id) setMessageIds((ids) => ids.concat(id));
313
+ else if (id) setMessageIds((ids) => ids.filter((item) => item !== id));
314
+ }, { immediate: true });
315
+ (0, vue.onUnmounted)(() => {
316
+ if (id) setMessageIds((ids) => ids.filter((item) => item !== id));
317
+ });
318
+ const errorRef = (0, vue.ref)(null);
319
+ const errorMessage = (0, vue.computed)(() => {
320
+ const fe = formError.value;
321
+ if (fe) return fe;
322
+ if (validityData.value.errors.length > 1) return validityData.value.errors;
323
+ return validityData.value.error;
324
+ });
325
+ useOpenChangeComplete({
326
+ open: rendered,
327
+ ref: errorRef,
328
+ onComplete() {
329
+ if (!rendered.value) setMounted(false);
330
+ }
331
+ });
332
+ const state = (0, vue.computed)(() => ({
333
+ ...fieldState.value,
334
+ transitionStatus: transitionStatus.value
335
+ }));
336
+ const { tag, mergedProps, renderless, ref: renderRef } = require_button_Button.useRenderElement({
337
+ componentProps: props,
338
+ state,
339
+ props: (0, vue.computed)(() => ({
340
+ ...attrs,
341
+ id
342
+ })),
343
+ stateAttributesMapping,
344
+ defaultTagName: "div",
345
+ ref: errorRef
346
+ });
347
+ return (_ctx, _cache) => {
348
+ return (0, vue.unref)(mounted) && (0, vue.unref)(renderless) ? (0, vue.renderSlot)(_ctx.$slots, "default", {
349
+ key: 0,
350
+ ref: (0, vue.unref)(renderRef),
351
+ props: (0, vue.unref)(mergedProps),
352
+ state: state.value,
353
+ message: errorMessage.value
354
+ }) : (0, vue.unref)(mounted) ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)((0, vue.unref)(tag)), (0, vue.mergeProps)({
355
+ key: 1,
356
+ ref: (0, vue.unref)(renderRef)
357
+ }, (0, vue.unref)(mergedProps)), {
358
+ default: (0, vue.withCtx)(() => [_ctx.$slots.default ? (0, vue.renderSlot)(_ctx.$slots, "default", { key: 0 }) : Array.isArray(errorMessage.value) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("ul", _hoisted_1, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(errorMessage.value, (message) => {
359
+ return (0, vue.openBlock)(), (0, vue.createElementBlock)("li", { key: message }, (0, vue.toDisplayString)(message), 1);
360
+ }), 128))])) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 2 }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(errorMessage.value), 1)], 64))]),
361
+ _: 3
362
+ }, 16)) : (0, vue.createCommentVNode)("v-if", true);
363
+ };
364
+ }
365
+ });
366
+
367
+ //#endregion
368
+ //#region src/field/error/FieldError.vue
369
+ var FieldError_default = FieldError_vue_vue_type_script_setup_true_lang_default;
370
+
371
+ //#endregion
372
+ Object.defineProperty(exports, 'AnimationFrame', {
373
+ enumerable: true,
374
+ get: function () {
375
+ return AnimationFrame;
376
+ }
377
+ });
378
+ Object.defineProperty(exports, 'FieldError_default', {
379
+ enumerable: true,
380
+ get: function () {
381
+ return FieldError_default;
382
+ }
383
+ });
384
+ Object.defineProperty(exports, 'transitionStatusMapping', {
385
+ enumerable: true,
386
+ get: function () {
387
+ return transitionStatusMapping;
388
+ }
389
+ });
390
+ Object.defineProperty(exports, 'useAnimationFrame', {
391
+ enumerable: true,
392
+ get: function () {
393
+ return useAnimationFrame;
394
+ }
395
+ });
396
+ Object.defineProperty(exports, 'useAnimationsFinished', {
397
+ enumerable: true,
398
+ get: function () {
399
+ return useAnimationsFinished;
400
+ }
401
+ });
402
+ Object.defineProperty(exports, 'useOpenChangeComplete', {
403
+ enumerable: true,
404
+ get: function () {
405
+ return useOpenChangeComplete;
406
+ }
407
+ });
408
+ Object.defineProperty(exports, 'useTransitionStatus', {
409
+ enumerable: true,
410
+ get: function () {
411
+ return useTransitionStatus;
412
+ }
413
+ });
414
+ //# sourceMappingURL=FieldError.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldError.cjs","names":["$slots"],"sources":["../../src/utils/stateAttributesMapping.ts","../../src/utils/resolveRef.ts","../../src/utils/useAnimationFrame.ts","../../src/utils/useAnimationsFinished.ts","../../src/utils/useTransitionStatus.ts","../../src/utils/useOpenChangeComplete.ts","../../src/field/error/FieldError.vue","../../src/field/error/FieldError.vue"],"sourcesContent":[],"mappings":"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"}