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,159 @@
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/form/Form.vue?vue&type=script&setup=true&lang.ts
6
+ var Form_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({
7
+ name: "BaseUIForm",
8
+ inheritAttrs: false,
9
+ __name: "Form",
10
+ props: {
11
+ validationMode: {
12
+ type: String,
13
+ required: false,
14
+ default: "onSubmit"
15
+ },
16
+ errors: {
17
+ type: Object,
18
+ required: false
19
+ },
20
+ noValidate: {
21
+ type: Boolean,
22
+ required: false,
23
+ default: true
24
+ },
25
+ as: {
26
+ type: null,
27
+ required: false,
28
+ default: "form"
29
+ },
30
+ class: {
31
+ type: Function,
32
+ required: false,
33
+ skipCheck: true
34
+ },
35
+ style: {
36
+ type: [
37
+ Boolean,
38
+ null,
39
+ String,
40
+ Object,
41
+ Array,
42
+ Function
43
+ ],
44
+ required: false,
45
+ skipCheck: true
46
+ }
47
+ },
48
+ emits: ["formSubmit"],
49
+ setup(__props, { expose: __expose, emit: __emit }) {
50
+ const props = __props;
51
+ const emit = __emit;
52
+ const attrs = (0, vue.useAttrs)();
53
+ const state = (0, vue.computed)(() => ({}));
54
+ const formRef = (0, vue.shallowRef)({ fields: /* @__PURE__ */ new Map() });
55
+ const submittedRef = (0, vue.ref)(false);
56
+ const submitAttemptedRef = (0, vue.ref)(false);
57
+ const internalErrors = (0, vue.ref)(props.errors ?? require_button_Button.EMPTY_OBJECT);
58
+ (0, vue.watch)(() => props.errors, (newErrors) => {
59
+ if (newErrors !== void 0) internalErrors.value = newErrors;
60
+ });
61
+ function focusControl(el) {
62
+ if (!el) return;
63
+ el.focus();
64
+ if (el.tagName === "INPUT") el.select();
65
+ }
66
+ (0, vue.watch)(internalErrors, () => {
67
+ if (!submittedRef.value) return;
68
+ submittedRef.value = false;
69
+ const invalidFields = Array.from(formRef.value.fields.values()).filter((field) => field.validityData.state.valid === false);
70
+ if (invalidFields.length) {
71
+ const controlRef = invalidFields[0].controlRef;
72
+ focusControl(controlRef.value);
73
+ }
74
+ });
75
+ function handleImperativeValidate(fieldName) {
76
+ const values = Array.from(formRef.value.fields.values());
77
+ if (fieldName) {
78
+ const namedField = values.find((field) => field.name === fieldName);
79
+ if (namedField) namedField.validate();
80
+ } else values.forEach((field) => {
81
+ field.validate();
82
+ });
83
+ }
84
+ const actionsRef = (0, vue.ref)({ validate: handleImperativeValidate });
85
+ function clearErrors(name) {
86
+ if (name && internalErrors.value && Object.prototype.hasOwnProperty.call(internalErrors.value, name)) {
87
+ const nextErrors = { ...internalErrors.value };
88
+ delete nextErrors[name];
89
+ internalErrors.value = nextErrors;
90
+ }
91
+ }
92
+ (0, vue.provide)(require_control_FieldControl.formContextKey, {
93
+ formRef,
94
+ validationMode: (0, vue.computed)(() => props.validationMode),
95
+ errors: internalErrors,
96
+ clearErrors,
97
+ submitAttempted: submitAttemptedRef
98
+ });
99
+ function handleSubmit(event) {
100
+ submitAttemptedRef.value = true;
101
+ let values = Array.from(formRef.value.fields.values());
102
+ values.forEach((field) => {
103
+ field.validate();
104
+ });
105
+ values = Array.from(formRef.value.fields.values());
106
+ const invalidFields = values.filter((field) => !field.validityData.state.valid);
107
+ if (invalidFields.length) {
108
+ event.preventDefault();
109
+ const controlRef = invalidFields[0].controlRef;
110
+ focusControl(controlRef.value);
111
+ } else {
112
+ submittedRef.value = true;
113
+ event.preventDefault();
114
+ emit("formSubmit", values.reduce((acc, field) => {
115
+ if (field.name) acc[field.name] = field.getValue();
116
+ return acc;
117
+ }, {}), event);
118
+ }
119
+ }
120
+ const { tag, mergedProps, renderless } = require_button_Button.useRenderElement({
121
+ componentProps: props,
122
+ state,
123
+ props: (0, vue.computed)(() => ({
124
+ ...attrs,
125
+ novalidate: props.noValidate || void 0,
126
+ onSubmit: handleSubmit
127
+ })),
128
+ defaultTagName: "form"
129
+ });
130
+ __expose({ actions: actionsRef.value });
131
+ return (_ctx, _cache) => {
132
+ return (0, vue.unref)(renderless) ? (0, vue.renderSlot)(_ctx.$slots, "default", {
133
+ key: 0,
134
+ props: (0, vue.unref)(mergedProps),
135
+ state: state.value,
136
+ actions: actionsRef.value
137
+ }) : ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)((0, vue.unref)(tag)), (0, vue.normalizeProps)((0, vue.mergeProps)({ key: 1 }, (0, vue.unref)(mergedProps))), {
138
+ default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default", {
139
+ state: state.value,
140
+ actions: actionsRef.value
141
+ })]),
142
+ _: 3
143
+ }, 16));
144
+ };
145
+ }
146
+ });
147
+
148
+ //#endregion
149
+ //#region src/form/Form.vue
150
+ var Form_default = Form_vue_vue_type_script_setup_true_lang_default;
151
+
152
+ //#endregion
153
+ Object.defineProperty(exports, 'Form_default', {
154
+ enumerable: true,
155
+ get: function () {
156
+ return Form_default;
157
+ }
158
+ });
159
+ //# sourceMappingURL=Form.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Form.cjs","names":[],"sources":["../../src/form/Form.vue","../../src/form/Form.vue"],"sourcesContent":[],"mappings":"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"}
@@ -0,0 +1,154 @@
1
+ import { EMPTY_OBJECT, useRenderElement } from "../button/Button.js";
2
+ import { formContextKey } from "../control/FieldControl.js";
3
+ import { computed, createBlock, createCommentVNode, defineComponent, guardReactiveProps, mergeProps, normalizeProps, openBlock, provide, ref, renderSlot, resolveDynamicComponent, shallowRef, unref, useAttrs, watch, withCtx } from "vue";
4
+
5
+ //#region src/form/Form.vue?vue&type=script&setup=true&lang.ts
6
+ var Form_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
7
+ name: "BaseUIForm",
8
+ inheritAttrs: false,
9
+ __name: "Form",
10
+ props: {
11
+ validationMode: {
12
+ type: String,
13
+ required: false,
14
+ default: "onSubmit"
15
+ },
16
+ errors: {
17
+ type: Object,
18
+ required: false
19
+ },
20
+ noValidate: {
21
+ type: Boolean,
22
+ required: false,
23
+ default: true
24
+ },
25
+ as: {
26
+ type: null,
27
+ required: false,
28
+ default: "form"
29
+ },
30
+ class: {
31
+ type: Function,
32
+ required: false,
33
+ skipCheck: true
34
+ },
35
+ style: {
36
+ type: [
37
+ Boolean,
38
+ null,
39
+ String,
40
+ Object,
41
+ Array,
42
+ Function
43
+ ],
44
+ required: false,
45
+ skipCheck: true
46
+ }
47
+ },
48
+ emits: ["formSubmit"],
49
+ setup(__props, { expose: __expose, emit: __emit }) {
50
+ const props = __props;
51
+ const emit = __emit;
52
+ const attrs = useAttrs();
53
+ const state = computed(() => ({}));
54
+ const formRef = shallowRef({ fields: /* @__PURE__ */ new Map() });
55
+ const submittedRef = ref(false);
56
+ const submitAttemptedRef = ref(false);
57
+ const internalErrors = ref(props.errors ?? EMPTY_OBJECT);
58
+ watch(() => props.errors, (newErrors) => {
59
+ if (newErrors !== void 0) internalErrors.value = newErrors;
60
+ });
61
+ function focusControl(el) {
62
+ if (!el) return;
63
+ el.focus();
64
+ if (el.tagName === "INPUT") el.select();
65
+ }
66
+ watch(internalErrors, () => {
67
+ if (!submittedRef.value) return;
68
+ submittedRef.value = false;
69
+ const invalidFields = Array.from(formRef.value.fields.values()).filter((field) => field.validityData.state.valid === false);
70
+ if (invalidFields.length) {
71
+ const controlRef = invalidFields[0].controlRef;
72
+ focusControl(controlRef.value);
73
+ }
74
+ });
75
+ function handleImperativeValidate(fieldName) {
76
+ const values = Array.from(formRef.value.fields.values());
77
+ if (fieldName) {
78
+ const namedField = values.find((field) => field.name === fieldName);
79
+ if (namedField) namedField.validate();
80
+ } else values.forEach((field) => {
81
+ field.validate();
82
+ });
83
+ }
84
+ const actionsRef = ref({ validate: handleImperativeValidate });
85
+ function clearErrors(name) {
86
+ if (name && internalErrors.value && Object.prototype.hasOwnProperty.call(internalErrors.value, name)) {
87
+ const nextErrors = { ...internalErrors.value };
88
+ delete nextErrors[name];
89
+ internalErrors.value = nextErrors;
90
+ }
91
+ }
92
+ provide(formContextKey, {
93
+ formRef,
94
+ validationMode: computed(() => props.validationMode),
95
+ errors: internalErrors,
96
+ clearErrors,
97
+ submitAttempted: submitAttemptedRef
98
+ });
99
+ function handleSubmit(event) {
100
+ submitAttemptedRef.value = true;
101
+ let values = Array.from(formRef.value.fields.values());
102
+ values.forEach((field) => {
103
+ field.validate();
104
+ });
105
+ values = Array.from(formRef.value.fields.values());
106
+ const invalidFields = values.filter((field) => !field.validityData.state.valid);
107
+ if (invalidFields.length) {
108
+ event.preventDefault();
109
+ const controlRef = invalidFields[0].controlRef;
110
+ focusControl(controlRef.value);
111
+ } else {
112
+ submittedRef.value = true;
113
+ event.preventDefault();
114
+ emit("formSubmit", values.reduce((acc, field) => {
115
+ if (field.name) acc[field.name] = field.getValue();
116
+ return acc;
117
+ }, {}), event);
118
+ }
119
+ }
120
+ const { tag, mergedProps, renderless } = useRenderElement({
121
+ componentProps: props,
122
+ state,
123
+ props: computed(() => ({
124
+ ...attrs,
125
+ novalidate: props.noValidate || void 0,
126
+ onSubmit: handleSubmit
127
+ })),
128
+ defaultTagName: "form"
129
+ });
130
+ __expose({ actions: actionsRef.value });
131
+ return (_ctx, _cache) => {
132
+ return unref(renderless) ? renderSlot(_ctx.$slots, "default", {
133
+ key: 0,
134
+ props: unref(mergedProps),
135
+ state: state.value,
136
+ actions: actionsRef.value
137
+ }) : (openBlock(), createBlock(resolveDynamicComponent(unref(tag)), normalizeProps(mergeProps({ key: 1 }, unref(mergedProps))), {
138
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", {
139
+ state: state.value,
140
+ actions: actionsRef.value
141
+ })]),
142
+ _: 3
143
+ }, 16));
144
+ };
145
+ }
146
+ });
147
+
148
+ //#endregion
149
+ //#region src/form/Form.vue
150
+ var Form_default = Form_vue_vue_type_script_setup_true_lang_default;
151
+
152
+ //#endregion
153
+ export { Form_default };
154
+ //# sourceMappingURL=Form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Form.js","names":[],"sources":["../../src/form/Form.vue","../../src/form/Form.vue"],"sourcesContent":[],"mappings":"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"}
@@ -0,0 +1,189 @@
1
+ const require_button_Button = require('../button/Button.cjs');
2
+ const require_error_FieldError = require('../error/FieldError.cjs');
3
+ let vue = require("vue");
4
+
5
+ //#region src/accordion/item/AccordionItemContext.ts
6
+ const accordionItemContextKey = Symbol("AccordionItemContext");
7
+ function useAccordionItemContext() {
8
+ const context = (0, vue.inject)(accordionItemContextKey);
9
+ if (context === void 0) throw new Error("Base UI Vue: AccordionItemContext is missing. Accordion parts must be placed within <AccordionItem>.");
10
+ return context;
11
+ }
12
+
13
+ //#endregion
14
+ //#region src/collapsible/panel/CollapsiblePanelDataAttributes.ts
15
+ let CollapsiblePanelDataAttributes = /* @__PURE__ */ function(CollapsiblePanelDataAttributes) {
16
+ /**
17
+ * Present when the collapsible panel is open.
18
+ */
19
+ CollapsiblePanelDataAttributes["open"] = "data-open";
20
+ /**
21
+ * Present when the collapsible panel is closed.
22
+ */
23
+ CollapsiblePanelDataAttributes["closed"] = "data-closed";
24
+ /**
25
+ * Present when the panel is animating in.
26
+ */
27
+ CollapsiblePanelDataAttributes["startingStyle"] = "data-starting-style";
28
+ /**
29
+ * Present when the panel is animating out.
30
+ */
31
+ CollapsiblePanelDataAttributes["endingStyle"] = "data-ending-style";
32
+ return CollapsiblePanelDataAttributes;
33
+ }({});
34
+
35
+ //#endregion
36
+ //#region src/collapsible/trigger/CollapsibleTriggerDataAttributes.ts
37
+ let CollapsibleTriggerDataAttributes = /* @__PURE__ */ function(CollapsibleTriggerDataAttributes) {
38
+ /**
39
+ * Present when the collapsible panel is open.
40
+ */
41
+ CollapsibleTriggerDataAttributes["panelOpen"] = "data-panel-open";
42
+ return CollapsibleTriggerDataAttributes;
43
+ }({});
44
+
45
+ //#endregion
46
+ //#region src/utils/collapsibleOpenStateMapping.ts
47
+ const PANEL_OPEN_HOOK = { [CollapsiblePanelDataAttributes.open]: "" };
48
+ const PANEL_CLOSED_HOOK = { [CollapsiblePanelDataAttributes.closed]: "" };
49
+ const triggerOpenStateMapping = { open(value) {
50
+ if (value) return { [CollapsibleTriggerDataAttributes.panelOpen]: "" };
51
+ return null;
52
+ } };
53
+ const collapsibleOpenStateMapping = { open(value) {
54
+ if (value) return PANEL_OPEN_HOOK;
55
+ return PANEL_CLOSED_HOOK;
56
+ } };
57
+
58
+ //#endregion
59
+ //#region src/accordion/item/AccordionItemDataAttributes.ts
60
+ let AccordionItemDataAttributes = /* @__PURE__ */ function(AccordionItemDataAttributes) {
61
+ /**
62
+ * Indicates the index of the accordion item.
63
+ * @type {number}
64
+ */
65
+ AccordionItemDataAttributes["index"] = "data-index";
66
+ /**
67
+ * Present when the accordion item is disabled.
68
+ */
69
+ AccordionItemDataAttributes["disabled"] = "data-disabled";
70
+ /**
71
+ * Present when the accordion item is open.
72
+ */
73
+ AccordionItemDataAttributes["open"] = "data-open";
74
+ return AccordionItemDataAttributes;
75
+ }({});
76
+
77
+ //#endregion
78
+ //#region src/accordion/item/stateAttributesMapping.ts
79
+ const accordionStateAttributesMapping = {
80
+ ...collapsibleOpenStateMapping,
81
+ index(value) {
82
+ return Number.isInteger(value) ? { [AccordionItemDataAttributes.index]: String(value) } : null;
83
+ },
84
+ ...require_error_FieldError.transitionStatusMapping,
85
+ value: () => null
86
+ };
87
+
88
+ //#endregion
89
+ //#region src/accordion/header/AccordionHeader.vue?vue&type=script&setup=true&lang.ts
90
+ var AccordionHeader_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({
91
+ name: "AccordionHeader",
92
+ inheritAttrs: false,
93
+ __name: "AccordionHeader",
94
+ props: {
95
+ as: {
96
+ type: null,
97
+ required: false,
98
+ default: "h3"
99
+ },
100
+ class: {
101
+ type: Function,
102
+ required: false,
103
+ skipCheck: true
104
+ },
105
+ style: {
106
+ type: [
107
+ Boolean,
108
+ null,
109
+ String,
110
+ Object,
111
+ Array,
112
+ Function
113
+ ],
114
+ required: false,
115
+ skipCheck: true
116
+ }
117
+ },
118
+ setup(__props) {
119
+ const props = __props;
120
+ const attrs = (0, vue.useAttrs)();
121
+ const { state } = useAccordionItemContext();
122
+ const { tag, mergedProps, renderless } = require_button_Button.useRenderElement({
123
+ componentProps: props,
124
+ state,
125
+ props: (0, vue.computed)(() => ({ ...attrs })),
126
+ stateAttributesMapping: accordionStateAttributesMapping,
127
+ defaultTagName: "h3"
128
+ });
129
+ return (_ctx, _cache) => {
130
+ return (0, vue.unref)(renderless) ? (0, vue.renderSlot)(_ctx.$slots, "default", {
131
+ key: 0,
132
+ props: (0, vue.unref)(mergedProps),
133
+ state: (0, vue.unref)(state)
134
+ }) : ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)((0, vue.unref)(tag)), (0, vue.normalizeProps)((0, vue.mergeProps)({ key: 1 }, (0, vue.unref)(mergedProps))), {
135
+ default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default", { state: (0, vue.unref)(state) })]),
136
+ _: 3
137
+ }, 16));
138
+ };
139
+ }
140
+ });
141
+
142
+ //#endregion
143
+ //#region src/accordion/header/AccordionHeader.vue
144
+ var AccordionHeader_default = AccordionHeader_vue_vue_type_script_setup_true_lang_default;
145
+
146
+ //#endregion
147
+ Object.defineProperty(exports, 'AccordionHeader_default', {
148
+ enumerable: true,
149
+ get: function () {
150
+ return AccordionHeader_default;
151
+ }
152
+ });
153
+ Object.defineProperty(exports, 'CollapsiblePanelDataAttributes', {
154
+ enumerable: true,
155
+ get: function () {
156
+ return CollapsiblePanelDataAttributes;
157
+ }
158
+ });
159
+ Object.defineProperty(exports, 'accordionItemContextKey', {
160
+ enumerable: true,
161
+ get: function () {
162
+ return accordionItemContextKey;
163
+ }
164
+ });
165
+ Object.defineProperty(exports, 'accordionStateAttributesMapping', {
166
+ enumerable: true,
167
+ get: function () {
168
+ return accordionStateAttributesMapping;
169
+ }
170
+ });
171
+ Object.defineProperty(exports, 'collapsibleOpenStateMapping', {
172
+ enumerable: true,
173
+ get: function () {
174
+ return collapsibleOpenStateMapping;
175
+ }
176
+ });
177
+ Object.defineProperty(exports, 'triggerOpenStateMapping', {
178
+ enumerable: true,
179
+ get: function () {
180
+ return triggerOpenStateMapping;
181
+ }
182
+ });
183
+ Object.defineProperty(exports, 'useAccordionItemContext', {
184
+ enumerable: true,
185
+ get: function () {
186
+ return useAccordionItemContext;
187
+ }
188
+ });
189
+ //# sourceMappingURL=AccordionHeader.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccordionHeader.cjs","names":["transitionStatusMapping"],"sources":["../../src/accordion/item/AccordionItemContext.ts","../../src/collapsible/panel/CollapsiblePanelDataAttributes.ts","../../src/collapsible/trigger/CollapsibleTriggerDataAttributes.ts","../../src/utils/collapsibleOpenStateMapping.ts","../../src/accordion/item/AccordionItemDataAttributes.ts","../../src/accordion/item/stateAttributesMapping.ts","../../src/accordion/header/AccordionHeader.vue","../../src/accordion/header/AccordionHeader.vue"],"sourcesContent":[],"mappings":";;;;;AAWA,MAAa,0BAA0B,OACrC,uBACD;AAED,SAAgB,0BAAgD;CAC9D,MAAM,0BAAiB,wBAAwB;AAC/C,KAAI,YAAY,OACd,OAAM,IAAI,MACR,uGACD;AAEH,QAAO;;;;;ACtBT,IAAY,0FAAL;;;;AAIL;;;;AAIA;;;;AAIA;;;;AAIA;;;;;;AChBF,IAAY,8FAAL;;;;AAIL;;;;;;ACAF,MAAM,kBAAkB,GACrB,+BAA+B,OAAO,IACxC;AAED,MAAM,oBAAoB,GACvB,+BAA+B,SAAS,IAC1C;AAED,MAAa,0BAER,EACH,KAAK,OAAO;AACV,KAAI,MACF,QAAO,GACJ,iCAAiC,YAAY,IAC/C;AAEH,QAAO;GAEV;AAED,MAAa,8BAA8B,EACzC,KAAK,OAAO;AACV,KAAI,MACF,QAAO;AAET,QAAO;GAEV;;;;AChCD,IAAY,oFAAL;;;;;AAKL;;;;AAIA;;;;AAIA;;;;;;ACPF,MAAa,kCAA8E;CACzF,GAAG;CACH,MAAM,OAAO;AACX,SAAO,OAAO,UAAU,MAAM,GAAG,GAAG,4BAA4B,QAAQ,OAAO,MAAM,EAAE,GAAG;;CAE5F,GAAGA;CACH,aAAa;CACd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECDD,MAAM,QAAQ;EAId,MAAM,2BAAiB;EACvB,MAAM,EAAE,UAAU,yBAAwB;EAE1C,MAAM,EAAE,KAAK,aAAa,eAAe,uCAAiB;GACxD,gBAAgB;GAChB;GACA,gCAAuB,EACrB,GAAG,OACJ,EAAE;GACH,wBAAwB;GACxB,gBAAgB;GACjB,CAAA;;yBAIa,WAAU,uBAAwC,KAAA,QAAA,WAAA;;IAArC,sBAAO,YAAW;IAAG,sBAAO,MAAK;oGAC1C,IAAG,CAAA,8CAAA,EAAA,KAAA,GAAA,iBAAiB,YAAW,CAAA,CAAA,EAAA;oCACtB,qBAAA,KAAA,QAAA,WAAA,EAAhB,sBAAO,MAAK,EAAA,CAAA"}
@@ -0,0 +1,148 @@
1
+ import { useRenderElement } from "../button/Button.js";
2
+ import { transitionStatusMapping } from "../error/FieldError.js";
3
+ import { computed, createBlock, createCommentVNode, defineComponent, guardReactiveProps, inject, mergeProps, normalizeProps, openBlock, renderSlot, resolveDynamicComponent, unref, useAttrs, withCtx } from "vue";
4
+
5
+ //#region src/accordion/item/AccordionItemContext.ts
6
+ const accordionItemContextKey = Symbol("AccordionItemContext");
7
+ function useAccordionItemContext() {
8
+ const context = inject(accordionItemContextKey);
9
+ if (context === void 0) throw new Error("Base UI Vue: AccordionItemContext is missing. Accordion parts must be placed within <AccordionItem>.");
10
+ return context;
11
+ }
12
+
13
+ //#endregion
14
+ //#region src/collapsible/panel/CollapsiblePanelDataAttributes.ts
15
+ let CollapsiblePanelDataAttributes = /* @__PURE__ */ function(CollapsiblePanelDataAttributes) {
16
+ /**
17
+ * Present when the collapsible panel is open.
18
+ */
19
+ CollapsiblePanelDataAttributes["open"] = "data-open";
20
+ /**
21
+ * Present when the collapsible panel is closed.
22
+ */
23
+ CollapsiblePanelDataAttributes["closed"] = "data-closed";
24
+ /**
25
+ * Present when the panel is animating in.
26
+ */
27
+ CollapsiblePanelDataAttributes["startingStyle"] = "data-starting-style";
28
+ /**
29
+ * Present when the panel is animating out.
30
+ */
31
+ CollapsiblePanelDataAttributes["endingStyle"] = "data-ending-style";
32
+ return CollapsiblePanelDataAttributes;
33
+ }({});
34
+
35
+ //#endregion
36
+ //#region src/collapsible/trigger/CollapsibleTriggerDataAttributes.ts
37
+ let CollapsibleTriggerDataAttributes = /* @__PURE__ */ function(CollapsibleTriggerDataAttributes) {
38
+ /**
39
+ * Present when the collapsible panel is open.
40
+ */
41
+ CollapsibleTriggerDataAttributes["panelOpen"] = "data-panel-open";
42
+ return CollapsibleTriggerDataAttributes;
43
+ }({});
44
+
45
+ //#endregion
46
+ //#region src/utils/collapsibleOpenStateMapping.ts
47
+ const PANEL_OPEN_HOOK = { [CollapsiblePanelDataAttributes.open]: "" };
48
+ const PANEL_CLOSED_HOOK = { [CollapsiblePanelDataAttributes.closed]: "" };
49
+ const triggerOpenStateMapping = { open(value) {
50
+ if (value) return { [CollapsibleTriggerDataAttributes.panelOpen]: "" };
51
+ return null;
52
+ } };
53
+ const collapsibleOpenStateMapping = { open(value) {
54
+ if (value) return PANEL_OPEN_HOOK;
55
+ return PANEL_CLOSED_HOOK;
56
+ } };
57
+
58
+ //#endregion
59
+ //#region src/accordion/item/AccordionItemDataAttributes.ts
60
+ let AccordionItemDataAttributes = /* @__PURE__ */ function(AccordionItemDataAttributes) {
61
+ /**
62
+ * Indicates the index of the accordion item.
63
+ * @type {number}
64
+ */
65
+ AccordionItemDataAttributes["index"] = "data-index";
66
+ /**
67
+ * Present when the accordion item is disabled.
68
+ */
69
+ AccordionItemDataAttributes["disabled"] = "data-disabled";
70
+ /**
71
+ * Present when the accordion item is open.
72
+ */
73
+ AccordionItemDataAttributes["open"] = "data-open";
74
+ return AccordionItemDataAttributes;
75
+ }({});
76
+
77
+ //#endregion
78
+ //#region src/accordion/item/stateAttributesMapping.ts
79
+ const accordionStateAttributesMapping = {
80
+ ...collapsibleOpenStateMapping,
81
+ index(value) {
82
+ return Number.isInteger(value) ? { [AccordionItemDataAttributes.index]: String(value) } : null;
83
+ },
84
+ ...transitionStatusMapping,
85
+ value: () => null
86
+ };
87
+
88
+ //#endregion
89
+ //#region src/accordion/header/AccordionHeader.vue?vue&type=script&setup=true&lang.ts
90
+ var AccordionHeader_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
91
+ name: "AccordionHeader",
92
+ inheritAttrs: false,
93
+ __name: "AccordionHeader",
94
+ props: {
95
+ as: {
96
+ type: null,
97
+ required: false,
98
+ default: "h3"
99
+ },
100
+ class: {
101
+ type: Function,
102
+ required: false,
103
+ skipCheck: true
104
+ },
105
+ style: {
106
+ type: [
107
+ Boolean,
108
+ null,
109
+ String,
110
+ Object,
111
+ Array,
112
+ Function
113
+ ],
114
+ required: false,
115
+ skipCheck: true
116
+ }
117
+ },
118
+ setup(__props) {
119
+ const props = __props;
120
+ const attrs = useAttrs();
121
+ const { state } = useAccordionItemContext();
122
+ const { tag, mergedProps, renderless } = useRenderElement({
123
+ componentProps: props,
124
+ state,
125
+ props: computed(() => ({ ...attrs })),
126
+ stateAttributesMapping: accordionStateAttributesMapping,
127
+ defaultTagName: "h3"
128
+ });
129
+ return (_ctx, _cache) => {
130
+ return unref(renderless) ? renderSlot(_ctx.$slots, "default", {
131
+ key: 0,
132
+ props: unref(mergedProps),
133
+ state: unref(state)
134
+ }) : (openBlock(), createBlock(resolveDynamicComponent(unref(tag)), normalizeProps(mergeProps({ key: 1 }, unref(mergedProps))), {
135
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", { state: unref(state) })]),
136
+ _: 3
137
+ }, 16));
138
+ };
139
+ }
140
+ });
141
+
142
+ //#endregion
143
+ //#region src/accordion/header/AccordionHeader.vue
144
+ var AccordionHeader_default = AccordionHeader_vue_vue_type_script_setup_true_lang_default;
145
+
146
+ //#endregion
147
+ export { AccordionHeader_default, CollapsiblePanelDataAttributes, accordionItemContextKey, accordionStateAttributesMapping, collapsibleOpenStateMapping, triggerOpenStateMapping, useAccordionItemContext };
148
+ //# sourceMappingURL=AccordionHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccordionHeader.js","names":[],"sources":["../../src/accordion/item/AccordionItemContext.ts","../../src/collapsible/panel/CollapsiblePanelDataAttributes.ts","../../src/collapsible/trigger/CollapsibleTriggerDataAttributes.ts","../../src/utils/collapsibleOpenStateMapping.ts","../../src/accordion/item/AccordionItemDataAttributes.ts","../../src/accordion/item/stateAttributesMapping.ts","../../src/accordion/header/AccordionHeader.vue","../../src/accordion/header/AccordionHeader.vue"],"sourcesContent":[],"mappings":";;;;;AAWA,MAAa,0BAA0B,OACrC,uBACD;AAED,SAAgB,0BAAgD;CAC9D,MAAM,UAAU,OAAO,wBAAwB;AAC/C,KAAI,YAAY,OACd,OAAM,IAAI,MACR,uGACD;AAEH,QAAO;;;;;ACtBT,IAAY,0FAAL;;;;AAIL;;;;AAIA;;;;AAIA;;;;AAIA;;;;;;AChBF,IAAY,8FAAL;;;;AAIL;;;;;;ACAF,MAAM,kBAAkB,GACrB,+BAA+B,OAAO,IACxC;AAED,MAAM,oBAAoB,GACvB,+BAA+B,SAAS,IAC1C;AAED,MAAa,0BAER,EACH,KAAK,OAAO;AACV,KAAI,MACF,QAAO,GACJ,iCAAiC,YAAY,IAC/C;AAEH,QAAO;GAEV;AAED,MAAa,8BAA8B,EACzC,KAAK,OAAO;AACV,KAAI,MACF,QAAO;AAET,QAAO;GAEV;;;;AChCD,IAAY,oFAAL;;;;;AAKL;;;;AAIA;;;;AAIA;;;;;;ACPF,MAAa,kCAA8E;CACzF,GAAG;CACH,MAAM,OAAO;AACX,SAAO,OAAO,UAAU,MAAM,GAAG,GAAG,4BAA4B,QAAQ,OAAO,MAAM,EAAE,GAAG;;CAE5F,GAAG;CACH,aAAa;CACd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECDD,MAAM,QAAQ;EAId,MAAM,QAAQ,UAAS;EACvB,MAAM,EAAE,UAAU,yBAAwB;EAE1C,MAAM,EAAE,KAAK,aAAa,eAAe,iBAAiB;GACxD,gBAAgB;GAChB;GACA,OAAO,gBAAgB,EACrB,GAAG,OACJ,EAAE;GACH,wBAAwB;GACxB,gBAAgB;GACjB,CAAA;;UAIa,MAAA,WAAU,GAAtB,WAA8D,KAAA,QAAA,WAAA;;IAArC,OAAO,MAAA,YAAW;IAAG,OAAO,MAAA,MAAK;sBAC1D,YAEY,wBAFI,MAAA,IAAG,CAAA,EAAA,eAAA,WAAA,EAAA,KAAA,GAAA,EAAiB,MAAA,YAAW,CAAA,CAAA,EAAA;2BACtB,CAAvB,WAAuB,KAAA,QAAA,WAAA,EAAhB,OAAO,MAAA,MAAK,EAAA,CAAA"}