yanzhi-ui 0.1.0 → 0.1.2

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.
@@ -0,0 +1,25 @@
1
+ interface ButtonProps {
2
+ type?: 'default' | 'primary' | 'success' | 'warning' | 'error';
3
+ size?: 'small' | 'medium' | 'large';
4
+ color?: string;
5
+ textColor?: string;
6
+ disabled?: boolean;
7
+ loading?: boolean;
8
+ }
9
+ declare function __VLS_template(): {
10
+ attrs: Partial<{}>;
11
+ slots: {
12
+ default?(_: {}): any;
13
+ };
14
+ refs: {};
15
+ rootEl: HTMLButtonElement;
16
+ };
17
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
18
+ declare const __VLS_component: import('vue').DefineComponent<ButtonProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<ButtonProps> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLButtonElement>;
19
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
20
+ export default _default;
21
+ type __VLS_WithTemplateSlots<T, S> = T & {
22
+ new (): {
23
+ $slots: S;
24
+ };
25
+ };
@@ -0,0 +1,7 @@
1
+ import { App } from 'vue';
2
+ import { default as IButton } from './button/Button.vue';
3
+ export { IButton };
4
+ declare const _default: {
5
+ install: (app: App) => void;
6
+ };
7
+ export default _default;
@@ -0,0 +1 @@
1
+ .i-button[data-v-63e0e36c]{border-radius:4px;padding:0 12px;height:32px;border:none;cursor:pointer;transition:all .2s}.i-button.small[data-v-63e0e36c]{height:24px}.i-button.medium[data-v-63e0e36c]{height:32px}.i-button.large[data-v-63e0e36c]{height:40px}.i-button.disabled[data-v-63e0e36c]{cursor:not-allowed;opacity:.6}.i-button.loading[data-v-63e0e36c]{opacity:.8}
@@ -0,0 +1,6 @@
1
+ export * from './index'
2
+ export {}
3
+ import YanzhiUI from './index'
4
+ export default YanzhiUI
5
+ export * from './index'
6
+ export {}
@@ -0,0 +1 @@
1
+ "use strict";var d=Object.defineProperty;var u=(o,t,s)=>t in o?d(o,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):o[t]=s;var l=(o,t,s)=>u(o,typeof t!="symbol"?t+"":t,s);Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("vue"),b=["disabled"],h=n.defineComponent({__name:"Button",props:{type:{},size:{},color:{},textColor:{},disabled:{type:Boolean},loading:{type:Boolean}},setup(o){class t{constructor(e){l(this,"type");l(this,"size");l(this,"color");l(this,"textColor");l(this,"disabled");l(this,"loading");this.type=e.type||"default",this.size=e.size||"medium",this.color=e.color,this.textColor=e.textColor,this.disabled=e.disabled??!1,this.loading=e.loading??!1}get classes(){const e=["i-button",this.type,this.size];return this.disabled&&e.push("disabled"),this.loading&&e.push("loading"),e.join(" ")}get styles(){return{backgroundColor:this.color||"",color:this.textColor||""}}}const s=o,i=n.reactive(new t(s));return(a,e)=>(n.openBlock(),n.createElementBlock("button",{class:n.normalizeClass(i.classes),style:n.normalizeStyle(i.styles),disabled:i.disabled,onClick:e[0]||(e[0]=r=>a.$emit("click",r))},[n.renderSlot(a.$slots,"default",{},void 0,!0)],14,b))}}),f=(o,t)=>{const s=o.__vccOpts||o;for(const[i,a]of t)s[i]=a;return s},c=f(h,[["__scopeId","data-v-63e0e36c"]]),y=[c],g=o=>{y.forEach(t=>{o.component(t.name||"",t)})},m={install:g};exports.IButton=c;exports.default=m;
@@ -0,0 +1,60 @@
1
+ var c = Object.defineProperty;
2
+ var d = (o, t, s) => t in o ? c(o, t, { enumerable: !0, configurable: !0, writable: !0, value: s }) : o[t] = s;
3
+ var l = (o, t, s) => d(o, typeof t != "symbol" ? t + "" : t, s);
4
+ import { defineComponent as r, reactive as u, createElementBlock as h, openBlock as b, normalizeStyle as f, normalizeClass as m, renderSlot as p } from "vue";
5
+ const y = ["disabled"], g = /* @__PURE__ */ r({
6
+ __name: "Button",
7
+ props: {
8
+ type: {},
9
+ size: {},
10
+ color: {},
11
+ textColor: {},
12
+ disabled: { type: Boolean },
13
+ loading: { type: Boolean }
14
+ },
15
+ setup(o) {
16
+ class t {
17
+ constructor(e) {
18
+ l(this, "type");
19
+ l(this, "size");
20
+ l(this, "color");
21
+ l(this, "textColor");
22
+ l(this, "disabled");
23
+ l(this, "loading");
24
+ this.type = e.type || "default", this.size = e.size || "medium", this.color = e.color, this.textColor = e.textColor, this.disabled = e.disabled ?? !1, this.loading = e.loading ?? !1;
25
+ }
26
+ get classes() {
27
+ const e = ["i-button", this.type, this.size];
28
+ return this.disabled && e.push("disabled"), this.loading && e.push("loading"), e.join(" ");
29
+ }
30
+ get styles() {
31
+ return {
32
+ backgroundColor: this.color || "",
33
+ color: this.textColor || ""
34
+ };
35
+ }
36
+ }
37
+ const s = o, n = u(new t(s));
38
+ return (i, e) => (b(), h("button", {
39
+ class: m(n.classes),
40
+ style: f(n.styles),
41
+ disabled: n.disabled,
42
+ onClick: e[0] || (e[0] = (a) => i.$emit("click", a))
43
+ }, [
44
+ p(i.$slots, "default", {}, void 0, !0)
45
+ ], 14, y));
46
+ }
47
+ }), _ = (o, t) => {
48
+ const s = o.__vccOpts || o;
49
+ for (const [n, i] of t)
50
+ s[n] = i;
51
+ return s;
52
+ }, C = /* @__PURE__ */ _(g, [["__scopeId", "data-v-63e0e36c"]]), x = [C], z = (o) => {
53
+ x.forEach((t) => {
54
+ o.component(t.name || "", t);
55
+ });
56
+ }, v = { install: z };
57
+ export {
58
+ C as IButton,
59
+ v as default
60
+ };
@@ -0,0 +1 @@
1
+ (function(t,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(t=typeof globalThis<"u"?globalThis:t||self,e(t.YanzhiUI={},t.Vue))})(this,(function(t,e){"use strict";var p=Object.defineProperty;var _=(t,e,n)=>e in t?p(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var s=(t,e,n)=>_(t,typeof e!="symbol"?e+"":e,n);const n=["disabled"],r=((i,l)=>{const c=i.__vccOpts||i;for(const[d,a]of l)c[d]=a;return c})(e.defineComponent({__name:"Button",props:{type:{},size:{},color:{},textColor:{},disabled:{type:Boolean},loading:{type:Boolean}},setup(i){class l{constructor(o){s(this,"type");s(this,"size");s(this,"color");s(this,"textColor");s(this,"disabled");s(this,"loading");this.type=o.type||"default",this.size=o.size||"medium",this.color=o.color,this.textColor=o.textColor,this.disabled=o.disabled??!1,this.loading=o.loading??!1}get classes(){const o=["i-button",this.type,this.size];return this.disabled&&o.push("disabled"),this.loading&&o.push("loading"),o.join(" ")}get styles(){return{backgroundColor:this.color||"",color:this.textColor||""}}}const c=i,d=e.reactive(new l(c));return(a,o)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(d.classes),style:e.normalizeStyle(d.styles),disabled:d.disabled,onClick:o[0]||(o[0]=h=>a.$emit("click",h))},[e.renderSlot(a.$slots,"default",{},void 0,!0)],14,n))}}),[["__scopeId","data-v-63e0e36c"]]),u=[r],f={install:i=>{u.forEach(l=>{i.component(l.name||"",l)})}};t.IButton=r,t.default=f,Object.defineProperties(t,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
package/package.json CHANGED
@@ -1,11 +1,14 @@
1
1
  {
2
2
  "name": "yanzhi-ui",
3
3
  "private": false,
4
- "version": "0.1.0",
4
+ "version": "0.1.2",
5
+ "types": "dist/yanzhi-ui.d.ts",
5
6
  "main": "dist/yanzhi-ui.umd.cjs",
6
7
  "module": "dist/yanzhi-ui.es.js",
7
- "types": "dist/index.d.ts",
8
- "files": ["dist", "src/packages"],
8
+ "files": [
9
+ "dist",
10
+ "src/packages"
11
+ ],
9
12
  "scripts": {
10
13
  "dev": "vite",
11
14
  "build": "vite build"
@@ -14,9 +17,10 @@
14
17
  "vue": "^3.2.0"
15
18
  },
16
19
  "devDependencies": {
17
- "vite": "^6.0.0",
18
20
  "@vitejs/plugin-vue": "^5.2.0",
19
- "vue": "^3.2.0",
20
- "typescript": "^5.1.0"
21
+ "typescript": "^5.1.0",
22
+ "vite": "^6.0.0",
23
+ "vite-plugin-dts": "^4.5.4",
24
+ "vue": "^3.2.0"
21
25
  }
22
26
  }
@@ -1,8 +1,8 @@
1
1
  <template>
2
2
  <button
3
- :class="buttonClass"
4
- :style="{ backgroundColor: color, color: textColor }"
5
- :disabled="disabled || loading"
3
+ :class="button.classes"
4
+ :style="button.styles"
5
+ :disabled="button.disabled"
6
6
  @click="$emit('click', $event)"
7
7
  >
8
8
  <slot />
@@ -10,7 +10,7 @@
10
10
  </template>
11
11
 
12
12
  <script setup lang="ts">
13
- import { computed } from 'vue'
13
+ import { reactive, computed, toRefs } from 'vue'
14
14
 
15
15
  interface ButtonProps {
16
16
  type?: 'default' | 'primary' | 'success' | 'warning' | 'error'
@@ -21,22 +21,41 @@ interface ButtonProps {
21
21
  loading?: boolean
22
22
  }
23
23
 
24
- const props = withDefaults(defineProps<ButtonProps>(), {
25
- type: 'default',
26
- size: 'medium',
27
- disabled: false,
28
- loading: false
29
- })
30
-
31
- const buttonClass = computed(() => {
32
- const classes = ['i-button', props.type, props.size]
33
- if (props.disabled) classes.push('disabled')
34
- if (props.loading) classes.push('loading')
35
- return classes.join(' ')
36
- })
37
-
38
- const color = computed(() => props.color || '')
39
- const textColor = computed(() => props.textColor || '')
24
+ class Button {
25
+ type: ButtonProps['type']
26
+ size: ButtonProps['size']
27
+ color?: string
28
+ textColor?: string
29
+ disabled: boolean
30
+ loading: boolean
31
+
32
+ constructor(props: ButtonProps) {
33
+ this.type = props.type || 'default'
34
+ this.size = props.size || 'medium'
35
+ this.color = props.color
36
+ this.textColor = props.textColor
37
+ this.disabled = props.disabled ?? false
38
+ this.loading = props.loading ?? false
39
+ }
40
+
41
+ get classes() {
42
+ const cls = ['i-button', this.type, this.size]
43
+ if (this.disabled) cls.push('disabled')
44
+ if (this.loading) cls.push('loading')
45
+ return cls.join(' ')
46
+ }
47
+
48
+ get styles() {
49
+ return {
50
+ backgroundColor: this.color || '',
51
+ color: this.textColor || ''
52
+ }
53
+ }
54
+ }
55
+
56
+ const props = withDefaults(defineProps<ButtonProps>(), {})
57
+
58
+ const button = reactive(new Button(props))
40
59
  </script>
41
60
 
42
61
  <style scoped>
@@ -46,6 +65,7 @@ const textColor = computed(() => props.textColor || '')
46
65
  height: 32px;
47
66
  border: none;
48
67
  cursor: pointer;
68
+ transition: all 0.2s;
49
69
  }
50
70
  .i-button.small { height: 24px; }
51
71
  .i-button.medium { height: 32px; }
@@ -1 +1,15 @@
1
- export { default as IButton } from './button/Button.vue'
1
+ import type { App } from 'vue'
2
+ import IButton from './button/Button.vue'
3
+
4
+ const components = [IButton]
5
+
6
+ const install = (app: App) => {
7
+ components.forEach(component => {
8
+ app.component(component.name || '', component)
9
+ })
10
+ }
11
+
12
+ // 支持按需导入
13
+ export { IButton }
14
+
15
+ export default { install }