@varlet/ui
Version:
A Vue3 component library based on Material Design 2 and 3, supporting mobile and desktop.
48 lines (47 loc) • 1.65 kB
JavaScript
var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
}
return a;
};
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
import { getCurrentInstance } from "vue";
import { useChildren, useParent } from "@varlet/use";
const FORM_BIND_FORM_ITEM_KEY = Symbol("FORM_BIND_FORM_ITEM_KEY");
function useForm() {
const { parentProvider, index, bindParent } = useParent(FORM_BIND_FORM_ITEM_KEY);
const instance = getCurrentInstance();
const bindForm = bindParent ? (formItemProvider) => {
bindParent(__spreadProps(__spreadValues({}, formItemProvider), { instance }));
} : null;
return {
index,
form: parentProvider,
bindForm
};
}
function useFormItems() {
const { childProviders, length, bindChildren } = useChildren(FORM_BIND_FORM_ITEM_KEY);
return {
length,
formItems: childProviders,
bindFormItems: bindChildren
};
}
export {
FORM_BIND_FORM_ITEM_KEY,
useForm,
useFormItems
};