evui 2.1.0 → 2.1.1

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.
Files changed (189) hide show
  1. package/dist/{adac9fa4f723f9d2cb5b6640517114a9.png → 0b8d1200e71cae8d747dce4e69c4efb6.png} +0 -0
  2. package/dist/1.css +4 -0
  3. package/dist/1.css.map +1 -0
  4. package/dist/1.evui.min.js +2 -0
  5. package/dist/1.evui.min.js.map +1 -0
  6. package/dist/1ba679c05036b34bf359aa2e6c450faa.ttf +0 -0
  7. package/dist/2.css +4 -0
  8. package/dist/2.css.map +1 -0
  9. package/dist/2.evui.min.js +2 -0
  10. package/dist/2.evui.min.js.map +1 -0
  11. package/dist/{e8c322de9658cbeb8a774b6624167c2c.woff2 → 278156e41e0ad908cf7f841b17130502.woff2} +0 -0
  12. package/dist/3.evui.min.js +2 -0
  13. package/dist/3.evui.min.js.map +1 -0
  14. package/dist/32be89b11725274cd3e801192ba88361.ttf +0 -0
  15. package/dist/{0ab54153eeeca0ce03978cc463b257f7.woff2 → 38c6d8bab26db77d8c806813e1497763.woff2} +0 -0
  16. package/dist/4.evui.min.js +2 -0
  17. package/dist/4.evui.min.js.map +1 -0
  18. package/dist/{faff92145777a3cbaf8e7367b4807987.woff → 425399f81e4ce7cbd967685402ba0260.woff} +0 -0
  19. package/dist/4730076470a665bbc7b783c56d29a72e.svg +261 -0
  20. package/dist/52e9a7f6ff3af5ad261e5292d07ebdca.eot +0 -0
  21. package/dist/{ad97afd3337e8cda302d10ff5a4026b8.ttf → 5367103510b27b78482794590e1ce3b0.ttf} +0 -0
  22. package/dist/{65363c4d55617bbeb57d8ce6dcd46099.svg → 57e963e3d6dd0a9cf05150b40eebf69b.svg} +0 -0
  23. package/dist/{c5ebe0b32dc1b5cc449a76c4204d13bb.ttf → 65a2fb6d9aaa164b41a039302093995b.ttf} +0 -0
  24. package/dist/{cd6c777f1945164224dee082abaea03a.woff2 → 687a4990ea22bb1a49d469a5d9319790.woff2} +0 -0
  25. package/dist/{7583da5c07275cd5eb364507616f998f.ttf → 6c1d906bf5ba48676f65b2d65e935e1a.ttf} +0 -0
  26. package/dist/6dafca5a4f1e31f2bdf11939b24ff422.ttf +0 -0
  27. package/dist/{701ae6abd4719e9c2ada3535a497b341.eot → 752905fa5edf21fc52a10a0c1ca9c7a4.eot} +0 -0
  28. package/dist/76c05d80dda67cdc5d03f345b7bd063f.ttf +0 -0
  29. package/dist/{b551b554a67e86a840bc80cbb8066c30.svg → 7d62eb50e7bb05eedb2a4656f7fe8f3b.svg} +0 -0
  30. package/dist/{8e3c7f5520f5ae906c6cf6d7f3ddcd19.eot → a01e3f2d6c83dc3aee175e2482b3f777.eot} +0 -0
  31. package/dist/{448f2aaa315fa9dce7b2cf6ce31caed6.svg → b30fd8419d7e6d5918856c7531d33482.svg} +0 -0
  32. package/dist/c57dd55fa982e8940f69ca1d69a8a999.woff +0 -0
  33. package/dist/{b87b9ba532ace76ae9f6edfe9f72ded2.ttf → c656b8caa454ed19b9a2ef7f4f5b8fea.ttf} +0 -0
  34. package/dist/{a046592bac8f2fd96e994733faf3858c.woff → cac87dc00c87a5d74711d0276713808a.woff} +0 -0
  35. package/dist/{13db00b7a34fee4d819ab7f9838cc428.eot → d68fa3e67dbb653a13cec44b1bcabcfe.eot} +0 -0
  36. package/dist/{ef60a4f6c25ef7f39f2d25a748dbecfe.woff → ddae9b1ba9b0b42f58809904b0b21349.woff} +0 -0
  37. package/dist/evui.min.js +6 -86054
  38. package/dist/evui.min.js.gz +0 -0
  39. package/dist/evui.min.js.map +1 -1
  40. package/dist/main.css +43 -5541
  41. package/dist/main.css.gz +0 -0
  42. package/dist/main.css.map +1 -1
  43. package/package.json +56 -76
  44. package/src/common/emitter.js +20 -0
  45. package/src/common/utils.debounce.js +223 -0
  46. package/src/common/utils.js +51 -17
  47. package/src/common/utils.throttle.js +83 -0
  48. package/src/common/utils.tree.js +18 -0
  49. package/src/components/button/button.vue +316 -241
  50. package/src/components/chart/chart.core.js +378 -85
  51. package/src/components/chart/chart.vue +133 -115
  52. package/src/components/chart/element/element.bar.js +219 -25
  53. package/src/components/chart/element/element.bar.time.js +115 -0
  54. package/src/components/chart/element/element.line.js +172 -21
  55. package/src/components/chart/element/element.pie.js +86 -0
  56. package/src/components/chart/element/element.scatter.js +9 -2
  57. package/src/components/chart/element/element.tip.js +356 -0
  58. package/src/components/chart/helpers/helpers.canvas.js +94 -0
  59. package/src/components/chart/helpers/helpers.constant.js +25 -6
  60. package/src/components/chart/helpers/helpers.util.js +83 -38
  61. package/src/components/chart/index.js +0 -1
  62. package/src/components/chart/model/model.series.js +43 -14
  63. package/src/components/chart/model/model.store.js +440 -46
  64. package/src/components/chart/plugins/plugins.interaction.js +324 -0
  65. package/src/components/chart/plugins/plugins.legend.js +233 -91
  66. package/src/components/chart/plugins/plugins.pie.js +179 -0
  67. package/src/components/chart/plugins/plugins.title.js +25 -2
  68. package/src/components/chart/plugins/plugins.tooltip.js +384 -0
  69. package/src/components/chart/scale/scale.js +91 -29
  70. package/src/components/chart/scale/scale.linear.js +12 -0
  71. package/src/components/chart/scale/scale.logarithmic.js +25 -0
  72. package/src/components/chart/scale/scale.step.js +89 -52
  73. package/src/components/chart/scale/scale.time.category.js +204 -0
  74. package/src/components/chart/scale/scale.time.js +19 -1
  75. package/src/components/checkbox/checkbox-group.vue +15 -11
  76. package/src/components/checkbox/checkbox.vue +210 -138
  77. package/src/components/codeview/code.vue +42 -29
  78. package/src/components/contextmenu/contextmenu.child.vue +79 -0
  79. package/src/components/contextmenu/contextmenu.vue +276 -0
  80. package/src/components/contextmenu/contextmenu.wrap.vue +189 -0
  81. package/src/components/contextmenu/index.js +3 -0
  82. package/src/components/datepicker/calendar.core.js +588 -492
  83. package/src/components/datepicker/calendar.vue +0 -3
  84. package/src/components/datepicker/datepicker.vue +43 -15
  85. package/src/components/datepicker/index.js +5 -1
  86. package/src/components/grid/grid.filter.vue +290 -0
  87. package/src/components/grid/grid.filter.window.vue +411 -0
  88. package/src/components/grid/grid.render.vue +45 -0
  89. package/src/components/grid/grid.vue +1338 -0
  90. package/src/components/icon/icon.vue +22 -7
  91. package/src/components/input/input.number.vue +309 -277
  92. package/src/components/label/label.vue +2 -2
  93. package/src/components/loadingmask/loadingmask.vue +6 -13
  94. package/src/components/loginfield/loginfield.vue +46 -37
  95. package/src/components/markdown/index.js +3 -0
  96. package/src/components/markdown/markdown.vue +1001 -0
  97. package/src/components/menu/index.js +1 -3
  98. package/src/components/menu/menu.nav.item.vue +115 -0
  99. package/src/components/menu/menu.nav.sub.vue +42 -0
  100. package/src/components/menu/menu.nav.vue +71 -98
  101. package/src/components/message/index.js +3 -0
  102. package/src/components/message/message.js +63 -0
  103. package/src/components/message/message.vue +191 -0
  104. package/src/components/message-box/index.js +3 -0
  105. package/src/components/message-box/message-box.js +31 -0
  106. package/src/components/message-box/message-box.vue +298 -0
  107. package/src/components/notification/index.js +3 -0
  108. package/src/components/notification/notification.js +75 -0
  109. package/src/components/notification/notification.vue +242 -0
  110. package/src/components/radio/radio-group.vue +6 -2
  111. package/src/components/radio/radio.vue +156 -76
  112. package/src/components/selectbox/dropdown.vue +86 -40
  113. package/src/components/selectbox/listbox.vue +47 -18
  114. package/src/components/selectbox/option.vue +1 -1
  115. package/src/components/selectbox/selectbox.vue +304 -316
  116. package/src/components/slider/slider-tooltip.vue +7 -7
  117. package/src/components/slider/slider.vue +20 -25
  118. package/src/components/splitter/splitter.vue +104 -94
  119. package/src/components/table/table.black.css +1 -1
  120. package/src/components/table/table.filter.lite.vue +7 -7
  121. package/src/components/table/table.filter.vue +1 -1
  122. package/src/components/table/table.grey.css +5 -6
  123. package/src/components/table/table.navy.css +1 -1
  124. package/src/components/table/table.vue +55 -48
  125. package/src/components/tabs/tab-panel.vue +19 -5
  126. package/src/components/tabs/tabs.vue +182 -87
  127. package/src/components/textfield/textfield.vue +110 -87
  128. package/src/components/timepicker/index.js +2 -2
  129. package/src/components/timepicker/spinner.vue +15 -17
  130. package/src/components/timepicker/timepicker.vue +98 -53
  131. package/src/components/toggle/toggle.vue +148 -109
  132. package/src/components/tree/index.js +2 -6
  133. package/src/components/tree/render.js +17 -0
  134. package/src/components/tree/tree-node.vue +214 -0
  135. package/src/components/tree/tree.vue +296 -0
  136. package/src/components/tree-table/index.js +7 -0
  137. package/src/components/{tree → tree-table}/tree.table.black.css +0 -0
  138. package/src/components/{tree → tree-table}/tree.table.grey.css +0 -0
  139. package/src/components/{tree → tree-table}/tree.table.vue +36 -41
  140. package/src/components/{tree → tree-table}/tree.util.js +0 -0
  141. package/src/components/window/window.vue +238 -191
  142. package/src/index.js +25 -12
  143. package/src/styles/base/base.scss +50 -0
  144. package/src/styles/base/index.scss +1 -0
  145. package/src/styles/default.scss +5 -0
  146. package/src/styles/{codemirror.css → lib/codemirror.css} +0 -0
  147. package/src/styles/{all.css → lib/fontawesome.css} +1 -1
  148. package/src/styles/lib/icon.css +792 -0
  149. package/src/styles/themes/index.scss +2 -0
  150. package/src/styles/themes/mixin.scss +33 -0
  151. package/src/styles/themes/variables.scss +206 -0
  152. package/src/styles/utils/colors.scss +222 -0
  153. package/src/styles/utils/index.scss +2 -0
  154. package/src/styles/utils/mixins.scss +34 -0
  155. package/src/styles/utils/variables.scss +27 -0
  156. package/src/webfonts/EVUI.eot +0 -0
  157. package/src/webfonts/EVUI.svg +251 -173
  158. package/src/webfonts/EVUI.ttf +0 -0
  159. package/src/webfonts/EVUI.woff +0 -0
  160. package/src/webfonts/Roboto-Bold.ttf +0 -0
  161. package/src/webfonts/Roboto-Medium.ttf +0 -0
  162. package/src/webfonts/Roboto-Regular.ttf +0 -0
  163. package/dist/3c9453211570a4ede66a4b4954a32bbb.ttf +0 -0
  164. package/dist/8634884f932627fc43782e6963b64ccd.svg +0 -183
  165. package/dist/b9e64d9b5fa6b500eb5df6fa980d3e5b.eot +0 -0
  166. package/dist/f0ac0c8b3c9cd3ef9002749985ae546f.woff +0 -0
  167. package/src/components/chart/charts/chart.bar.js +0 -334
  168. package/src/components/chart/charts/chart.base.js +0 -1075
  169. package/src/components/chart/charts/chart.line.js +0 -262
  170. package/src/components/chart/charts/chart.pie.js +0 -383
  171. package/src/components/chart/charts/chart.scatter.js +0 -349
  172. package/src/components/chart/charts/chart.sunburst.js +0 -193
  173. package/src/components/chart/core/axis/axis.js +0 -217
  174. package/src/components/chart/core/axis/axis.scale.auto.js +0 -69
  175. package/src/components/chart/core/axis/axis.scale.fixed.js +0 -65
  176. package/src/components/chart/core/axis/axis.scale.steps.js +0 -149
  177. package/src/components/chart/core/core.constant.js +0 -116
  178. package/src/components/chart/core/core.legend.js +0 -473
  179. package/src/components/chart/core/core.util.js +0 -66
  180. package/src/components/chart/core/data/data.js +0 -412
  181. package/src/components/chart/core/data/data.pie.js +0 -70
  182. package/src/components/chart/core/data/data.stack.js +0 -222
  183. package/src/components/chart/core/data/data.sunburst.js +0 -172
  184. package/src/components/menu/menu.context.children.vue +0 -201
  185. package/src/components/menu/menu.context.vue +0 -144
  186. package/src/components/tabs/jun/tab.vue +0 -123
  187. package/src/components/tabs/jun/tabs.vue +0 -484
  188. package/src/styles/evui.css +0 -386
  189. package/src/styles/icon.css +0 -557
