diff --git a/babel.config.js b/babel.config.js index 397abca88c5a451f06a407b93469db551efaa6de..916db641e17c08bc2159e9458f5a93813f6a40e2 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,3 +1,3 @@ module.exports = { - presets: ["@vue/cli-plugin-babel/preset"] + presets: ['@vue/cli-plugin-babel/preset'] }; diff --git a/commitlint.config.js b/commitlint.config.js index 1c7eddd6e7fbae89ff325db36bd7fcdc9df53c6c..249ee8819b5d3fad4709a78e4df2f456754efdb0 100644 --- a/commitlint.config.js +++ b/commitlint.config.js @@ -12,4 +12,4 @@ module.exports = { 'type-empty': [2, 'never'], 'type-enum': [2, 'always', ['upd', 'chore', 'docs', 'feat', 'fix', 'test', 'refactor', 'revert', 'style']] } -} +}; diff --git a/src/nutui.ts b/src/nutui.ts index ff8b4c56321a3362fc00224b01800f62466f9a1f..365807f42dd22a33a8ee2d8ce773349388a35025 100644 --- a/src/nutui.ts +++ b/src/nutui.ts @@ -1 +1,10 @@ -export default {}; +import { App } from 'vue'; +export default { + install(app: App): void { + const files = require.context('@/packages', true, /index\.vue$/); + files.keys().forEach(component => { + const componentEntity = files(component).default; + app.component(componentEntity.name, componentEntity); + }); + } +}; diff --git a/src/packages/button/demo.vue b/src/packages/button/demo.vue index 18a55fa16a30cbe9bbc6e80a336881b67c288465..bebbae3de5fd1d066c7bb0d4023dbf4e21a925c1 100644 --- a/src/packages/button/demo.vue +++ b/src/packages/button/demo.vue @@ -45,14 +45,12 @@ diff --git a/src/packages/cell/demo.vue b/src/packages/cell/demo.vue index 241f32402816a34379df1eb8e4dd4164a429e4ba..4f9b9146467dbbf610473bbaf3a6ed5ddd6d5ddd 100644 --- a/src/packages/cell/demo.vue +++ b/src/packages/cell/demo.vue @@ -11,12 +11,10 @@ diff --git a/src/packages/icon/demo.vue b/src/packages/icon/demo.vue index 2271a51c72d62ebef167ae8278fe67637bdead68..50cea4a0188fae56bd0d465aa30370107be38f0f 100644 --- a/src/packages/icon/demo.vue +++ b/src/packages/icon/demo.vue @@ -1,18 +1,71 @@ - + diff --git a/src/packages/icon/doc.md b/src/packages/icon/doc.md index 1a75a6dd13dd92aa69efd0f01e3c1763c89568c5..7261cf3dce7f50ad2c3b22f51ed2a1d81b77188d 100644 --- a/src/packages/icon/doc.md +++ b/src/packages/icon/doc.md @@ -2,7 +2,7 @@ ### 介绍 -图标组件 +基于 IconFont 字体的图标集,可以通过 Icon 组件使用。 ### 安装 @@ -14,3 +14,77 @@ const app = createApp(); app.use(Icon); ``` + +## 代码演示 + +### 基础用法 + +`Icon` 的 `name` 属性支持传入图标名称或图片链接。 + +```html + + +``` + +### 图标颜色 + +`Icon` 的 `color` 属性用来设置图标的颜色。 + +```html + + +``` + +### 图标大小 + +`Icon` 的 `size` 属性用来设置图标的尺寸大小,默认单位为 `px`。 + +```html + + + +``` + +### 自定义图标 + +如果需要在现有 Icon 的基础上使用更多图标,可以引入第三方 iconfont 对应的字体文件和 CSS 文件,之后就可以在 Icon 组件中直接使用。 + +```css +/* 引入第三方或自定义的字体图标样式 */ +@font-face { + font-family: 'my-icon'; + src: url('./my-icon.ttf') format('truetype'); +} + +.my-icon { + font-family: 'my-icon'; +} + +.my-icon-extra::before { + content: '\e626'; +} +``` + +```html + + +``` + +## API + +### Props + +| 参数 | 说明 | 类型 | 默认值 | +| --- | --- | --- | --- | +| name | 图标名称或图片链接 | _string_ | - | +| color | 图标颜色 | _string_ | - | +| size | 图标大小,如 `20px` `2em`,默认单位为`px` | _number \| string_ | - | +| class-prefix | 类名前缀,用于使用自定义图标 | _string_ | `nutui-icon` | +| tag | HTML 标签 | _string_ | `i` | + +### Events + +| 事件名 | 说明 | 回调参数 | +| ------ | -------------- | -------------- | +| click | 点击图标时触发 | _event: Event_ | + diff --git a/src/packages/icon/index.scss b/src/packages/icon/index.scss index 64a6118ecba088c9b93238cdead2a11ab3b95cfd..f872f2b4cfbada071c79a8547775ccf4eeb700d4 100644 --- a/src/packages/icon/index.scss +++ b/src/packages/icon/index.scss @@ -1,3 +1,4 @@ +@import '../../styles/font/iconfont.css'; .nut-icon { width: 20px; height: 20px; diff --git a/src/packages/icon/index.vue b/src/packages/icon/index.vue index dbfd3b107720a7a6818f293932c0bb65744671de..ac901c2d6089ee1ddcd281944ec3b283d7722b73 100644 --- a/src/packages/icon/index.vue +++ b/src/packages/icon/index.vue @@ -1,38 +1,41 @@ - - diff --git a/src/packages/price/demo.vue b/src/packages/price/demo.vue index 3c9db67b30f445825e1f23f9cdfe383652c74c0f..245636d4939e91b1b62121cc2cdb851267b77922 100644 --- a/src/packages/price/demo.vue +++ b/src/packages/price/demo.vue @@ -16,17 +16,11 @@ diff --git a/src/sites/mobile/App.vue b/src/sites/mobile/App.vue index 4d1132c3aa9f865b9caede67518fe224db4200a0..113c02fee2ece79d1006d47cf9fa189e4fedd13a 100644 --- a/src/sites/mobile/App.vue +++ b/src/sites/mobile/App.vue @@ -5,7 +5,6 @@