mirror of
https://github.com/fastapiadmin/FastapiAdmin.git
synced 2026-09-21 04:46:26 +00:00
feat: 添加订阅页面和定价组件
refactor: 优化配置文件和导航结构 style: 更新首页展示内容和图标 chore: 添加vue依赖并更新缓存文件
This commit is contained in:
+9731
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
+23
-17
@@ -1,52 +1,58 @@
|
||||
{
|
||||
"hash": "43a1f741",
|
||||
"configHash": "c1b30005",
|
||||
"lockfileHash": "2a88337f",
|
||||
"browserHash": "cd89bbf0",
|
||||
"hash": "dc1fecbb",
|
||||
"configHash": "ae4c6fcf",
|
||||
"lockfileHash": "43a7a053",
|
||||
"browserHash": "0b5187ee",
|
||||
"optimized": {
|
||||
"vue": {
|
||||
"src": "../../../node_modules/.pnpm/vue@3.5.18/node_modules/vue/dist/vue.runtime.esm-bundler.js",
|
||||
"src": "../../../node_modules/.pnpm/vue@3.5.21/node_modules/vue/dist/vue.runtime.esm-bundler.js",
|
||||
"file": "vue.js",
|
||||
"fileHash": "97dfbd19",
|
||||
"fileHash": "ee42c443",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vitepress > @vue/devtools-api": {
|
||||
"src": "../../../node_modules/.pnpm/@vue+devtools-api@8.0.0/node_modules/@vue/devtools-api/dist/index.js",
|
||||
"file": "vitepress___@vue_devtools-api.js",
|
||||
"fileHash": "b81fadcb",
|
||||
"fileHash": "557299ac",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vitepress > @vueuse/core": {
|
||||
"src": "../../../node_modules/.pnpm/@vueuse+core@13.6.0_vue@3.5.18/node_modules/@vueuse/core/index.mjs",
|
||||
"src": "../../../node_modules/.pnpm/@vueuse+core@13.6.0_vue@3.5.21/node_modules/@vueuse/core/index.mjs",
|
||||
"file": "vitepress___@vueuse_core.js",
|
||||
"fileHash": "2c2e46fe",
|
||||
"fileHash": "ca22e4ec",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vitepress > @vueuse/integrations/useFocusTrap": {
|
||||
"src": "../../../node_modules/.pnpm/@vueuse+integrations@13.6.0_focus-trap@7.6.5_vue@3.5.18/node_modules/@vueuse/integrations/useFocusTrap.mjs",
|
||||
"src": "../../../node_modules/.pnpm/@vueuse+integrations@13.6.0_focus-trap@7.6.5_vue@3.5.21/node_modules/@vueuse/integrations/useFocusTrap.mjs",
|
||||
"file": "vitepress___@vueuse_integrations_useFocusTrap.js",
|
||||
"fileHash": "82a3a0a6",
|
||||
"fileHash": "07e21d43",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vitepress > mark.js/src/vanilla.js": {
|
||||
"src": "../../../node_modules/.pnpm/mark.js@8.11.1/node_modules/mark.js/src/vanilla.js",
|
||||
"file": "vitepress___mark__js_src_vanilla__js.js",
|
||||
"fileHash": "8eb6e19a",
|
||||
"fileHash": "c6c04598",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vitepress > minisearch": {
|
||||
"src": "../../../node_modules/.pnpm/minisearch@7.1.2/node_modules/minisearch/dist/es/index.js",
|
||||
"file": "vitepress___minisearch.js",
|
||||
"fileHash": "a00533bc",
|
||||
"fileHash": "d0a90493",
|
||||
"needsInterop": false
|
||||
},
|
||||
"@vueuse/core": {
|
||||
"src": "../../../node_modules/.pnpm/@vueuse+core@12.8.2/node_modules/@vueuse/core/index.mjs",
|
||||
"file": "@vueuse_core.js",
|
||||
"fileHash": "7459b4c7",
|
||||
"needsInterop": false
|
||||
}
|
||||
},
|
||||
"chunks": {
|
||||
"chunk-7FO7MQPH": {
|
||||
"file": "chunk-7FO7MQPH.js"
|
||||
"chunk-IEXRY54B": {
|
||||
"file": "chunk-IEXRY54B.js"
|
||||
},
|
||||
"chunk-FZQEDHRP": {
|
||||
"file": "chunk-FZQEDHRP.js"
|
||||
"chunk-IBXOI5KQ": {
|
||||
"file": "chunk-IBXOI5KQ.js"
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
Vendored
+158
-119
@@ -1,4 +1,4 @@
|
||||
// node_modules/.pnpm/@vue+shared@3.5.18/node_modules/@vue/shared/dist/shared.esm-bundler.js
|
||||
// node_modules/.pnpm/@vue+shared@3.5.21/node_modules/@vue/shared/dist/shared.esm-bundler.js
|
||||
function makeMap(str) {
|
||||
const map2 = /* @__PURE__ */ Object.create(null);
|
||||
for (const key of str.split(",")) map2[key] = 1;
|
||||
@@ -49,15 +49,15 @@ var isBuiltInDirective = makeMap(
|
||||
);
|
||||
var cacheStringFunction = (fn) => {
|
||||
const cache = /* @__PURE__ */ Object.create(null);
|
||||
return (str) => {
|
||||
return ((str) => {
|
||||
const hit = cache[str];
|
||||
return hit || (cache[str] = fn(str));
|
||||
};
|
||||
});
|
||||
};
|
||||
var camelizeRE = /-(\w)/g;
|
||||
var camelizeRE = /-\w/g;
|
||||
var camelize = cacheStringFunction(
|
||||
(str) => {
|
||||
return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : "");
|
||||
return str.replace(camelizeRE, (c) => c.slice(1).toUpperCase());
|
||||
}
|
||||
);
|
||||
var hyphenateRE = /\B([A-Z])/g;
|
||||
@@ -319,7 +319,7 @@ function normalizeCssVarValue(value) {
|
||||
return String(value);
|
||||
}
|
||||
|
||||
// node_modules/.pnpm/@vue+reactivity@3.5.18/node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js
|
||||
// node_modules/.pnpm/@vue+reactivity@3.5.21/node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js
|
||||
function warn(msg, ...args) {
|
||||
console.warn(`[Vue warn] ${msg}`, ...args);
|
||||
}
|
||||
@@ -1040,7 +1040,7 @@ var arrayInstrumentations = {
|
||||
join(separator) {
|
||||
return reactiveReadArray(this).join(separator);
|
||||
},
|
||||
// keys() iterator only reads `length`, no optimisation required
|
||||
// keys() iterator only reads `length`, no optimization required
|
||||
lastIndexOf(...args) {
|
||||
return searchProxy(this, "lastIndexOf", args);
|
||||
},
|
||||
@@ -1240,7 +1240,13 @@ var MutableReactiveHandler = class extends BaseReactiveHandler {
|
||||
}
|
||||
if (!isArray(target) && isRef2(oldValue) && !isRef2(value)) {
|
||||
if (isOldValueReadonly) {
|
||||
return false;
|
||||
if (true) {
|
||||
warn(
|
||||
`Set operation on key "${String(key)}" failed: target is readonly.`,
|
||||
target[key]
|
||||
);
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
oldValue.value = value;
|
||||
return true;
|
||||
@@ -1384,7 +1390,7 @@ function createInstrumentations(readonly2, shallow) {
|
||||
get size() {
|
||||
const target = this["__v_raw"];
|
||||
!readonly2 && track(toRaw(target), "iterate", ITERATE_KEY);
|
||||
return Reflect.get(target, "size", target);
|
||||
return target.size;
|
||||
},
|
||||
has(key) {
|
||||
const target = this["__v_raw"];
|
||||
@@ -2069,11 +2075,11 @@ function traverse(value, depth = Infinity, seen) {
|
||||
if (depth <= 0 || !isObject(value) || value["__v_skip"]) {
|
||||
return value;
|
||||
}
|
||||
seen = seen || /* @__PURE__ */ new Set();
|
||||
if (seen.has(value)) {
|
||||
seen = seen || /* @__PURE__ */ new Map();
|
||||
if ((seen.get(value) || 0) >= depth) {
|
||||
return value;
|
||||
}
|
||||
seen.add(value);
|
||||
seen.set(value, depth);
|
||||
depth--;
|
||||
if (isRef2(value)) {
|
||||
traverse(value.value, depth, seen);
|
||||
@@ -2098,7 +2104,7 @@ function traverse(value, depth = Infinity, seen) {
|
||||
return value;
|
||||
}
|
||||
|
||||
// node_modules/.pnpm/@vue+runtime-core@3.5.18/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js
|
||||
// node_modules/.pnpm/@vue+runtime-core@3.5.21/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js
|
||||
var stack = [];
|
||||
function pushWarningContext(vnode) {
|
||||
stack.push(vnode);
|
||||
@@ -2538,11 +2544,14 @@ function checkRecursiveUpdates(seen, fn) {
|
||||
var isHmrUpdating = false;
|
||||
var hmrDirtyComponents = /* @__PURE__ */ new Map();
|
||||
if (true) {
|
||||
getGlobalThis().__VUE_HMR_RUNTIME__ = {
|
||||
createRecord: tryWrap(createRecord),
|
||||
rerender: tryWrap(rerender),
|
||||
reload: tryWrap(reload)
|
||||
};
|
||||
const g = getGlobalThis();
|
||||
if (!g.__VUE_HMR_RUNTIME__) {
|
||||
g.__VUE_HMR_RUNTIME__ = {
|
||||
createRecord: tryWrap(createRecord),
|
||||
rerender: tryWrap(rerender),
|
||||
reload: tryWrap(reload)
|
||||
};
|
||||
}
|
||||
}
|
||||
var map = /* @__PURE__ */ new Map();
|
||||
function registerHMR(instance) {
|
||||
@@ -2583,7 +2592,9 @@ function rerender(id, newRender) {
|
||||
}
|
||||
instance.renderCache = [];
|
||||
isHmrUpdating = true;
|
||||
instance.update();
|
||||
if (!(instance.job.flags & 8)) {
|
||||
instance.update();
|
||||
}
|
||||
isHmrUpdating = false;
|
||||
});
|
||||
}
|
||||
@@ -2613,10 +2624,12 @@ function reload(id, newComp) {
|
||||
dirtyInstances.delete(instance);
|
||||
} else if (instance.parent) {
|
||||
queueJob(() => {
|
||||
isHmrUpdating = true;
|
||||
instance.parent.update();
|
||||
isHmrUpdating = false;
|
||||
dirtyInstances.delete(instance);
|
||||
if (!(instance.job.flags & 8)) {
|
||||
isHmrUpdating = true;
|
||||
instance.parent.update();
|
||||
isHmrUpdating = false;
|
||||
dirtyInstances.delete(instance);
|
||||
}
|
||||
});
|
||||
} else if (instance.appContext.reload) {
|
||||
instance.appContext.reload();
|
||||
@@ -3125,26 +3138,34 @@ function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }
|
||||
function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, {
|
||||
o: { nextSibling, parentNode, querySelector, insert, createText }
|
||||
}, hydrateChildren) {
|
||||
function hydrateDisabledTeleport(node2, vnode2, targetStart, targetAnchor) {
|
||||
vnode2.anchor = hydrateChildren(
|
||||
nextSibling(node2),
|
||||
vnode2,
|
||||
parentNode(node2),
|
||||
parentComponent,
|
||||
parentSuspense,
|
||||
slotScopeIds,
|
||||
optimized
|
||||
);
|
||||
vnode2.targetStart = targetStart;
|
||||
vnode2.targetAnchor = targetAnchor;
|
||||
}
|
||||
const target = vnode.target = resolveTarget(
|
||||
vnode.props,
|
||||
querySelector
|
||||
);
|
||||
const disabled = isTeleportDisabled(vnode.props);
|
||||
if (target) {
|
||||
const disabled = isTeleportDisabled(vnode.props);
|
||||
const targetNode = target._lpa || target.firstChild;
|
||||
if (vnode.shapeFlag & 16) {
|
||||
if (disabled) {
|
||||
vnode.anchor = hydrateChildren(
|
||||
nextSibling(node),
|
||||
hydrateDisabledTeleport(
|
||||
node,
|
||||
vnode,
|
||||
parentNode(node),
|
||||
parentComponent,
|
||||
parentSuspense,
|
||||
slotScopeIds,
|
||||
optimized
|
||||
targetNode,
|
||||
targetNode && nextSibling(targetNode)
|
||||
);
|
||||
vnode.targetStart = targetNode;
|
||||
vnode.targetAnchor = targetNode && nextSibling(targetNode);
|
||||
} else {
|
||||
vnode.anchor = nextSibling(node);
|
||||
let targetAnchor = targetNode;
|
||||
@@ -3175,6 +3196,10 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
|
||||
}
|
||||
}
|
||||
updateCssVars(vnode, disabled);
|
||||
} else if (disabled) {
|
||||
if (vnode.shapeFlag & 16) {
|
||||
hydrateDisabledTeleport(node, vnode, node, nextSibling(node));
|
||||
}
|
||||
}
|
||||
return vnode.anchor && nextSibling(vnode.anchor);
|
||||
}
|
||||
@@ -3285,7 +3310,7 @@ var BaseTransitionImpl = {
|
||||
setTransitionHooks(innerChild, enterHooks);
|
||||
}
|
||||
let oldInnerChild = instance.subTree && getInnerChild$1(instance.subTree);
|
||||
if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(innerChild, oldInnerChild) && recursiveGetSubtree(instance).type !== Comment) {
|
||||
if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(oldInnerChild, innerChild) && recursiveGetSubtree(instance).type !== Comment) {
|
||||
let leavingHooks = resolveTransitionHooks(
|
||||
oldInnerChild,
|
||||
rawProps,
|
||||
@@ -3613,6 +3638,7 @@ function useTemplateRef(key) {
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
var pendingSetRefMap = /* @__PURE__ */ new WeakMap();
|
||||
function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
|
||||
if (isArray(rawRef)) {
|
||||
rawRef.forEach(
|
||||
@@ -3645,7 +3671,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
|
||||
const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;
|
||||
const setupState = owner.setupState;
|
||||
const rawSetupState = toRaw(setupState);
|
||||
const canSetSetupRef = setupState === EMPTY_OBJ ? () => false : (key) => {
|
||||
const canSetSetupRef = setupState === EMPTY_OBJ ? NO : (key) => {
|
||||
if (true) {
|
||||
if (hasOwn(rawSetupState, key) && !isRef2(rawSetupState[key])) {
|
||||
warn$1(
|
||||
@@ -3658,14 +3684,22 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
|
||||
}
|
||||
return hasOwn(rawSetupState, key);
|
||||
};
|
||||
const canSetRef = (ref22) => {
|
||||
return !knownTemplateRefs.has(ref22);
|
||||
};
|
||||
if (oldRef != null && oldRef !== ref2) {
|
||||
invalidatePendingSetRef(oldRawRef);
|
||||
if (isString(oldRef)) {
|
||||
refs[oldRef] = null;
|
||||
if (canSetSetupRef(oldRef)) {
|
||||
setupState[oldRef] = null;
|
||||
}
|
||||
} else if (isRef2(oldRef)) {
|
||||
oldRef.value = null;
|
||||
if (canSetRef(oldRef)) {
|
||||
oldRef.value = null;
|
||||
}
|
||||
const oldRawRefAtom = oldRawRef;
|
||||
if (oldRawRefAtom.k) refs[oldRawRefAtom.k] = null;
|
||||
}
|
||||
}
|
||||
if (isFunction(ref2)) {
|
||||
@@ -3676,7 +3710,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
|
||||
if (_isString || _isRef) {
|
||||
const doSet = () => {
|
||||
if (rawRef.f) {
|
||||
const existing = _isString ? canSetSetupRef(ref2) ? setupState[ref2] : refs[ref2] : ref2.value;
|
||||
const existing = _isString ? canSetSetupRef(ref2) ? setupState[ref2] : refs[ref2] : canSetRef(ref2) || !rawRef.k ? ref2.value : refs[rawRef.k];
|
||||
if (isUnmount) {
|
||||
isArray(existing) && remove(existing, refValue);
|
||||
} else {
|
||||
@@ -3687,8 +3721,11 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
|
||||
setupState[ref2] = refs[ref2];
|
||||
}
|
||||
} else {
|
||||
ref2.value = [refValue];
|
||||
if (rawRef.k) refs[rawRef.k] = ref2.value;
|
||||
const newVal = [refValue];
|
||||
if (canSetRef(ref2)) {
|
||||
ref2.value = newVal;
|
||||
}
|
||||
if (rawRef.k) refs[rawRef.k] = newVal;
|
||||
}
|
||||
} else if (!existing.includes(refValue)) {
|
||||
existing.push(refValue);
|
||||
@@ -3700,16 +3737,24 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
|
||||
setupState[ref2] = value;
|
||||
}
|
||||
} else if (_isRef) {
|
||||
ref2.value = value;
|
||||
if (canSetRef(ref2)) {
|
||||
ref2.value = value;
|
||||
}
|
||||
if (rawRef.k) refs[rawRef.k] = value;
|
||||
} else if (true) {
|
||||
warn$1("Invalid template ref type:", ref2, `(${typeof ref2})`);
|
||||
}
|
||||
};
|
||||
if (value) {
|
||||
doSet.id = -1;
|
||||
queuePostRenderEffect(doSet, parentSuspense);
|
||||
const job = () => {
|
||||
doSet();
|
||||
pendingSetRefMap.delete(rawRef);
|
||||
};
|
||||
job.id = -1;
|
||||
pendingSetRefMap.set(rawRef, job);
|
||||
queuePostRenderEffect(job, parentSuspense);
|
||||
} else {
|
||||
invalidatePendingSetRef(rawRef);
|
||||
doSet();
|
||||
}
|
||||
} else if (true) {
|
||||
@@ -3717,6 +3762,13 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
|
||||
}
|
||||
}
|
||||
}
|
||||
function invalidatePendingSetRef(rawRef) {
|
||||
const pendingSetRef = pendingSetRefMap.get(rawRef);
|
||||
if (pendingSetRef) {
|
||||
pendingSetRef.flags |= 8;
|
||||
pendingSetRefMap.delete(rawRef);
|
||||
}
|
||||
}
|
||||
var hasLoggedMismatchError = false;
|
||||
var logMismatchError = () => {
|
||||
if (hasLoggedMismatchError) {
|
||||
@@ -5298,10 +5350,10 @@ var PublicInstanceProxyHandlers = {
|
||||
return true;
|
||||
},
|
||||
has({
|
||||
_: { data, setupState, accessCache, ctx, appContext, propsOptions }
|
||||
_: { data, setupState, accessCache, ctx, appContext, propsOptions, type }
|
||||
}, key) {
|
||||
let normalizedProps;
|
||||
return !!accessCache[key] || data !== EMPTY_OBJ && hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key) || hasOwn(ctx, key) || hasOwn(publicPropertiesMap, key) || hasOwn(appContext.config.globalProperties, key);
|
||||
let normalizedProps, cssModules;
|
||||
return !!(accessCache[key] || data !== EMPTY_OBJ && key[0] !== "$" && hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key) || hasOwn(ctx, key) || hasOwn(publicPropertiesMap, key) || hasOwn(appContext.config.globalProperties, key) || (cssModules = type.__cssModules) && cssModules[key]);
|
||||
},
|
||||
defineProperty(target, key, descriptor) {
|
||||
if (descriptor.get != null) {
|
||||
@@ -6587,7 +6639,7 @@ function isExplicable(type) {
|
||||
function isBoolean(...args) {
|
||||
return args.some((elem) => elem.toLowerCase() === "boolean");
|
||||
}
|
||||
var isInternalKey = (key) => key === "_" || key === "__" || key === "_ctx" || key === "$stable";
|
||||
var isInternalKey = (key) => key === "_" || key === "_ctx" || key === "$stable";
|
||||
var normalizeSlotValue = (value) => isArray(value) ? value.map(normalizeVNode) : [normalizeVNode(value)];
|
||||
var normalizeSlot = (key, rawSlot, ctx) => {
|
||||
if (rawSlot._n) {
|
||||
@@ -6641,8 +6693,6 @@ var assignSlots = (slots, children, optimized) => {
|
||||
var initSlots = (instance, children, optimized) => {
|
||||
const slots = instance.slots = createInternalObject();
|
||||
if (instance.vnode.shapeFlag & 32) {
|
||||
const cacheIndexes = children.__;
|
||||
if (cacheIndexes) def(slots, "__", cacheIndexes, true);
|
||||
const type = children._;
|
||||
if (type) {
|
||||
assignSlots(slots, children, optimized);
|
||||
@@ -6702,12 +6752,10 @@ function endMeasure(instance, type) {
|
||||
if (instance.appContext.config.performance && isSupported()) {
|
||||
const startTag = `vue-${type}-${instance.uid}`;
|
||||
const endTag = startTag + `:end`;
|
||||
const measureName = `<${formatComponentName(instance, instance.type)}> ${type}`;
|
||||
perf.mark(endTag);
|
||||
perf.measure(
|
||||
`<${formatComponentName(instance, instance.type)}> ${type}`,
|
||||
startTag,
|
||||
endTag
|
||||
);
|
||||
perf.measure(measureName, startTag, endTag);
|
||||
perf.clearMeasures(measureName);
|
||||
perf.clearMarks(startTag);
|
||||
perf.clearMarks(endTag);
|
||||
}
|
||||
@@ -7937,6 +7985,12 @@ function baseCreateRenderer(options, createHydrationFns) {
|
||||
}
|
||||
};
|
||||
const performLeave = () => {
|
||||
if (el._isLeaving) {
|
||||
el[leaveCbKey](
|
||||
true
|
||||
/* cancelled */
|
||||
);
|
||||
}
|
||||
leave(el, () => {
|
||||
remove22();
|
||||
afterLeave && afterLeave();
|
||||
@@ -8082,27 +8136,12 @@ function baseCreateRenderer(options, createHydrationFns) {
|
||||
if (instance.type.__hmrId) {
|
||||
unregisterHMR(instance);
|
||||
}
|
||||
const {
|
||||
bum,
|
||||
scope,
|
||||
job,
|
||||
subTree,
|
||||
um,
|
||||
m,
|
||||
a,
|
||||
parent,
|
||||
slots: { __: slotCacheKeys }
|
||||
} = instance;
|
||||
const { bum, scope, job, subTree, um, m, a } = instance;
|
||||
invalidateMount(m);
|
||||
invalidateMount(a);
|
||||
if (bum) {
|
||||
invokeArrayFns(bum);
|
||||
}
|
||||
if (parent && isArray(slotCacheKeys)) {
|
||||
slotCacheKeys.forEach((v) => {
|
||||
parent.renderCache[v] = void 0;
|
||||
});
|
||||
}
|
||||
scope.stop();
|
||||
if (job) {
|
||||
job.flags |= 8;
|
||||
@@ -8114,12 +8153,6 @@ function baseCreateRenderer(options, createHydrationFns) {
|
||||
queuePostRenderEffect(() => {
|
||||
instance.isUnmounted = true;
|
||||
}, parentSuspense);
|
||||
if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance.asyncDep && !instance.asyncResolved && instance.suspenseId === parentSuspense.pendingId) {
|
||||
parentSuspense.deps--;
|
||||
if (parentSuspense.deps === 0) {
|
||||
parentSuspense.resolve();
|
||||
}
|
||||
}
|
||||
if (true) {
|
||||
devtoolsComponentRemoved(instance);
|
||||
}
|
||||
@@ -8220,7 +8253,8 @@ function traverseStaticChildren(n1, n2, shallow = false) {
|
||||
if (!shallow && c2.patchFlag !== -2)
|
||||
traverseStaticChildren(c1, c2);
|
||||
}
|
||||
if (c2.type === Text) {
|
||||
if (c2.type === Text && // avoid cached text nodes retaining detached dom nodes
|
||||
c2.patchFlag !== -1) {
|
||||
c2.el = c1.el;
|
||||
}
|
||||
if (c2.type === Comment && !c2.el) {
|
||||
@@ -8576,8 +8610,9 @@ function emit(instance, event, ...rawArgs) {
|
||||
);
|
||||
}
|
||||
}
|
||||
var mixinEmitsCache = /* @__PURE__ */ new WeakMap();
|
||||
function normalizeEmitsOptions(comp, appContext, asMixin = false) {
|
||||
const cache = appContext.emitsCache;
|
||||
const cache = __VUE_OPTIONS_API__ && asMixin ? mixinEmitsCache : appContext.emitsCache;
|
||||
const cached = cache.get(comp);
|
||||
if (cached !== void 0) {
|
||||
return cached;
|
||||
@@ -9023,7 +9058,7 @@ function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, sl
|
||||
const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;
|
||||
if (pendingBranch) {
|
||||
suspense.pendingBranch = newBranch;
|
||||
if (isSameVNodeType(newBranch, pendingBranch)) {
|
||||
if (isSameVNodeType(pendingBranch, newBranch)) {
|
||||
patch(
|
||||
pendingBranch,
|
||||
newBranch,
|
||||
@@ -9094,7 +9129,7 @@ function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, sl
|
||||
);
|
||||
setActiveBranch(suspense, newFallback);
|
||||
}
|
||||
} else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {
|
||||
} else if (activeBranch && isSameVNodeType(activeBranch, newBranch)) {
|
||||
patch(
|
||||
activeBranch,
|
||||
newBranch,
|
||||
@@ -9125,7 +9160,7 @@ function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, sl
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {
|
||||
if (activeBranch && isSameVNodeType(activeBranch, newBranch)) {
|
||||
patch(
|
||||
activeBranch,
|
||||
newBranch,
|
||||
@@ -10294,7 +10329,7 @@ function getComponentPublicInstance(instance) {
|
||||
return instance.proxy;
|
||||
}
|
||||
}
|
||||
var classifyRE = /(?:^|[-_])(\w)/g;
|
||||
var classifyRE = /(?:^|[-_])\w/g;
|
||||
var classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, "");
|
||||
function getComponentName(Component, includeInferred = true) {
|
||||
return isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name;
|
||||
@@ -10335,15 +10370,23 @@ var computed2 = (getterOrOptions, debugOptions) => {
|
||||
return c;
|
||||
};
|
||||
function h(type, propsOrChildren, children) {
|
||||
const doCreateVNode = (type2, props, children2) => {
|
||||
setBlockTracking(-1);
|
||||
try {
|
||||
return createVNode(type2, props, children2);
|
||||
} finally {
|
||||
setBlockTracking(1);
|
||||
}
|
||||
};
|
||||
const l = arguments.length;
|
||||
if (l === 2) {
|
||||
if (isObject(propsOrChildren) && !isArray(propsOrChildren)) {
|
||||
if (isVNode(propsOrChildren)) {
|
||||
return createVNode(type, null, [propsOrChildren]);
|
||||
return doCreateVNode(type, null, [propsOrChildren]);
|
||||
}
|
||||
return createVNode(type, propsOrChildren);
|
||||
return doCreateVNode(type, propsOrChildren);
|
||||
} else {
|
||||
return createVNode(type, null, propsOrChildren);
|
||||
return doCreateVNode(type, null, propsOrChildren);
|
||||
}
|
||||
} else {
|
||||
if (l > 3) {
|
||||
@@ -10351,7 +10394,7 @@ function h(type, propsOrChildren, children) {
|
||||
} else if (l === 3 && isVNode(children)) {
|
||||
children = [children];
|
||||
}
|
||||
return createVNode(type, propsOrChildren, children);
|
||||
return doCreateVNode(type, propsOrChildren, children);
|
||||
}
|
||||
}
|
||||
function initCustomFormatter() {
|
||||
@@ -10558,7 +10601,7 @@ function isMemoSame(cached, memo) {
|
||||
}
|
||||
return true;
|
||||
}
|
||||
var version = "3.5.18";
|
||||
var version = "3.5.21";
|
||||
var warn2 = true ? warn$1 : NOOP;
|
||||
var ErrorTypeStrings = ErrorTypeStrings$1;
|
||||
var devtools = true ? devtools$1 : void 0;
|
||||
@@ -10580,7 +10623,7 @@ var resolveFilter = null;
|
||||
var compatUtils = null;
|
||||
var DeprecationTypes = null;
|
||||
|
||||
// node_modules/.pnpm/@vue+runtime-dom@3.5.18/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js
|
||||
// node_modules/.pnpm/@vue+runtime-dom@3.5.21/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js
|
||||
var policy = void 0;
|
||||
var tt = typeof window !== "undefined" && window.trustedTypes;
|
||||
if (tt) {
|
||||
@@ -10917,7 +10960,7 @@ function getTransitionInfo(el, expectedType) {
|
||||
type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION : ANIMATION : null;
|
||||
propCount = type ? type === TRANSITION ? transitionDurations.length : animationDurations.length : 0;
|
||||
}
|
||||
const hasTransform = type === TRANSITION && /\b(transform|all)(,|$)/.test(
|
||||
const hasTransform = type === TRANSITION && /\b(?:transform|all)(?:,|$)/.test(
|
||||
getStyleProperties(`${TRANSITION}Property`).toString()
|
||||
);
|
||||
return {
|
||||
@@ -10956,6 +10999,8 @@ function patchClass(el, value, isSVG) {
|
||||
var vShowOriginalDisplay = Symbol("_vod");
|
||||
var vShowHidden = Symbol("_vsh");
|
||||
var vShow = {
|
||||
// used for prop mismatch check during hydration
|
||||
name: "show",
|
||||
beforeMount(el, { value }, { transition }) {
|
||||
el[vShowOriginalDisplay] = el.style.display === "none" ? "" : el.style.display;
|
||||
if (transition && value) {
|
||||
@@ -10989,9 +11034,6 @@ var vShow = {
|
||||
setDisplay(el, value);
|
||||
}
|
||||
};
|
||||
if (true) {
|
||||
vShow.name = "show";
|
||||
}
|
||||
function setDisplay(el, value) {
|
||||
el.style.display = value ? el[vShowOriginalDisplay] : "none";
|
||||
el[vShowHidden] = !value;
|
||||
@@ -11075,7 +11117,7 @@ function setVarsOnNode(el, vars) {
|
||||
style[CSS_VAR_TEXT] = cssText;
|
||||
}
|
||||
}
|
||||
var displayRE = /(^|;)\s*display\s*:/;
|
||||
var displayRE = /(?:^|;)\s*display\s*:/;
|
||||
function patchStyle(el, prev, next) {
|
||||
const style = el.style;
|
||||
const isCssString = isString(next);
|
||||
@@ -11394,8 +11436,8 @@ function shouldSetAsProp(el, key, value, isSVG) {
|
||||
}
|
||||
var REMOVAL = {};
|
||||
function defineCustomElement(options, extraOptions, _createApp) {
|
||||
const Comp = defineComponent(options, extraOptions);
|
||||
if (isPlainObject(Comp)) extend(Comp, extraOptions);
|
||||
let Comp = defineComponent(options, extraOptions);
|
||||
if (isPlainObject(Comp)) Comp = extend({}, Comp, extraOptions);
|
||||
class VueCustomElement extends VueElement {
|
||||
constructor(initialProps) {
|
||||
super(Comp, initialProps, _createApp);
|
||||
@@ -11404,9 +11446,9 @@ function defineCustomElement(options, extraOptions, _createApp) {
|
||||
VueCustomElement.def = Comp;
|
||||
return VueCustomElement;
|
||||
}
|
||||
var defineSSRCustomElement = (options, extraOptions) => {
|
||||
var defineSSRCustomElement = ((options, extraOptions) => {
|
||||
return defineCustomElement(options, extraOptions, createSSRApp);
|
||||
};
|
||||
});
|
||||
var BaseClass = typeof HTMLElement !== "undefined" ? HTMLElement : class {
|
||||
};
|
||||
var VueElement = class _VueElement extends BaseClass {
|
||||
@@ -11865,7 +11907,7 @@ var TransitionGroupImpl = decorate({
|
||||
if (e && e.target !== el) {
|
||||
return;
|
||||
}
|
||||
if (!e || /transform$/.test(e.propertyName)) {
|
||||
if (!e || e.propertyName.endsWith("transform")) {
|
||||
el.removeEventListener("transitionend", cb);
|
||||
el[moveCbKey] = null;
|
||||
removeTransitionClass(el, moveClass);
|
||||
@@ -12254,13 +12296,13 @@ var modifierGuards = {
|
||||
var withModifiers = (fn, modifiers) => {
|
||||
const cache = fn._withMods || (fn._withMods = {});
|
||||
const cacheKey = modifiers.join(".");
|
||||
return cache[cacheKey] || (cache[cacheKey] = (event, ...args) => {
|
||||
return cache[cacheKey] || (cache[cacheKey] = ((event, ...args) => {
|
||||
for (let i = 0; i < modifiers.length; i++) {
|
||||
const guard = modifierGuards[modifiers[i]];
|
||||
if (guard && guard(event, modifiers)) return;
|
||||
}
|
||||
return fn(event, ...args);
|
||||
});
|
||||
}));
|
||||
};
|
||||
var keyNames = {
|
||||
esc: "escape",
|
||||
@@ -12274,7 +12316,7 @@ var keyNames = {
|
||||
var withKeys = (fn, modifiers) => {
|
||||
const cache = fn._withKeys || (fn._withKeys = {});
|
||||
const cacheKey = modifiers.join(".");
|
||||
return cache[cacheKey] || (cache[cacheKey] = (event) => {
|
||||
return cache[cacheKey] || (cache[cacheKey] = ((event) => {
|
||||
if (!("key" in event)) {
|
||||
return;
|
||||
}
|
||||
@@ -12284,7 +12326,7 @@ var withKeys = (fn, modifiers) => {
|
||||
)) {
|
||||
return fn(event);
|
||||
}
|
||||
});
|
||||
}));
|
||||
};
|
||||
var rendererOptions = extend({ patchProp }, nodeOps);
|
||||
var renderer;
|
||||
@@ -12297,13 +12339,13 @@ function ensureHydrationRenderer() {
|
||||
enabledHydration = true;
|
||||
return renderer;
|
||||
}
|
||||
var render = (...args) => {
|
||||
var render = ((...args) => {
|
||||
ensureRenderer().render(...args);
|
||||
};
|
||||
var hydrate = (...args) => {
|
||||
});
|
||||
var hydrate = ((...args) => {
|
||||
ensureHydrationRenderer().hydrate(...args);
|
||||
};
|
||||
var createApp = (...args) => {
|
||||
});
|
||||
var createApp = ((...args) => {
|
||||
const app = ensureRenderer().createApp(...args);
|
||||
if (true) {
|
||||
injectNativeTagCheck(app);
|
||||
@@ -12328,8 +12370,8 @@ var createApp = (...args) => {
|
||||
return proxy;
|
||||
};
|
||||
return app;
|
||||
};
|
||||
var createSSRApp = (...args) => {
|
||||
});
|
||||
var createSSRApp = ((...args) => {
|
||||
const app = ensureHydrationRenderer().createApp(...args);
|
||||
if (true) {
|
||||
injectNativeTagCheck(app);
|
||||
@@ -12343,7 +12385,7 @@ var createSSRApp = (...args) => {
|
||||
}
|
||||
};
|
||||
return app;
|
||||
};
|
||||
});
|
||||
function resolveRootNamespace(container) {
|
||||
if (container instanceof SVGElement) {
|
||||
return "svg";
|
||||
@@ -12413,7 +12455,7 @@ var initDirectivesForSSR = () => {
|
||||
}
|
||||
};
|
||||
|
||||
// node_modules/.pnpm/vue@3.5.18/node_modules/vue/dist/vue.runtime.esm-bundler.js
|
||||
// node_modules/.pnpm/vue@3.5.21/node_modules/vue/dist/vue.runtime.esm-bundler.js
|
||||
function initDev() {
|
||||
{
|
||||
initCustomFormatter();
|
||||
@@ -12605,40 +12647,37 @@ export {
|
||||
|
||||
@vue/shared/dist/shared.esm-bundler.js:
|
||||
(**
|
||||
* @vue/shared v3.5.18
|
||||
* @vue/shared v3.5.21
|
||||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||||
* @license MIT
|
||||
**)
|
||||
(*! #__NO_SIDE_EFFECTS__ *)
|
||||
|
||||
@vue/reactivity/dist/reactivity.esm-bundler.js:
|
||||
(**
|
||||
* @vue/reactivity v3.5.18
|
||||
* @vue/reactivity v3.5.21
|
||||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||||
* @license MIT
|
||||
**)
|
||||
|
||||
@vue/runtime-core/dist/runtime-core.esm-bundler.js:
|
||||
(**
|
||||
* @vue/runtime-core v3.5.18
|
||||
* @vue/runtime-core v3.5.21
|
||||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||||
* @license MIT
|
||||
**)
|
||||
(*! #__NO_SIDE_EFFECTS__ *)
|
||||
|
||||
@vue/runtime-dom/dist/runtime-dom.esm-bundler.js:
|
||||
(**
|
||||
* @vue/runtime-dom v3.5.18
|
||||
* @vue/runtime-dom v3.5.21
|
||||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||||
* @license MIT
|
||||
**)
|
||||
(*! #__NO_SIDE_EFFECTS__ *)
|
||||
|
||||
vue/dist/vue.runtime.esm-bundler.js:
|
||||
(**
|
||||
* vue v3.5.18
|
||||
* vue v3.5.21
|
||||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||||
* @license MIT
|
||||
**)
|
||||
*/
|
||||
//# sourceMappingURL=chunk-FZQEDHRP.js.map
|
||||
//# sourceMappingURL=chunk-IBXOI5KQ.js.map
|
||||
File diff suppressed because one or more lines are too long
Vendored
+4
-4
@@ -36,9 +36,9 @@ import {
|
||||
unref,
|
||||
watch,
|
||||
watchEffect
|
||||
} from "./chunk-FZQEDHRP.js";
|
||||
} from "./chunk-IBXOI5KQ.js";
|
||||
|
||||
// node_modules/.pnpm/@vueuse+shared@13.6.0_vue@3.5.18/node_modules/@vueuse/shared/index.mjs
|
||||
// node_modules/.pnpm/@vueuse+shared@13.6.0_vue@3.5.21/node_modules/@vueuse/shared/index.mjs
|
||||
function computedEager(fn, options) {
|
||||
var _a;
|
||||
const result = shallowRef();
|
||||
@@ -1572,7 +1572,7 @@ function whenever(source, cb, options) {
|
||||
return stop;
|
||||
}
|
||||
|
||||
// node_modules/.pnpm/@vueuse+core@13.6.0_vue@3.5.18/node_modules/@vueuse/core/index.mjs
|
||||
// node_modules/.pnpm/@vueuse+core@13.6.0_vue@3.5.21/node_modules/@vueuse/core/index.mjs
|
||||
function computedAsync(evaluationCallback, initialState, optionsOrRef) {
|
||||
let options;
|
||||
if (isRef(optionsOrRef)) {
|
||||
@@ -9853,4 +9853,4 @@ export {
|
||||
useWindowScroll,
|
||||
useWindowSize
|
||||
};
|
||||
//# sourceMappingURL=chunk-7FO7MQPH.js.map
|
||||
//# sourceMappingURL=chunk-IEXRY54B.js.map
|
||||
+1
-1
File diff suppressed because one or more lines are too long
@@ -281,8 +281,8 @@ import {
|
||||
watchTriggerable,
|
||||
watchWithFilter,
|
||||
whenever
|
||||
} from "./chunk-7FO7MQPH.js";
|
||||
import "./chunk-FZQEDHRP.js";
|
||||
} from "./chunk-IEXRY54B.js";
|
||||
import "./chunk-IBXOI5KQ.js";
|
||||
export {
|
||||
DefaultMagicKeysAliasMap,
|
||||
StorageSerializers,
|
||||
|
||||
+3
-3
@@ -3,13 +3,13 @@ import {
|
||||
toArray,
|
||||
tryOnScopeDispose,
|
||||
unrefElement
|
||||
} from "./chunk-7FO7MQPH.js";
|
||||
} from "./chunk-IEXRY54B.js";
|
||||
import {
|
||||
computed,
|
||||
shallowRef,
|
||||
toValue,
|
||||
watch
|
||||
} from "./chunk-FZQEDHRP.js";
|
||||
} from "./chunk-IBXOI5KQ.js";
|
||||
|
||||
// node_modules/.pnpm/tabbable@6.2.0/node_modules/tabbable/dist/index.esm.js
|
||||
var candidateSelectors = ["input:not([inert])", "select:not([inert])", "textarea:not([inert])", "a[href]:not([inert])", "button:not([inert])", "[tabindex]:not(slot):not([inert])", "audio[controls]:not([inert])", "video[controls]:not([inert])", '[contenteditable]:not([contenteditable="false"]):not([inert])', "details>summary:first-of-type:not([inert])", "details:not([inert])"];
|
||||
@@ -1065,7 +1065,7 @@ var createFocusTrap = function createFocusTrap2(elements, userOptions) {
|
||||
return trap;
|
||||
};
|
||||
|
||||
// node_modules/.pnpm/@vueuse+integrations@13.6.0_focus-trap@7.6.5_vue@3.5.18/node_modules/@vueuse/integrations/useFocusTrap.mjs
|
||||
// node_modules/.pnpm/@vueuse+integrations@13.6.0_focus-trap@7.6.5_vue@3.5.21/node_modules/@vueuse/integrations/useFocusTrap.mjs
|
||||
function useFocusTrap(target, options = {}) {
|
||||
let trap;
|
||||
const { immediate, ...focusTrapOptions } = options;
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
@@ -168,7 +168,7 @@ import {
|
||||
withMemo,
|
||||
withModifiers,
|
||||
withScopeId
|
||||
} from "./chunk-FZQEDHRP.js";
|
||||
} from "./chunk-IBXOI5KQ.js";
|
||||
export {
|
||||
BaseTransition,
|
||||
BaseTransitionPropsValidators,
|
||||
|
||||
+102
-150
@@ -2,159 +2,111 @@ import { defineConfig } from 'vitepress'
|
||||
|
||||
// https://vitepress.dev/reference/site-config
|
||||
export default defineConfig({
|
||||
base: '/',
|
||||
srcDir: 'src',
|
||||
outDir: 'dist',
|
||||
lang: 'zh-CN',
|
||||
title: 'Fastapi Vue3 Admin',
|
||||
description: '现代、开源、全栈融合的中后台快速开发平台',
|
||||
head: [
|
||||
[
|
||||
"link",
|
||||
{
|
||||
rel: "apple-touch-icon",
|
||||
sizes: "180x180",
|
||||
href: "/favicon.png",
|
||||
},
|
||||
base: '/',
|
||||
srcDir: 'src',
|
||||
outDir: 'dist',
|
||||
lang: 'zh-CN',
|
||||
title: 'Fastapi Vue3 Admin',
|
||||
description: '现代、开源、全栈融合的中后台快速开发平台',
|
||||
head: [
|
||||
["link",{rel: "apple-touch-icon", sizes: "180x180", href: "/favicon.png"}],
|
||||
["link",{rel: "icon",type: "image/png", sizes: "32x32", href: "/favicon.png"}],
|
||||
["link",{rel: "icon",type: "image/png", sizes: "16x16", href: "/favicon.png"}],
|
||||
["link",{rel: "shortcut icon", href: "/favicon.png"}],
|
||||
],
|
||||
[
|
||||
"link",
|
||||
{
|
||||
rel: "icon",
|
||||
type: "image/png",
|
||||
sizes: "32x32",
|
||||
href: "/favicon.png",
|
||||
},
|
||||
],
|
||||
[
|
||||
"link",
|
||||
{
|
||||
rel: "icon",
|
||||
type: "image/png",
|
||||
sizes: "16x16",
|
||||
href: "/favicon.png",
|
||||
},
|
||||
],
|
||||
["link", { rel: "shortcut icon", href: "/favicon.png" }],
|
||||
],
|
||||
|
||||
locales: {
|
||||
root: { label: '简体中文' },
|
||||
en: { label: 'English' },
|
||||
},
|
||||
lastUpdated: true,
|
||||
cleanUrls: true,
|
||||
metaChunk: true,
|
||||
themeConfig: {
|
||||
logo: '/logo.png',
|
||||
siteTitle: 'Fastapi Vue3 Admin',
|
||||
nav: [
|
||||
{ text: '首页', link: '/' },
|
||||
{ text: '指南', link: '/guide_info' },
|
||||
{ text: '演示环境', link: 'https://service.fastapiadmin.com/web', target: '_blank' },
|
||||
{ text: '小程序环境', link: 'https://service.fastapiadmin.com/app', target: '_blank' },
|
||||
{
|
||||
text: '版本',
|
||||
items: [
|
||||
{ text: 'master', link: 'https://github.com/1014TaoTao/fastapi_vue3_admin', target: '_blank' },
|
||||
{ text: 'V2.0.0', link: 'https://github.com/1014TaoTao/fastapi_vue3_admin/tree/v2.0.0', target: '_blank' },
|
||||
{ text: 'V1.0.0', link: 'https://github.com/1014TaoTao/fastapi_vue3_admin/tree/v1.0.0', target: '_blank' }
|
||||
]
|
||||
},
|
||||
{ text: '更新日志', link: 'https://github.com/1014TaoTao/fastapi_vue3_admin/commits/master/', target: '_blank' },
|
||||
{
|
||||
text: '社区',
|
||||
items: [
|
||||
{ text: 'GitHub', link: 'https://github.com/1014TaoTao/fastapi_vue3_admin', target: '_blank' },
|
||||
{ text: 'Gitee', link: 'https://gitee.com/tao__tao/fastapi_vue3_admin', target: '_blank' },
|
||||
{ text: 'GitCode', link: 'https://gitcode.com/qq_36002987/fastapi_vue3_admin', target: '_blank' }
|
||||
]
|
||||
},
|
||||
{ text: '关于我们', link: '/about' },
|
||||
],
|
||||
|
||||
sidebar: [
|
||||
{
|
||||
text: '简介',
|
||||
collapsible: true, // 开启折叠功能
|
||||
collapsed: false, // 默认不折叠(展开状态)
|
||||
items: [
|
||||
{ text: '项目介绍', link: '/guide_info' },
|
||||
{ text: '快速开始', link: '/guide_start' },
|
||||
{ text: '为什么是FastapiAdmin?', link: '/guide_why' }
|
||||
]
|
||||
},
|
||||
{
|
||||
text: '二次开发权威指南',
|
||||
collapsible: true, // 开启折叠功能
|
||||
collapsed: false, // 默认不折叠(展开状态)
|
||||
items: [
|
||||
{ text: '前端开发指南', link: '/guide_develop_frontend' },
|
||||
// { text: '后端开发', link: '/guide_start' },
|
||||
// { text: '官网工程', link: '/guide_why' }
|
||||
]
|
||||
},
|
||||
{
|
||||
text: '关于我们', link: '/about'
|
||||
}
|
||||
],
|
||||
|
||||
socialLinks: [
|
||||
{ icon: 'github', link: 'https://github.com/1014TaoTao/fastapi_vue3_admin' },
|
||||
{ icon: 'gitee', link: 'https://gitee.com/tao__tao/fastapi_vue3_admin' },
|
||||
{ icon: 'gitcode', link: 'https://gitcode.com/qq_36002987/fastapi_vue3_admin' }
|
||||
],
|
||||
|
||||
footer: {
|
||||
message: '<a href="https://github.com/1014TaoTao/fastapi_vue3_admin/blob/master/LICENSE" target="_blank">MIT License</a>',
|
||||
copyright: 'Copyright © 2025-2026 service.fastapiadmin.com 版权所有 |隐私 |条款 陕ICP备2025069493号-1'
|
||||
locales: {
|
||||
root: { label: '简体中文' },
|
||||
en: { label: 'English' },
|
||||
},
|
||||
|
||||
docFooter: {
|
||||
prev: "上一页",
|
||||
next: "下一页",
|
||||
},
|
||||
|
||||
search: {
|
||||
provider: 'local',
|
||||
options: {
|
||||
locales: {
|
||||
root: {
|
||||
translations: {
|
||||
button: {
|
||||
buttonText: '搜索文档',
|
||||
buttonAriaLabel: '搜索文档'
|
||||
},
|
||||
modal: {
|
||||
footer: {
|
||||
selectText: '选择',
|
||||
navigateText: '切换',
|
||||
closeText: '关闭',
|
||||
},
|
||||
},
|
||||
lastUpdated: true,
|
||||
cleanUrls: true,
|
||||
metaChunk: true,
|
||||
themeConfig: {
|
||||
logo: '/logo.png',
|
||||
nav: [
|
||||
{ text: '首页', link: '/' },
|
||||
{ text: '指南', link: '/guide_info', target: '_blank' },
|
||||
{
|
||||
text: '版本',
|
||||
items: [
|
||||
{ text: 'master', link: 'https://github.com/1014TaoTao/fastapi_vue3_admin', target: '_blank' },
|
||||
{ text: 'V2.0.0', link: 'https://github.com/1014TaoTao/fastapi_vue3_admin/tree/v2.0.0', target: '_blank' },
|
||||
{ text: 'V1.0.0', link: 'https://github.com/1014TaoTao/fastapi_vue3_admin/tree/v1.0.0', target: '_blank' }
|
||||
]
|
||||
},
|
||||
},
|
||||
{ text: '订阅', link: '/subscribe' },
|
||||
{ text: '关于我们', link: '/about' },
|
||||
],
|
||||
sidebar: [
|
||||
{
|
||||
text: '简介',
|
||||
collapsed: false, // 默认不折叠(展开状态)
|
||||
items: [
|
||||
{ text: '项目介绍', link: '/guide_info' },
|
||||
{ text: '快速开始', link: '/guide_start' },
|
||||
{ text: '为什么是FastapiAdmin?', link: '/guide_why' }
|
||||
]
|
||||
},
|
||||
{
|
||||
text: '二次开发权威指南',
|
||||
collapsed: false, // 默认不折叠(展开状态)
|
||||
items: [
|
||||
{ text: '前端开发指南', link: '/guide_develop_frontend' },
|
||||
// { text: '后端开发', link: '/guide_start' },
|
||||
// { text: '官网工程', link: '/guide_why' }
|
||||
]
|
||||
},
|
||||
{
|
||||
text: '关于我们', link: '/about'
|
||||
}
|
||||
],
|
||||
socialLinks: [
|
||||
{ icon: 'github', link: 'https://github.com/1014TaoTao/fastapi_vue3_admin' },
|
||||
{ icon: 'gitee', link: 'https://gitee.com/tao__tao/fastapi_vue3_admin' },
|
||||
{ icon: 'gitcode', link: 'https://gitcode.com/qq_36002987/fastapi_vue3_admin' }
|
||||
],
|
||||
footer: {
|
||||
message: '<a href="https://github.com/1014TaoTao/fastapi_vue3_admin/blob/master/LICENSE" target="_blank">MIT License</a>',
|
||||
copyright: 'Copyright © 2025-2026 service.fastapiadmin.com 版权所有 |隐私 |条款 陕ICP备2025069493号-1'
|
||||
},
|
||||
},
|
||||
search: {
|
||||
provider: 'local',
|
||||
options: {
|
||||
locales: {
|
||||
root: {
|
||||
translations: {
|
||||
button: {
|
||||
buttonText: '搜索文档',
|
||||
buttonAriaLabel: '搜索文档'
|
||||
},
|
||||
modal: {
|
||||
footer: {
|
||||
selectText: '选择',
|
||||
navigateText: '切换',
|
||||
closeText: '关闭',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
outline: {
|
||||
level: [2, 3],
|
||||
label: "页面导航",
|
||||
},
|
||||
lastUpdated: {
|
||||
text: "最后更新于",
|
||||
formatOptions: {
|
||||
dateStyle: "short", // full
|
||||
timeStyle: "short", // medium
|
||||
},
|
||||
},
|
||||
langMenuLabel: "多语言",
|
||||
returnToTopLabel: "回到顶部",
|
||||
sidebarMenuLabel: "菜单",
|
||||
darkModeSwitchLabel: "主题",
|
||||
lightModeSwitchTitle: "切换到浅色模式",
|
||||
darkModeSwitchTitle: "切换到深色模式",
|
||||
},
|
||||
outline: {
|
||||
level: [2, 3],
|
||||
label: "页面导航",
|
||||
},
|
||||
|
||||
lastUpdated: {
|
||||
text: "最后更新于",
|
||||
formatOptions: {
|
||||
dateStyle: "short", // full
|
||||
timeStyle: "short", // medium
|
||||
},
|
||||
},
|
||||
|
||||
langMenuLabel: "多语言",
|
||||
returnToTopLabel: "回到顶部",
|
||||
sidebarMenuLabel: "菜单",
|
||||
darkModeSwitchLabel: "主题",
|
||||
lightModeSwitchTitle: "切换到浅色模式",
|
||||
darkModeSwitchTitle: "切换到深色模式",
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user