npmapps 1.0.6 → 1.0.8

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.
@@ -1,205 +0,0 @@
1
- <template>
2
- <div class="dialog-examples">
3
- <!-- 基础用法示例 -->
4
- <el-button @click="showBasicDialog">基础对话框</el-button>
5
-
6
- <!-- 自定义标题和内容示例 -->
7
- <el-button @click="showCustomDialog" type="primary">自定义对话框</el-button>
8
-
9
- <!-- 表单验证示例 -->
10
- <el-button @click="showFormDialog" type="success">表单对话框</el-button>
11
-
12
- <!-- 复杂功能示例 -->
13
- <el-button @click="showComplexDialog" type="warning">复杂对话框</el-button>
14
- </div>
15
- </template>
16
-
17
- <script>
18
- import DialogForm from './DialogForm.vue'
19
-
20
- export default {
21
- components: {
22
- DialogForm
23
- },
24
- name: 'DialogExamples',
25
- data() {
26
- return {
27
- formData: {
28
- name: '',
29
- email: '',
30
- description: ''
31
- }
32
- }
33
- },
34
- methods: {
35
- // 基础对话框示例
36
- showBasicDialog() {
37
- this.$dialogFnByJsx({
38
- props: {
39
- title: '基础对话框',
40
- width: '30%'
41
- },
42
- slots: {
43
- default: '这是一个基础的对话框示例,展示最简单的用法。'
44
- },
45
- on: {
46
- open: () => console.log('对话框打开了'),
47
- close: () => console.log('对话框关闭了')
48
- }
49
- })
50
- },
51
-
52
- // 自定义对话框示例
53
- showCustomDialog() {
54
- this.$dialogFnByJsx({
55
- props: {
56
- width: '40%',
57
- 'custom-class': 'custom-dialog'
58
- },
59
- slots: {
60
- title: <div style="color: #409EFF">自定义标题样式</div>,
61
- default: (
62
- <div class="custom-content">
63
- <el-alert
64
- title="自定义内容示例"
65
- type="success"
66
- description="这里展示了如何使用JSX语法自定义对话框内容"
67
- show-icon
68
- />
69
- <div style="margin-top: 20px">
70
- 可以在这里放置任何自定义的内容组件
71
- </div>
72
- </div>
73
- ),
74
- footer: (
75
- <div class="custom-footer">
76
- <el-button>取消</el-button>
77
- <el-button type="primary">确定</el-button>
78
- </div>
79
- )
80
- }
81
- })
82
- },
83
-
84
- // 表单对话框示例
85
- showFormDialog() {
86
- let formRef = null
87
- const config = {
88
- props: {
89
- title: '表单对话框',
90
- width: '50%'
91
- },
92
- slots: {
93
- default: (
94
- <DialogForm ref={ref => formRef = ref} />
95
- ),
96
- footer: (
97
- <div>
98
- <el-button onClick={() => close()}>取消</el-button>
99
- <el-button
100
- type="primary"
101
- onClick={() => {
102
- const formData = formRef.getFormData()
103
- console.log('表单数据:', formData)
104
- close()
105
- }}
106
- >
107
- 提交
108
- </el-button>
109
- </div>
110
- )
111
- }
112
- }
113
- let { close } = this.$dialogFnByJsx(config)
114
- },
115
-
116
- // 复杂功能示例
117
- showComplexDialog() {
118
- const config={
119
- props: {
120
- title: '复杂功能示例',
121
- width: '60%',
122
- 'close-on-click-modal': false,
123
- 'custom-class': 'complex-dialog'
124
- },
125
- slots: {
126
- default: (
127
- <div class="complex-content">
128
- <el-tabs type="border-card">
129
- <el-tab-pane label="基本信息">
130
- <el-descriptions title="用户信息" border>
131
- <el-descriptions-item label="用户名">张三</el-descriptions-item>
132
- <el-descriptions-item label="手机号">18100000000</el-descriptions-item>
133
- <el-descriptions-item label="居住地">苏州市</el-descriptions-item>
134
- <el-descriptions-item label="备注">
135
- <el-tag size="small">学校</el-tag>
136
- </el-descriptions-item>
137
- <el-descriptions-item label="联系地址">
138
- 江苏省苏州市吴中区吴中大道 1188 号
139
- </el-descriptions-item>
140
- </el-descriptions>
141
- </el-tab-pane>
142
- <el-tab-pane label="操作记录">
143
- <el-timeline>
144
- <el-timeline-item
145
- timestamp="2023/4/12"
146
- placement="top"
147
- >
148
- <el-card>
149
- <h4>更新 Github 模板</h4>
150
- <p>王小虎 提交于 2023/4/12 20:46</p>
151
- </el-card>
152
- </el-timeline-item>
153
- <el-timeline-item
154
- timestamp="2023/4/3"
155
- placement="top"
156
- >
157
- <el-card>
158
- <h4>更新 Github 模板</h4>
159
- <p>王小虎 提交于 2023/4/3 20:46</p>
160
- </el-card>
161
- </el-timeline-item>
162
- </el-timeline>
163
- </el-tab-pane>
164
- </el-tabs>
165
- </div>
166
- ),
167
- footer: (
168
- <div class="complex-footer">
169
- <el-button onClick={() => close()}>取消</el-button>
170
- <el-button type="primary" onClick={() => close()}>确定</el-button>
171
- </div>
172
- )
173
- },
174
- on: {
175
- open: () => console.log('复杂对话框打开'),
176
- close: () => console.log('复杂对话框关闭')
177
- }
178
- }
179
- const { close } = this.$dialogFnByJsx(config)
180
- }
181
- }
182
- }
183
- </script>
184
-
185
- <style scoped>
186
- .dialog-examples {
187
- padding: 20px;
188
- }
189
-
190
- .dialog-examples .el-button {
191
- margin-right: 10px;
192
- }
193
-
194
- .custom-content {
195
- padding: 20px 0;
196
- }
197
-
198
- .complex-content {
199
- padding: 20px 0;
200
- }
201
-
202
- :global(.complex-dialog) {
203
- min-height: 400px;
204
- }
205
- </style>
@@ -1,59 +0,0 @@
1
- import { Dialog } from "element-ui";
2
- import Vue from "vue";
3
-
4
- const DialogConstructor = Vue.extend(Dialog);
5
-
6
- export function dialogFn(options = {}) {
7
- const {
8
- slots = {},
9
- props = {},
10
- on = {},
11
- } = options;
12
-
13
- const dialog = new DialogConstructor({
14
- el: document.createElement("div"),
15
- render() {
16
- const dialogProps = {
17
- props: {
18
- visible: true,
19
- ...props,
20
- },
21
- on: {
22
- "update:visible": (val) => {
23
- dialog.visible = val;
24
- if (!val) {
25
- close();
26
- }
27
- },
28
- ...on,
29
- },
30
- };
31
-
32
- return (
33
- <Dialog {...dialogProps}>
34
- {slots.default && <template slot="default">{slots.default}</template>}
35
- {slots.title && <template slot="title">{slots.title}</template>}
36
- {slots.footer && <template slot="footer">{slots.footer}</template>}
37
- </Dialog>
38
- );
39
- },
40
- });
41
-
42
- const close = () => {
43
- on.close && on.close();
44
- if (dialog && dialog.$el && dialog.$el.parentNode) {
45
- dialog.$el.parentNode.removeChild(dialog.$el);
46
- dialog.$destroy();
47
-
48
- }
49
- };
50
-
51
- Vue.nextTick(() => {
52
- document.body.appendChild(dialog.$el);
53
- on.open && on.open();
54
- });
55
-
56
- return { dialog, close };
57
- }
58
-
59
- Vue.prototype.$dialogFnByJsx = dialogFn;
@@ -1,91 +0,0 @@
1
- <template>
2
- <div>
3
- <el-button @click="show">案例1jsx</el-button>
4
- <el-button @click="show1">案例2jsx</el-button>
5
- <span>{{ obj.a }}</span>
6
- </div>
7
- </template>
8
-
9
- <script>
10
- import com from "./com.vue";
11
-
12
- export default {
13
- name: "DialogFn",
14
- components: {
15
- com,
16
- },
17
- data() {
18
- return {
19
- obj: {
20
- a: 1,
21
- }
22
- };
23
- },
24
- methods: {
25
- beforeClose(done) {
26
- console.log("beforeClose");
27
- done();
28
- },
29
- show() {
30
- // 确保在打开新对话框前关闭旧的
31
- const dialogConfig = {
32
- slots: {
33
- default: (
34
- <com
35
- nameProps="defaultSlot"
36
- closeDialog={() => close()}
37
- obj={this.obj}
38
- showBtn={true}
39
- > <el-button type='text'>anniu</el-button></com>
40
- ),
41
- title: <com nameProps="标题titleSlot" />,
42
- footer: (
43
- <div>
44
- <el-button onClick={() => close()}>取消</el-button>
45
- <el-button type="primary" onClick={() => {}}>
46
- 确定
47
- </el-button>
48
- </div>
49
- ),
50
- },
51
-
52
- props: {
53
- title: "标题",
54
- width: "500px",
55
- top: "100px",
56
- beforeClose: this.beforeClose,
57
- destroyOnClose: true, // 关闭时销毁内容
58
- },
59
- on: {
60
- close: () => {
61
- console.log("关闭close");
62
- },
63
- open: () => {
64
- console.log("打开opened");
65
- }
66
- },
67
- };
68
-
69
- const { close } = this.$dialogFnByJsx(dialogConfig);
70
- },
71
- show1() {
72
- const dialogConfig = {
73
- slots: {
74
- default: (
75
- <com
76
- nameProps="简单案例"
77
- closeDialog={() => close()}
78
- showBtn={true}
79
- > </com>
80
- ),
81
- },
82
- props: {
83
- title: "标题",
84
- },
85
- }
86
- const { close } = this.$dialogFnByJsx(dialogConfig);
87
-
88
- }
89
- },
90
- };
91
- </script>