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.
- package/LICENSE +21 -0
- package/README.md +1 -0
- package/dist/button/Button.cjs +524 -0
- package/dist/button/Button.cjs.map +1 -0
- package/dist/button/Button.js +453 -0
- package/dist/button/Button.js.map +1 -0
- package/dist/composite/composite.cjs +56 -0
- package/dist/composite/composite.cjs.map +1 -0
- package/dist/composite/composite.js +21 -0
- package/dist/composite/composite.js.map +1 -0
- package/dist/control/FieldControl.cjs +576 -0
- package/dist/control/FieldControl.cjs.map +1 -0
- package/dist/control/FieldControl.js +511 -0
- package/dist/control/FieldControl.js.map +1 -0
- package/dist/control/FieldControlDataAttributes.cjs +42 -0
- package/dist/control/FieldControlDataAttributes.cjs.map +1 -0
- package/dist/control/FieldControlDataAttributes.js +36 -0
- package/dist/control/FieldControlDataAttributes.js.map +1 -0
- package/dist/description/FieldDescription.cjs +86 -0
- package/dist/description/FieldDescription.cjs.map +1 -0
- package/dist/description/FieldDescription.js +81 -0
- package/dist/description/FieldDescription.js.map +1 -0
- package/dist/direction-provider/DirectionContext.cjs +26 -0
- package/dist/direction-provider/DirectionContext.cjs.map +1 -0
- package/dist/direction-provider/DirectionContext.js +15 -0
- package/dist/direction-provider/DirectionContext.js.map +1 -0
- package/dist/direction-provider/DirectionProvider.cjs +37 -0
- package/dist/direction-provider/DirectionProvider.cjs.map +1 -0
- package/dist/direction-provider/DirectionProvider.js +32 -0
- package/dist/direction-provider/DirectionProvider.js.map +1 -0
- package/dist/error/FieldError.cjs +414 -0
- package/dist/error/FieldError.cjs.map +1 -0
- package/dist/error/FieldError.js +373 -0
- package/dist/error/FieldError.js.map +1 -0
- package/dist/fallback/AvatarFallback.cjs +165 -0
- package/dist/fallback/AvatarFallback.cjs.map +1 -0
- package/dist/fallback/AvatarFallback.js +136 -0
- package/dist/fallback/AvatarFallback.js.map +1 -0
- package/dist/form/Form.cjs +159 -0
- package/dist/form/Form.cjs.map +1 -0
- package/dist/form/Form.js +154 -0
- package/dist/form/Form.js.map +1 -0
- package/dist/header/AccordionHeader.cjs +189 -0
- package/dist/header/AccordionHeader.cjs.map +1 -0
- package/dist/header/AccordionHeader.js +148 -0
- package/dist/header/AccordionHeader.js.map +1 -0
- package/dist/image/AvatarImage.cjs +150 -0
- package/dist/image/AvatarImage.cjs.map +1 -0
- package/dist/image/AvatarImage.js +145 -0
- package/dist/image/AvatarImage.js.map +1 -0
- package/dist/image/AvatarImageDataAttributes.cjs +26 -0
- package/dist/image/AvatarImageDataAttributes.cjs.map +1 -0
- package/dist/image/AvatarImageDataAttributes.js +20 -0
- package/dist/image/AvatarImageDataAttributes.js.map +1 -0
- package/dist/index.cjs +64 -0
- package/dist/index.d.cts +1501 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.ts +1501 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index2.cjs +2767 -0
- package/dist/index2.cjs.map +1 -0
- package/dist/index2.js +2618 -0
- package/dist/index2.js.map +1 -0
- package/package.json +77 -0
- package/src/accordion/accordion.types.ts +126 -0
- package/src/accordion/header/AccordionHeader.vue +36 -0
- package/src/accordion/index.ts +10 -0
- package/src/accordion/item/AccordionItem.vue +124 -0
- package/src/accordion/item/AccordionItemContext.ts +24 -0
- package/src/accordion/item/AccordionItemDataAttributes.ts +15 -0
- package/src/accordion/item/stateAttributesMapping.ts +14 -0
- package/src/accordion/panel/AccordionPanel.vue +156 -0
- package/src/accordion/panel/AccordionPanelCssVars.ts +12 -0
- package/src/accordion/root/AccordionRoot.vue +130 -0
- package/src/accordion/root/AccordionRootContext.ts +37 -0
- package/src/accordion/root/AccordionRootDataAttributes.ts +10 -0
- package/src/accordion/root/stateAttributesMapping.ts +6 -0
- package/src/accordion/trigger/AccordionTrigger.vue +186 -0
- package/src/avatar/fallback/AvatarFallback.vue +75 -0
- package/src/avatar/image/AvatarImage.vue +103 -0
- package/src/avatar/image/AvatarImageDataAttributes.ts +14 -0
- package/src/avatar/image/useImageLoadingStatus.ts +58 -0
- package/src/avatar/index.ts +19 -0
- package/src/avatar/root/AvatarRoot.vue +62 -0
- package/src/avatar/root/AvatarRootContext.ts +22 -0
- package/src/avatar/root/stateAttributesMapping.ts +7 -0
- package/src/button/Button.vue +59 -0
- package/src/button/ButtonDataAttributes.ts +6 -0
- package/src/button/button.types.ts +22 -0
- package/src/button/index.ts +2 -0
- package/src/collapsible/collapsible.types.ts +64 -0
- package/src/collapsible/index.ts +6 -0
- package/src/collapsible/panel/CollapsiblePanel.vue +145 -0
- package/src/collapsible/panel/CollapsiblePanelCssVars.ts +12 -0
- package/src/collapsible/panel/CollapsiblePanelDataAttributes.ts +18 -0
- package/src/collapsible/panel/useCollapsiblePanel.ts +489 -0
- package/src/collapsible/root/CollapsibleRoot.vue +60 -0
- package/src/collapsible/root/CollapsibleRootContext.ts +18 -0
- package/src/collapsible/root/stateAttributesMapping.ts +9 -0
- package/src/collapsible/root/useCollapsibleRoot.ts +252 -0
- package/src/collapsible/trigger/CollapsibleTrigger.vue +63 -0
- package/src/collapsible/trigger/CollapsibleTriggerDataAttributes.ts +6 -0
- package/src/composite/composite.ts +232 -0
- package/src/composite/constants.ts +1 -0
- package/src/composite/item/CompositeItem.vue +75 -0
- package/src/composite/item/useCompositeItem.ts +63 -0
- package/src/composite/list/CompositeList.vue +168 -0
- package/src/composite/list/CompositeListContext.ts +21 -0
- package/src/composite/list/useCompositeListItem.ts +130 -0
- package/src/composite/root/CompositeRoot.vue +106 -0
- package/src/composite/root/CompositeRootContext.ts +36 -0
- package/src/composite/root/index.ts +7 -0
- package/src/composite/root/useCompositeRoot.ts +418 -0
- package/src/direction-provider/DirectionContext.ts +29 -0
- package/src/direction-provider/DirectionProvider.vue +31 -0
- package/src/direction-provider/index.ts +8 -0
- package/src/field/control/FieldControl.vue +211 -0
- package/src/field/control/FieldControlDataAttributes.ts +30 -0
- package/src/field/description/FieldDescription.vue +62 -0
- package/src/field/description/FieldDescriptionDataAttributes.ts +30 -0
- package/src/field/error/FieldError.vue +159 -0
- package/src/field/error/FieldErrorDataAttributes.ts +38 -0
- package/src/field/index.ts +27 -0
- package/src/field/item/FieldItem.vue +63 -0
- package/src/field/item/FieldItemContext.ts +16 -0
- package/src/field/label/FieldLabel.vue +102 -0
- package/src/field/label/FieldLabelDataAttributes.ts +30 -0
- package/src/field/root/FieldRoot.vue +262 -0
- package/src/field/root/FieldRootContext.ts +97 -0
- package/src/field/root/FieldRootDataAttributes.ts +30 -0
- package/src/field/root/useFieldRootState.ts +81 -0
- package/src/field/root/useFieldValidation.ts +298 -0
- package/src/field/root/useFieldValidity.ts +30 -0
- package/src/field/useField.ts +73 -0
- package/src/field/utils/constants.ts +45 -0
- package/src/field/utils/getCombinedFieldValidityData.ts +18 -0
- package/src/field/validity/FieldValidity.vue +36 -0
- package/src/fieldset/index.ts +8 -0
- package/src/fieldset/legend/FieldsetLegend.vue +72 -0
- package/src/fieldset/root/FieldsetRoot.vue +74 -0
- package/src/fieldset/root/FieldsetRootContext.ts +26 -0
- package/src/floating-ui-vue/types.ts +4 -0
- package/src/floating-ui-vue/utils/composite.ts +475 -0
- package/src/floating-ui-vue/utils/constants.ts +4 -0
- package/src/floating-ui-vue/utils/event.ts +4 -0
- package/src/floating-ui-vue/utils.ts +2 -0
- package/src/form/Form.vue +188 -0
- package/src/form/FormContext.ts +59 -0
- package/src/form/index.ts +10 -0
- package/src/index.ts +14 -0
- package/src/labelable-provider/LabelableContext.ts +33 -0
- package/src/labelable-provider/LabelableProvider.vue +55 -0
- package/src/labelable-provider/index.ts +6 -0
- package/src/labelable-provider/useAriaLabelledBy.ts +100 -0
- package/src/labelable-provider/useLabelableId.ts +30 -0
- package/src/merge-props/index.ts +1 -0
- package/src/merge-props/mergeProps.ts +192 -0
- package/src/test/index.ts +1 -0
- package/src/test/utils.ts +9 -0
- package/src/types/index.ts +10 -0
- package/src/use-button/index.ts +1 -0
- package/src/use-button/useButton.ts +231 -0
- package/src/use-render/index.ts +1 -0
- package/src/use-render/useRender.spec.ts +90 -0
- package/src/use-render/useRender.ts +152 -0
- package/src/utils/collapsibleOpenStateMapping.ts +33 -0
- package/src/utils/constants.ts +1 -0
- package/src/utils/createBaseUIEventDetails.ts +127 -0
- package/src/utils/empty.ts +5 -0
- package/src/utils/error.ts +19 -0
- package/src/utils/getStateAttributesProps.ts +31 -0
- package/src/utils/isElementDisabled.ts +7 -0
- package/src/utils/noop.ts +1 -0
- package/src/utils/reasons.ts +69 -0
- package/src/utils/resolveRef.ts +9 -0
- package/src/utils/slot.ts +6 -0
- package/src/utils/stateAttributesMapping.ts +28 -0
- package/src/utils/transitionStatusMapping.ts +22 -0
- package/src/utils/types.ts +47 -0
- package/src/utils/useAnimationFrame.ts +130 -0
- package/src/utils/useAnimationsFinished.ts +101 -0
- package/src/utils/useBaseUiId.ts +9 -0
- package/src/utils/useControllableState.ts +44 -0
- package/src/utils/useFocusableWhenDisabled.ts +85 -0
- package/src/utils/useId.ts +26 -0
- package/src/utils/useMergedRefs.ts +91 -0
- package/src/utils/useOpenChangeComplete.ts +52 -0
- package/src/utils/useRenderElement.ts +162 -0
- package/src/utils/useTimeout.ts +48 -0
- package/src/utils/useTransitionStatus.ts +104 -0
- 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"}
|