@@ -0,0 +1,411 @@
1
+ <template>
2
+ <ev-window
3
+ :modal="true"
4
+ :width="500"
5
+ :height="516"
6
+ :title="title"
7
+ :maximizable="false"
8
+ :resizable="false"
9
+ :is-show.sync="showWindow"
10
+ close-type="destroy"
11
+ @before-close="onCloseWindow"
12
+ >
13
+ <div class="grid-filter">
14
+ <div class="grid-filter-header">
15
+ <ev-button
16
+ :size="'small'"
17
+ @click="onAdd"
18
+ >Add</ev-button>
19
+ <ev-button
20
+ :size="'small'"
21
+ :disabled="!checked.length"
22
+ @click="onDelete"
23
+ >Delete</ev-button>
24
+ </div>
25
+ <div class="grid-filter-body">
26
+ <div
27
+ v-if="showAddForm"
28
+ class="grid-filter-add-wrap"
29
+ >
30
+ <div class="grid-filter-add-item">
31
+ <ul class="item-labels">
32
+ <li
33
+ v-for="(value, key) in addInfo"
34
+ :key="key"
35
+ >{{ key | capitalize }}</li>
36
+ </ul>
37
+ <div class="item-inputs">
38
+ <ev-selectbox
39
+ v-model="addInfo.type"
40
+ :items="types"
41
+ class="item-input"
42
+ />
43
+ <ev-selectbox
44
+ v-model="addInfo.comparison"
45
+ :items="getList(targetColumn.type)"
46
+ class="item-input"
47
+ />
48
+ <ev-text-field
49
+ v-model.trim="addInfo.value"
50
+ :type="'text'"
51
+ class="item-input"
52
+ />
53
+ </div>
54
+ </div>
55
+ <div class="split-line"/>
56
+ <div class="confirm-wrap">
57
+ <ev-button
58
+ :size="'small'"
59
+ @click="onSave"
60
+ >Save</ev-button>
61
+ <ev-button
62
+ :size="'small'"
63
+ @click="showAddForm = false"
64
+ >Cancel</ev-button>
65
+ </div>
66
+ </div>
67
+ <ev-grid
68
+ :rows="rows"
69
+ :columns="columns"
70
+ :checked.sync="checked"
71
+ :option="{
72
+ adjust: true,
73
+ useFilter: false,
74
+ useSelect: false,
75
+ useCheckbox: {
76
+ use: true,
77
+ mode: 'multi',
78
+ headerCheck: true,
79
+ }
80
+ }"
81
+ />
82
+ <ev-button @click="onApply">Apply</ev-button>
83
+ </div>
84
+ </div>
85
+ </ev-window>
86
+ </template>
87
+
88
+ <script>
89
+ export default {
90
+ filters: {
91
+ capitalize(value) {
92
+ if (!value) {
93
+ return '';
94
+ }
95
+
96
+ return value.charAt(0).toUpperCase() + value.slice(1);
97
+ },
98
+ },
99
+ props: {
100
+ /**
101
+ * 필터 팝업 표시 유무
102
+ */
103
+ isShow: {
104
+ type: Boolean,
105
+ default: false,
106
+ },
107
+ /**
108
+ * 필터 대상 컬럼 정보
109
+ */
110
+ targetColumn: {
111
+ type: Object,
112
+ default: () => ({}),
113
+ },
114
+ /**
115
+ * 설정된 필터 목록
116
+ */
117
+ filterItems: {
118
+ type: Array,
119
+ default: () => [],
120
+ },
121
+ },
122
+ data() {
123
+ return {
124
+ showWindow: this.isShow,
125
+ showAddForm: false,
126
+ rows: [],
127
+ columns: [
128
+ { caption: 'Type', field: 'type', type: 'String', width: 60 },
129
+ { caption: 'Comparison', field: 'comparison', type: 'String', width: 120 },
130
+ { caption: 'Value', field: 'value', type: 'String' },
131
+ ],
132
+ checked: [],
133
+ addInfo: {
134
+ type: 'AND',
135
+ comparison: this.targetColumn.type === 'string' ? 'Equal' : '>',
136
+ value: '',
137
+ },
138
+ types: [
139
+ { name: 'OR', value: 'OR' },
140
+ { name: 'AND', value: 'AND' },
141
+ ],
142
+ defaultComparison: {
143
+ string: [
144
+ { name: 'Equal', value: 'Equal' },
145
+ { name: 'Not Equal', value: 'Not Equal' },
146
+ { name: 'Like', value: 'Like' },
147
+ { name: 'Not Like', value: 'Not Like' },
148
+ ],
149
+ number: [
150
+ { name: '>', value: '>' },
151
+ { name: '<', value: '<' },
152
+ { name: '=', value: '=' },
153
+ ],
154
+ },
155
+ };
156
+ },
157
+ computed: {
158
+ title() {
159
+ return `Setting Filter(${this.targetColumn.caption})`;
160
+ },
161
+ },
162
+ watch: {
163
+ isShow(value) {
164
+ this.showWindow = value;
165
+ },
166
+ filterItems(items) {
167
+ const columns = this.columns;
168
+ const rows = [];
169
+ const checked = [];
170
+
171
+ for (let ix = 0; ix < items.length; ix++) {
172
+ const item = items[ix];
173
+ const value = columns.reduce((acc, column) => {
174
+ acc.push(item[column.field]);
175
+ return acc;
176
+ }, []);
177
+
178
+ if (item.use) {
179
+ checked.push(value);
180
+ }
181
+
182
+ rows.push(value);
183
+ }
184
+
185
+ this.checked = checked;
186
+ this.rows = rows;
187
+ },
188
+ },
189
+ methods: {
190
+ /**
191
+ * 데이터 유형에 맞는 필터 목록을 반환한다.
192
+ *
193
+ * @param {string} type - 데이터 유형
194
+ * @returns {array} 필터 목록
195
+ */
196
+ getList(type) {
197
+ let result = this.defaultComparison[type];
198
+
199
+ if (!result) {
200
+ result = this.defaultComparison.string;
201
+ }
202
+
203
+ return result;
204
+ },
205
+ /**
206
+ * 선택한 필터를 테이블에 적용하도록 요청한다.
207
+ */
208
+ onApply() {
209
+ const filterItems = [];
210
+ const rows = this.rows;
211
+ const columns = this.columns;
212
+ const checkedItems = this.checked;
213
+
214
+ for (let ix = 0; ix < rows.length; ix++) {
215
+ const row = rows[ix];
216
+ const item = columns.reduce((acc, column, index) => {
217
+ acc[column.field] = row[index];
218
+ return acc;
219
+ }, {});
220
+
221
+ item.use = !!checkedItems.find(checkItem => checkItem === row);
222
+
223
+ filterItems.push(item);
224
+ }
225
+
226
+ /**
227
+ * 필터 적용 요청 이벤트
228
+ *
229
+ * @property {string} field - 컬럼 field
230
+ * @property {array} filterItems - 필터 목록
231
+ */
232
+ this.$emit('apply-filter', this.targetColumn.field, filterItems);
233
+ /**
234
+ * 필터 팝업 종료 전 이벤트
235
+ */
236
+ this.$emit('before-close');
237
+ },
238
+ /**
239
+ * 작성한 필터 정보를 저장한다.
240
+ */
241
+ onSave() {
242
+ const item = this.addInfo;
243
+ this.rows.push(this.columns.reduce((acc, column) => {
244
+ acc.push(item[column.field]);
245
+ return acc;
246
+ }, []));
247
+ this.showAddForm = false;
248
+ },
249
+ /**
250
+ * 새로운 필터 추가 팝업을 표시한다.
251
+ */
252
+ onAdd() {
253
+ this.showAddForm = true;
254
+ this.addInfo = {
255
+ type: 'AND',
256
+ comparison: this.targetColumn.type === 'string' ? 'Equal' : '>',
257
+ value: '',
258
+ };
259
+ },
260
+ /**
261
+ * 선택한 필터를 필터 목록에서 삭제한다.
262
+ */
263
+ onDelete() {
264
+ if (!this.checked.length) {
265
+ return;
266
+ }
267
+
268
+ const checked = this.checked;
269
+ const rows = this.rows;
270
+ const tempRows = [];
271
+ for (let ix = 0; ix < rows.length; ix++) {
272
+ const row = rows[ix];
273
+ if (checked.indexOf(row) === -1) {
274
+ tempRows.push(row);
275
+ }
276
+ }
277
+
278
+ this.checked.length = 0;
279
+ this.rows = tempRows;
280
+ },
281
+ /**
282
+ * 필터 팝업을 종료한다.
283
+ */
284
+ onCloseWindow() {
285
+ this.checked.length = 0;
286
+ this.rows.length = 0;
287
+ this.showAddForm = false;
288
+ /**
289
+ * 필터 팝업 종료 전 이벤트
290
+ */
291
+ this.$emit('before-close');
292
+ },
293
+ },
294
+ };
295
+ </script>
296
+
297
+ <style lang="scss" scoped>
298
+ @import '~@/styles/default';
299
+
300
+ .grid-filter {
301
+ display: flex;
302
+ width: 100%;
303
+ height: 100%;
304
+ flex-direction: column;
305
+ text-align: initial;
306
+
307
+ .grid-filter-header {
308
+ height: 24px;
309
+ margin-bottom: 12px;
310
+ text-align: right;
311
+
312
+ .ev-btn {
313
+ width: 70px;
314
+ padding: 4px 10px;
315
+ border-radius: 2px;
316
+ }
317
+ }
318
+ }
319
+
320
+ .grid-filter-body {
321
+ display: flex;
322
+ width: 100%;
323
+ height: 100%;
324
+ flex-direction: column;
325
+ align-items: center;
326
+
327
+ .ev-btn {
328
+ width: 100px;
329
+ margin-top: 11px;
330
+ padding: 4px 10px;
331
+ border-radius: 2px;
332
+ }
333
+ }
334
+
335
+ .grid-filter-add-wrap {
336
+ display: flex;
337
+ width: 100%;
338
+ padding: 10px;
339
+ background-color: lightgray;
340
+ margin-bottom: 10px;
341
+
342
+ @include evThemify() {
343
+ background-color: evThemed('grid-filter-add-background');
344
+ }
345
+
346
+ .split-line {
347
+ width: 1px;
348
+ margin: 0 20px;
349
+
350
+ @include evThemify() {
351
+ background-color: evThemed('grid-filter-add-background');
352
+ }
353
+ }
354
+
355
+ .confirm-wrap {
356
+ display: flex;
357
+ width: 70px;
358
+ margin-right: 10px;
359
+ flex-direction: column;
360
+ align-items: center;
361
+
362
+ .ev-btn {
363
+ width: 70px;
364
+ padding: 4px 10px;
365
+ border-radius: 2px;
366
+ }
367
+ }
368
+ }
369
+
370
+ .grid-filter-add-item {
371
+ display: flex;
372
+ align-items: center;
373
+ flex: 1;
374
+
375
+ .item-labels {
376
+ margin-right: 10px;
377
+ list-style-type: none;
378
+
379
+ li {
380
+ height: 24px;
381
+ line-height: 24px;
382
+ margin-bottom: 8px;
383
+ font-size: 13px;
384
+
385
+ @include evThemify() {
386
+ color: evThemed('grid-filter-add-label');
387
+ }
388
+
389
+ &:last-child {
390
+ margin-bottom: 0;
391
+ }
392
+ }
393
+ }
394
+
395
+ .item-inputs {
396
+ display: flex;
397
+ flex-direction: column;
398
+ flex: 1;
399
+
400
+ .item-input {
401
+ width: 100%;
402
+ height: 24px;
403
+ margin-bottom: 8px;
404
+
405
+ &:last-child {
406
+ margin-bottom: 0;
407
+ }
408
+ }
409
+ }
410
+ }
411
+ </style>
@@ -0,0 +1,45 @@
1
+ <script>
2
+ export default {
3
+ props: {
4
+ /**
5
+ * 매핑될 slot name
6
+ */
7
+ name: {
8
+ type: String,
9
+ default: '',
10
+ },
11
+ /**
12
+ * 매핑될 slot props
13
+ */
14
+ item: {
15
+ type: Object,
16
+ default: () => ({}),
17
+ },
18
+ },
19
+ data() {
20
+ return {
21
+ };
22
+ },
23
+ render(h) {
24
+ const slot = this.$parent.$scopedSlots[this.name] || this.$slots[this.name];
25
+ const scope = this.item;
26
+
27
+ return h(
28
+ 'div',
29
+ {
30
+ class: 'wrap',
31
+ },
32
+ slot(scope),
33
+ );
34
+ },
35
+ };
36
+ </script>
37
+ <style scoped>
38
+ .wrap {
39
+ display: flex;
40
+ align-items: center;
41
+ justify-content: center;
42
+ width: 100%;
43
+ height: 100%;
44
+ }
45
+ </style>