diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..f3b1a9f --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +//registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN} diff --git a/README.md b/README.md index 850d0bd..e0c9314 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# @web/base AI 开发指南 (全面版) +# @apigo.cc/base AI 开发指南 (全面版) -`@web/base` 是基于 State.js 构建的高性能 Web 基础组件库。它采用**原生 ESM、零打包**架构,深度集成 Bootstrap 5,旨在为 AI 驱动的开发提供极致精简且功能完备的 UI 与逻辑基建。 +`@apigo.cc/base` 是基于 State.js 构建的高性能 Web 基础组件库。它采用**原生 ESM、零打包**架构,深度集成 Bootstrap 5,旨在为 AI 驱动的开发提供极致精简且功能完备的 UI 与逻辑基建。 --- @@ -17,8 +17,8 @@ diff --git a/dist/base.js b/dist/base.js index 3cb5a30..b6c0e0f 100644 --- a/dist/base.js +++ b/dist/base.js @@ -1,4 +1,4 @@ -import { Component, NewState, Util, $, Hash, RefreshState } from "@web/state"; +import { Component, NewState, Util, $, Hash, RefreshState } from "@apigo.cc/state"; const HTTP = { get: ({ url, ...opt }) => HTTP.request({ url, method: "GET", ...opt }), post: ({ url, data, ...opt }) => HTTP.request({ url, method: "POST", data, ...opt }), @@ -293,13 +293,15 @@ Component.register("AutoForm", (container) => { )); const _pendingAutoFormComponents = []; const AutoForm = { - register: (name) => { + register: (name, typeName) => { + const entry = { name, typeName: typeName || name }; if (typeof document !== "undefined") { - if (document.readyState !== "loading" && Component.getTemplate("AutoForm")) AutoForm._addAutoFormComponent(name); - else _pendingAutoFormComponents.push(name); + if (document.readyState !== "loading" && Component.getTemplate("AutoForm")) AutoForm._addAutoFormComponent(entry); + else _pendingAutoFormComponents.push(entry); } }, - _addAutoFormComponent: (name) => { + _addAutoFormComponent: (entry) => { + const { name, typeName } = entry; const template = Component.getTemplate("AutoForm"); if (template) { let container = $(template.content, "[control-wrapper]"); @@ -308,14 +310,14 @@ const AutoForm = { if (nested) container = $(nested.content, "[control-wrapper]"); } if (container && !container.querySelector(name)) { - container.appendChild(Util.makeDom(`<${name} $if="item.type?.toLowerCase() === '${name.toLowerCase()}'" $name="item.name" $.="item.setting || {}" $bind="thisNode.closest('AutoForm').data[item.name]">`)); + container.appendChild(Util.makeDom(`<${name} $if="item.type?.toLowerCase() === '${typeName.toLowerCase()}'" $name="item.name" $.="item.setting || {}" $bind="thisNode.closest('AutoForm').data[item.name]">`)); } } } }; if (typeof document !== "undefined") { const initAutoForm = () => { - _pendingAutoFormComponents.forEach((name) => AutoForm._addAutoFormComponent(name)); + _pendingAutoFormComponents.forEach((entry) => AutoForm._addAutoFormComponent(entry)); _pendingAutoFormComponents.length = 0; }; if (document.readyState !== "loading") setTimeout(initAutoForm, 100); @@ -756,6 +758,7 @@ Component.register("List", (container) => { ` )); Component.register("Nav", (container) => { + container.vertical = container.hasAttribute("vertical"); container.click = (item, noselect) => { if (!item.noselect && !noselect) Hash.nav = item.name; container.dispatchEvent(new CustomEvent("nav", { detail: { item }, bubbles: false })); @@ -763,20 +766,21 @@ Component.register("Nav", (container) => { }, Util.makeDom( /*html*/ ` -