renusify 2.5.2 → 3.0.0

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 (212) hide show
  1. package/components/app/index.vue +74 -22
  2. package/components/app/toast/index.vue +76 -71
  3. package/components/app/toast/toast.vue +62 -44
  4. package/components/avatar/index.vue +208 -84
  5. package/components/button/buttonConfirm.vue +53 -26
  6. package/components/button/buttonGroup.js +0 -2
  7. package/components/button/buttonGroup.vue +310 -62
  8. package/components/button/index.vue +584 -100
  9. package/components/calendar/index.js +0 -2
  10. package/components/calendar/index.vue +326 -262
  11. package/components/calendar/month.vue +64 -55
  12. package/components/calendar/year.vue +30 -25
  13. package/components/card/index.vue +139 -59
  14. package/components/codeEditor/highlightCss.vue +38 -39
  15. package/components/codeEditor/highlightHtml.vue +64 -64
  16. package/components/codeEditor/highlightJs.vue +37 -38
  17. package/components/codeEditor/index.vue +129 -79
  18. package/components/codeEditor/run.vue +225 -39
  19. package/components/codeEditor/useCodeFormatter.js +150 -0
  20. package/components/confirm/index.vue +139 -80
  21. package/components/container/col.vue +5 -4
  22. package/components/container/divider.vue +28 -19
  23. package/components/container/index.vue +34 -15
  24. package/components/container/row.vue +26 -9
  25. package/components/container/spacer.vue +2 -4
  26. package/components/container/style.scss +3 -0
  27. package/components/content/index.vue +49 -32
  28. package/components/cropper/index.vue +401 -244
  29. package/components/float/index.vue +542 -415
  30. package/components/form/addressInput/index.vue +184 -109
  31. package/components/form/camInput/index.vue +370 -244
  32. package/components/form/checkInput/index.vue +138 -71
  33. package/components/form/checkboxInput/index.vue +87 -47
  34. package/components/form/colorInput/Alpha.vue +81 -83
  35. package/components/form/colorInput/Hue.vue +91 -68
  36. package/components/form/colorInput/Preview.vue +43 -47
  37. package/components/form/colorInput/Saturation.vue +101 -86
  38. package/components/form/colorInput/index.vue +71 -39
  39. package/components/form/colorInput/picker.vue +111 -106
  40. package/components/form/colorInput/useColor.js +153 -0
  41. package/components/form/dateInput/index.vue +691 -356
  42. package/components/form/dateInput/month.vue +63 -54
  43. package/components/form/dateInput/year.vue +35 -25
  44. package/components/form/fileInput/index.js +0 -1
  45. package/components/form/fileInput/index.vue +263 -106
  46. package/components/form/fileInput/single.vue +323 -164
  47. package/components/form/groupInput/index.vue +199 -101
  48. package/components/form/index.vue +189 -83
  49. package/components/form/input/index.vue +416 -377
  50. package/components/form/jsonInput/JsonView.vue +54 -56
  51. package/components/form/jsonInput/index.vue +247 -165
  52. package/components/form/maskInput/index.vue +252 -132
  53. package/components/form/numberInput/index.js +0 -1
  54. package/components/form/numberInput/index.vue +226 -117
  55. package/components/form/passwordInput/index.js +2 -1
  56. package/components/form/passwordInput/index.vue +269 -102
  57. package/components/form/radioInput/index.vue +143 -72
  58. package/components/form/rangeInput/index.vue +280 -167
  59. package/components/form/ratingInput/index.vue +57 -57
  60. package/components/form/selectInput/index.js +1 -3
  61. package/components/form/selectInput/index.vue +584 -296
  62. package/components/form/switchInput/index.vue +73 -59
  63. package/components/form/telInput/index.js +0 -1
  64. package/components/form/telInput/index.vue +238 -135
  65. package/components/form/textArea/index.vue +72 -35
  66. package/components/form/textEditor/index.vue +739 -0
  67. package/components/form/{text-editor → textEditor}/style.scss +8 -16
  68. package/components/form/textInput/index.vue +54 -32
  69. package/components/form/timeInput/index.vue +82 -55
  70. package/components/form/timeInput/range.vue +115 -94
  71. package/components/form/timeInput/timepicker.vue +382 -449
  72. package/components/form/uniqueInput/index.vue +105 -48
  73. package/components/form/unitInput/index.vue +139 -84
  74. package/components/formCreator/index.js +0 -1
  75. package/components/formCreator/index.vue +314 -148
  76. package/components/highlight/index.vue +41 -25
  77. package/components/highlight/style.scss +2 -2
  78. package/components/highlight/{mixin.js → useHighlight.js} +181 -160
  79. package/components/icon/index.vue +79 -33
  80. package/components/img/index.vue +249 -147
  81. package/components/img/preview.vue +180 -198
  82. package/components/img/svgImg.vue +42 -39
  83. package/components/index.js +5 -20
  84. package/components/infinite/index.js +1 -2
  85. package/components/infinite/index.vue +248 -66
  86. package/components/map/index.vue +428 -261
  87. package/components/map/route.vue +794 -487
  88. package/components/map/select.vue +118 -58
  89. package/components/menu/index.vue +201 -91
  90. package/components/meta/meta.js +26 -3
  91. package/components/modal/index.vue +382 -156
  92. package/components/notify/index.vue +204 -86
  93. package/components/notify/notification.vue +38 -55
  94. package/components/progress/circle.vue +189 -70
  95. package/components/progress/line.vue +266 -46
  96. package/components/searchBox/index.js +1 -3
  97. package/components/searchBox/index.vue +194 -101
  98. package/components/skeleton/index.vue +45 -20
  99. package/components/slider/index.vue +318 -156
  100. package/components/swiper/index.vue +254 -106
  101. package/components/table/crud/footer.vue +77 -53
  102. package/components/table/crud/header.vue +71 -72
  103. package/components/table/crud/index.vue +629 -399
  104. package/components/table/index.vue +721 -278
  105. package/components/timeAgo/index.vue +145 -96
  106. package/components/tour/index.vue +338 -235
  107. package/components/tree/index.vue +235 -89
  108. package/components/tree/tree-element.vue +106 -106
  109. package/directive/animate/index.js +77 -0
  110. package/directive/clickOutSide/index.js +98 -0
  111. package/directive/drag/index.js +153 -0
  112. package/directive/index.js +11 -13
  113. package/directive/intersect/index.js +263 -0
  114. package/directive/mask/index.js +67 -0
  115. package/directive/parallax/index.js +78 -0
  116. package/directive/ripple/index.js +14 -0
  117. package/directive/scroll/index.js +244 -0
  118. package/directive/sortable/index.js +274 -0
  119. package/directive/title/index.js +75 -0
  120. package/directive/touch/index.js +268 -0
  121. package/index.js +10 -8
  122. package/package.json +5 -2
  123. package/plugins/validation/Validate.js +88 -79
  124. package/scripts/generate-docs.mjs +226 -0
  125. package/scripts/menu.mjs +240 -0
  126. package/scripts/parser.mjs +1086 -0
  127. package/style/_index.scss +7 -0
  128. package/style/app.scss +13 -65
  129. package/style/colors.scss +5 -22
  130. package/style/functions/index.scss +8 -0
  131. package/style/mixins/index.scss +17 -5
  132. package/style/variables/base.scss +154 -175
  133. package/style/variables/color.scss +0 -12
  134. package/style/variables/utilities.scss +0 -180
  135. package/tools/helper.js +0 -8
  136. package/tools/icons.js +6 -1
  137. package/tools/root.js +71 -0
  138. package/components/app/style.scss +0 -41
  139. package/components/app/toast/style.scss +0 -20
  140. package/components/avatar/style.scss +0 -32
  141. package/components/bar/bottomNav.js +0 -1
  142. package/components/bar/bottomNav.vue +0 -28
  143. package/components/bar/bottomNavigationCircle.js +0 -2
  144. package/components/bar/bottomNavigationCircle.vue +0 -99
  145. package/components/bar/scss/bottomNav.scss +0 -67
  146. package/components/bar/scss/toolbar.scss +0 -174
  147. package/components/bar/toolbar/index.js +0 -8
  148. package/components/bar/toolbar/index.vue +0 -35
  149. package/components/bar/toolbar/laptop.vue +0 -33
  150. package/components/bar/toolbar/menuChilds.vue +0 -41
  151. package/components/bar/toolbar/menuLaptop.vue +0 -41
  152. package/components/bar/toolbar/menuMob.vue +0 -39
  153. package/components/bar/toolbar/mixin.js +0 -43
  154. package/components/bar/toolbar/mobile.vue +0 -34
  155. package/components/breadcrumb/bredcrumbItem.vue +0 -39
  156. package/components/breadcrumb/index.js +0 -3
  157. package/components/breadcrumb/index.vue +0 -71
  158. package/components/breadcrumb/style.scss +0 -51
  159. package/components/button/style.scss +0 -411
  160. package/components/card/style.scss +0 -86
  161. package/components/chart/chart.js +0 -1
  162. package/components/chart/chart.vue +0 -69
  163. package/components/chart/worldMap.js +0 -2
  164. package/components/chart/worldMap.vue +0 -1112
  165. package/components/chat/MessageList.vue +0 -163
  166. package/components/chat/chatInput.vue +0 -150
  167. package/components/chat/chatMsg.vue +0 -276
  168. package/components/chat/index.js +0 -11
  169. package/components/chat/index.vue +0 -113
  170. package/components/chip/index.js +0 -3
  171. package/components/chip/index.vue +0 -77
  172. package/components/chip/style.scss +0 -199
  173. package/components/codeEditor/mixin.js +0 -145
  174. package/components/countdown/index.js +0 -1
  175. package/components/countdown/index.vue +0 -105
  176. package/components/form/colorInput/mixin.js +0 -132
  177. package/components/form/fileInput/file.js +0 -148
  178. package/components/form/telInput/assets/flags.png +0 -0
  179. package/components/form/telInput/assets/flags@2x.png +0 -0
  180. package/components/form/text-editor/index.vue +0 -705
  181. package/components/icon/style.scss +0 -17
  182. package/components/infinite/div.js +0 -6
  183. package/components/infinite/div.vue +0 -193
  184. package/components/infinite/page.js +0 -3
  185. package/components/infinite/page.vue +0 -105
  186. package/components/list/index.js +0 -3
  187. package/components/list/index.vue +0 -122
  188. package/components/list/style.scss +0 -66
  189. package/components/message/index.js +0 -4
  190. package/components/message/index.vue +0 -40
  191. package/components/modal/style.scss +0 -146
  192. package/components/nestable/NestableItem.vue +0 -307
  193. package/components/nestable/editable.js +0 -44
  194. package/components/nestable/index.js +0 -1
  195. package/components/nestable/index.vue +0 -226
  196. package/components/nestable/methods.js +0 -416
  197. package/components/progress/style.scss +0 -229
  198. package/components/table/style.scss +0 -338
  199. package/components/tabs/index.js +0 -3
  200. package/components/tabs/index.vue +0 -151
  201. package/components/timeline/index.js +0 -6
  202. package/components/timeline/index.vue +0 -76
  203. package/directive/resize/index.js +0 -30
  204. package/directive/skeleton/index.js +0 -27
  205. package/directive/skeleton/style.scss +0 -37
  206. package/plugins/request/Request.js +0 -68
  207. package/style/animation.scss +0 -94
  208. package/style/style.scss +0 -8
  209. package/tools/rootable.js +0 -75
  210. /package/components/form/{text-editor → textEditor}/index.js +0 -0
  211. /package/components/form/{text-editor → textEditor}/preview.js +0 -0
  212. /package/components/form/{text-editor → textEditor}/preview.vue +0 -0
@@ -1,4 +1,82 @@
1
1
  //https://github.com/gerasimvol/vue-prlx
2
+ /**
3
+ * @example // v-parallax usage
4
+ * <template>
5
+ * <div class="parallax-container">
6
+ *
7
+ * <div class="scroll-content">
8
+ * <div class="placeholder" style="height: 100vh"></div>
9
+ *
10
+ * <div
11
+ * v-parallax="{ speed: 0.3 }"
12
+ * class="parallax-box box1"
13
+ * >
14
+ * <h2>Default Parallax</h2>
15
+ * <p>Speed: 0.3, Direction: Y</p>
16
+ * </div>
17
+ *
18
+ *
19
+ * </div>
20
+ *
21
+ * </div>
22
+ * </template>
23
+ *
24
+ * <script>
25
+ *
26
+ * </script>
27
+ *
28
+ * <style>
29
+ *
30
+ * .scroll-content {
31
+ * position: relative;
32
+ * background: #f0f2f5;
33
+ * }
34
+ *
35
+ * .placeholder {
36
+ * background: linear-gradient(90deg, #e0e0e0 25%, #d0d0d0 50%, #e0e0e0 75%);
37
+ * background-size: 200% 100%;
38
+ * animation: loading 2s infinite;
39
+ * border-radius: 4px;
40
+ * margin: 10px 0;
41
+ * }
42
+ *
43
+ * @keyframes loading {
44
+ * 0% { background-position: 200% 0; }
45
+ * 100% { background-position: -200% 0; }
46
+ * }
47
+ *
48
+ * .parallax-box {
49
+ * width: 80%;
50
+ * max-width: 600px;
51
+ * height: 300px;
52
+ * margin: 0 auto 40px;
53
+ * border-radius: 12px;
54
+ * display: flex;
55
+ * flex-direction: column;
56
+ * justify-content: center;
57
+ * align-items: center;
58
+ * text-align: center;
59
+ * padding: 30px;
60
+ * color: white;
61
+ * box-shadow: 0 10px 30px rgba(0,0,0,0.15);
62
+ * overflow: hidden;
63
+ * }
64
+ *
65
+ * .parallax-box h2 {
66
+ * font-size: 2rem;
67
+ * margin-bottom: 10px;
68
+ * }
69
+ *
70
+ * .parallax-box p {
71
+ * font-size: 1rem;
72
+ * opacity: 0.9;
73
+ * }
74
+ *
75
+ * .box1 {
76
+ * background: linear-gradient(135deg, #ff6b6b 0%, #ee5a52 100%);
77
+ * }
78
+ * </style>
79
+ * */
2
80
  function mounted (el, { modifiers = {}, value = {} }) {
3
81
  // SETUP SETTING
4
82
  const settings = {
@@ -1,6 +1,20 @@
1
1
  // MIT License https://github.com/vuetifyjs/vuetify
2
2
  import './style.scss'
3
3
 
4
+ /**
5
+ * @example // v-ripple usage
6
+ * <template>
7
+ * <div class="text-center">
8
+ * <span v-ripple class="mt-12 pa-12 rippl br-md cursor-pointer">click me</span>
9
+ * </div>
10
+ * </template>
11
+ * <style>
12
+ * .rippl{
13
+ * background-color: var(--color-sheet-container-low);
14
+ * color: var(--color-on-sheet);
15
+ * }
16
+ * </style>
17
+ * */
4
18
  function transform (el, value) {
5
19
  el.style.transform = value
6
20
  el.style.webkitTransform = value
@@ -1,3 +1,247 @@
1
+ /**
2
+ * @example // v-scroll usage
3
+ * <template>
4
+ * <div class="scroll-container">
5
+ * <div class="scroll-areas">
6
+ * <div class="scroll-area">
7
+ * <h3>Window Scroll</h3>
8
+ * <div v-scroll.window="handleWindowScroll" class="scroll-content window-scroll">
9
+ * <div class="scroll-info">
10
+ * <div class="info-item">
11
+ * <span>Scroll Top:</span>
12
+ * <span class="value">{{ windowScrollTop }}px</span>
13
+ * </div>
14
+ * <div class="info-item">
15
+ * <span>Scroll %:</span>
16
+ * <span class="value">{{ windowScrollPercent }}%</span>
17
+ * </div>
18
+ * <div class="info-item">
19
+ * <span>Events:</span>
20
+ * <span class="value counter">{{ windowScrollCount }}</span>
21
+ * </div>
22
+ * </div>
23
+ * <div class="scroll-indicator">
24
+ * <div class="indicator-bar" :style="{ height: windowScrollPercent + '%' }"></div>
25
+ * </div>
26
+ * </div>
27
+ * </div>
28
+ *
29
+ * <div class="scroll-area">
30
+ * <h3>Element Scroll</h3>
31
+ * <div ref="elementScroll" v-scroll="handleElementScroll" class="scroll-content element-scroll">
32
+ * <div class="scroll-info">
33
+ * <div class="info-item">
34
+ * <span>Scroll Top:</span>
35
+ * <span class="value">{{ elementScrollTop }}px</span>
36
+ * </div>
37
+ * <div class="info-item">
38
+ * <span>Direction:</span>
39
+ * <span class="value direction" :class="elementScrollDirection">
40
+ * {{ elementScrollDirection }}
41
+ * </span>
42
+ * </div>
43
+ * <div class="info-item">
44
+ * <span>Events:</span>
45
+ * <span class="value counter">{{ elementScrollCount }}</span>
46
+ * </div>
47
+ * </div>
48
+ * <div class="scroll-content-placeholder">
49
+ * <div v-for="n in 10" :key="n" class="content-item">
50
+ * Item {{ n }}
51
+ * </div>
52
+ * </div>
53
+ * </div>
54
+ * </div>
55
+ * </div>
56
+ * </div>
57
+ * </template>
58
+ *
59
+ * <script>
60
+ * import { ref, computed } from 'vue'
61
+ *
62
+ * const windowScrollTop = ref(0)
63
+ * const windowScrollCount = ref(0)
64
+ * const elementScrollTop = ref(0)
65
+ * const elementScrollCount = ref(0)
66
+ * const elementScrollDirection = ref('none')
67
+ * const targetScrollTop = ref(0)
68
+ * const lastElementScroll = ref(0)
69
+ *
70
+ * const elementScroll = ref(null)
71
+ * const targetElement = ref(null)
72
+ *
73
+ * const windowScrollPercent = computed(() => {
74
+ * const docHeight = document.documentElement.scrollHeight - window.innerHeight
75
+ * return docHeight > 0 ? Math.round((windowScrollTop.value / docHeight) * 100) : 0
76
+ * })
77
+ *
78
+ * const handleWindowScroll = () => {
79
+ * windowScrollTop.value = window.pageYOffset || document.documentElement.scrollTop
80
+ * windowScrollCount.value++
81
+ * }
82
+ *
83
+ * const handleElementScroll = (event) => {
84
+ * elementScrollTop.value = event.target.scrollTop
85
+ * elementScrollCount.value++
86
+ *
87
+ * if (lastElementScroll.value < elementScrollTop.value) {
88
+ * elementScrollDirection.value = 'down'
89
+ * } else if (lastElementScroll.value > elementScrollTop.value) {
90
+ * elementScrollDirection.value = 'up'
91
+ * }
92
+ * lastElementScroll.value = elementScrollTop.value
93
+ * }
94
+ * <//script>
95
+ *
96
+ * <style>
97
+ * body{height:200vh}
98
+ * .scroll-container {
99
+ * font-family: Arial, sans-serif;
100
+ * padding: 20px;
101
+ * max-width: 1200px;
102
+ * margin: 0 auto;
103
+ * }
104
+ *
105
+ * .scroll-areas {
106
+ * display: grid;
107
+ * grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
108
+ * gap: 25px;
109
+ * }
110
+ *
111
+ * .scroll-area {
112
+ * background: white;
113
+ * border-radius: 12px;
114
+ * padding: 20px;
115
+ * box-shadow: 0 4px 20px rgba(0,0,0,0.1);
116
+ * }
117
+ *
118
+ * .scroll-area h3 {
119
+ * margin-top: 0;
120
+ * color: #667eea;
121
+ * font-size: 1.3rem;
122
+ * margin-bottom: 15px;
123
+ * }
124
+ *
125
+ * .scroll-content {
126
+ * height: 250px;
127
+ * overflow-y: auto;
128
+ * border: 2px solid #e9ecef;
129
+ * border-radius: 8px;
130
+ * padding: 15px;
131
+ * position: relative;
132
+ * }
133
+ *
134
+ * .window-scroll {
135
+ * background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
136
+ * }
137
+ *
138
+ * .element-scroll {
139
+ * background: linear-gradient(135deg, #f0f4ff 0%, #e6e9ff 100%);
140
+ * }
141
+ *
142
+ * .scroll-info {
143
+ * position: sticky;
144
+ * top: 0;
145
+ * background: white;
146
+ * padding: 10px;
147
+ * border-radius: 6px;
148
+ * margin-bottom: 15px;
149
+ * box-shadow: 0 2px 8px rgba(0,0,0,0.1);
150
+ * z-index: 1;
151
+ * }
152
+ *
153
+ * .info-item {
154
+ * display: flex;
155
+ * justify-content: space-between;
156
+ * align-items: center;
157
+ * margin-bottom: 8px;
158
+ * padding: 6px 0;
159
+ * border-bottom: 1px solid #eee;
160
+ * }
161
+ *
162
+ * .info-item:last-child {
163
+ * margin-bottom: 0;
164
+ * border-bottom: none;
165
+ * }
166
+ *
167
+ * .info-item span:first-child {
168
+ * color: #555;
169
+ * font-weight: bold;
170
+ * }
171
+ *
172
+ * .value {
173
+ * font-family: monospace;
174
+ * font-weight: bold;
175
+ * padding: 4px 10px;
176
+ * border-radius: 4px;
177
+ * background: #f8f9fa;
178
+ * min-width: 70px;
179
+ * text-align: center;
180
+ * }
181
+ *
182
+ * .counter {
183
+ * background: #667eea !important;
184
+ * color: white !important;
185
+ * }
186
+ *
187
+ * .direction {
188
+ * background: #ff6b6b !important;
189
+ * color: white !important;
190
+ * }
191
+ *
192
+ * .direction.up {
193
+ * background: #4ecdc4 !important;
194
+ * }
195
+ *
196
+ * .direction.down {
197
+ * background: #ffa726 !important;
198
+ * }
199
+ *
200
+ * .scroll-indicator {
201
+ * position: absolute;
202
+ * right: 20px;
203
+ * top: 100px;
204
+ * width: 10px;
205
+ * height: 100px;
206
+ * background: #e9ecef;
207
+ * border-radius: 5px;
208
+ * overflow: hidden;
209
+ * }
210
+ *
211
+ * .indicator-bar {
212
+ * position: absolute;
213
+ * bottom: 0;
214
+ * width: 100%;
215
+ * background: linear-gradient(to top, #667eea, #764ba2);
216
+ * border-radius: 5px;
217
+ * transition: height 0.1s;
218
+ * }
219
+ *
220
+ * .scroll-content-placeholder {
221
+ * padding: 20px;
222
+ * }
223
+ *
224
+ * .content-item {
225
+ * padding: 15px;
226
+ * margin: 10px 0;
227
+ * background: linear-gradient(135deg, #4ecdc4 0%, #44a08d 100%);
228
+ * color: white;
229
+ * border-radius: 6px;
230
+ * text-align: center;
231
+ * font-weight: bold;
232
+ * box-shadow: 0 2px 4px rgba(0,0,0,0.1);
233
+ * }
234
+ *
235
+ *
236
+ * .monitoring-panel {
237
+ * background: rgba(102, 126, 234, 0.1);
238
+ * border: 2px dashed #667eea;
239
+ * border-radius: 8px;
240
+ * padding: 15px;
241
+ * color: #667eea;
242
+ * }
243
+ * </style>
244
+ * */
1
245
  function mounted (el, binding) {
2
246
  const callback = binding.value
3
247
  const options = binding.options || {
@@ -1,6 +1,280 @@
1
1
  import './style.scss'
2
2
  import {cleanArray, ifHas} from '../../tools/helper.js'
3
3
 
4
+ /**
5
+ * @example // v-sortable usage
6
+ *
7
+ * <template>
8
+ * <div class="sortable-container">
9
+ * <div class="sortable-lists">
10
+ * <div class="sortable-list">
11
+ * <h3>Task List</h3>
12
+ * <div v-sortable="{ items: tasks, end: onTaskReorder }" class="sortable-area">
13
+ * <div v-for="task in tasks" :key="task.id" class="sortable-item">
14
+ * <div class="task-content">
15
+ * <div class="task-icon">📋</div>
16
+ * <div class="task-info">
17
+ * <div class="task-title">{{ task.title }}</div>
18
+ * <div class="task-desc">{{ task.description }}</div>
19
+ * </div>
20
+ * </div>
21
+ * <div class="task-drag-handle">
22
+ * ⋮⋮
23
+ * </div>
24
+ * </div>
25
+ * </div>
26
+ * </div>
27
+ *
28
+ *
29
+ * <div class="sortable-info">
30
+ * <div class="info-item">
31
+ * <span>Task Order:</span>
32
+ * <span class="order-value">{{ taskOrder }}</span>
33
+ * </div>
34
+ * </div>
35
+ * </div>
36
+ * </template>
37
+ *
38
+ * <script>
39
+ * import { ref, computed } from 'vue'
40
+ *
41
+ * const tasks = ref([
42
+ * { id: 1, title: 'Design Homepage', description: 'Create wireframes and mockups' },
43
+ * { id: 2, title: 'Implement Login', description: 'Build authentication system' },
44
+ * { id: 3, title: 'Write Documentation', description: 'Document API endpoints' },
45
+ * { id: 4, title: 'Fix Mobile Bugs', description: 'Resolve responsive issues' },
46
+ * { id: 5, title: 'Add Analytics', description: 'Integrate tracking tools' }
47
+ * ])
48
+ *
49
+ * const taskOrder = computed(() => tasks.value.map(t => t.id).join(', '))
50
+ *
51
+ * const onTaskReorder = (newOrder) => {
52
+ * console.log(newOrder)
53
+ * }
54
+ *
55
+ * const onDragStart = () => {
56
+ * console.log('Drag started')
57
+ * }
58
+ *
59
+ * <//script>
60
+ *
61
+ * <style>
62
+ * .sortable-container {
63
+ * font-family: Arial, sans-serif;
64
+ * padding: 20px;
65
+ * max-width: 1400px;
66
+ * margin: 0 auto;
67
+ * }
68
+ *
69
+ * .sortable-lists {
70
+ * display: grid;
71
+ * grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
72
+ * gap: 30px;
73
+ * margin-bottom: 30px;
74
+ * }
75
+ *
76
+ * .sortable-list {
77
+ * background: white;
78
+ * border-radius: 12px;
79
+ * padding: 25px;
80
+ * box-shadow: 0 4px 20px rgba(0,0,0,0.1);
81
+ * }
82
+ *
83
+ * .sortable-list h3 {
84
+ * margin-top: 0;
85
+ * color: #667eea;
86
+ * font-size: 1.4rem;
87
+ * margin-bottom: 20px;
88
+ * text-align: center;
89
+ * }
90
+ *
91
+ * .sortable-area {
92
+ * min-height: 400px;
93
+ * border: 2px dashed #e9ecef;
94
+ * border-radius: 8px;
95
+ * padding: 10px;
96
+ * }
97
+ *
98
+ * .sortable-item {
99
+ * background: white;
100
+ * border: 2px solid #dee2e6;
101
+ * border-radius: 8px;
102
+ * padding: 15px;
103
+ * margin-bottom: 10px;
104
+ * display: flex;
105
+ * align-items: center;
106
+ * justify-content: space-between;
107
+ * cursor: move;
108
+ * user-select: none;
109
+ * transition: all 0.3s;
110
+ * position: relative;
111
+ * }
112
+ *
113
+ * .sortable-item:hover {
114
+ * border-color: #667eea;
115
+ * box-shadow: 0 2px 8px rgba(102, 126, 234, 0.2);
116
+ * }
117
+ *
118
+ * .sortable-item.on-drag {
119
+ * position: absolute;
120
+ * z-index: 1000;
121
+ * opacity: 0.9;
122
+ * transform: scale(1.05);
123
+ * box-shadow: 0 10px 30px rgba(0,0,0,0.3);
124
+ * }
125
+ *
126
+ * .task-content {
127
+ * display: flex;
128
+ * align-items: center;
129
+ * gap: 15px;
130
+ * flex: 1;
131
+ * }
132
+ *
133
+ * .task-icon {
134
+ * font-size: 1.5rem;
135
+ * }
136
+ *
137
+ * .task-info {
138
+ * flex: 1;
139
+ * }
140
+ *
141
+ * .task-title {
142
+ * font-weight: bold;
143
+ * color: #333;
144
+ * margin-bottom: 4px;
145
+ * }
146
+ *
147
+ * .task-desc {
148
+ * color: #666;
149
+ * font-size: 0.9rem;
150
+ * }
151
+ *
152
+ * .task-drag-handle {
153
+ * color: #adb5bd;
154
+ * font-size: 1.2rem;
155
+ * padding: 0 10px;
156
+ * cursor: grab;
157
+ * user-select: none;
158
+ * }
159
+ *
160
+ * .image-item {
161
+ * flex-direction: column;
162
+ * align-items: stretch;
163
+ * gap: 15px;
164
+ * }
165
+ *
166
+ * .image-content {
167
+ * display: flex;
168
+ * align-items: center;
169
+ * gap: 15px;
170
+ * }
171
+ *
172
+ * .image-preview {
173
+ * width: 60px;
174
+ * height: 60px;
175
+ * border-radius: 6px;
176
+ * object-fit: cover;
177
+ * }
178
+ *
179
+ * .image-info {
180
+ * flex: 1;
181
+ * }
182
+ *
183
+ * .image-title {
184
+ * font-weight: bold;
185
+ * color: #333;
186
+ * margin-bottom: 4px;
187
+ * }
188
+ *
189
+ * .image-size {
190
+ * color: #666;
191
+ * font-size: 0.9rem;
192
+ * }
193
+ *
194
+ * .image-drag {
195
+ * align-self: flex-end;
196
+ * color: #adb5bd;
197
+ * font-size: 1.2rem;
198
+ * padding: 5px 10px;
199
+ * background: #f8f9fa;
200
+ * border-radius: 4px;
201
+ * cursor: grab;
202
+ * user-select: none;
203
+ * }
204
+ *
205
+ * .user-content {
206
+ * display: flex;
207
+ * align-items: center;
208
+ * gap: 15px;
209
+ * flex: 1;
210
+ * }
211
+ *
212
+ * .user-avatar {
213
+ * width: 50px;
214
+ * height: 50px;
215
+ * background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
216
+ * color: white;
217
+ * border-radius: 50%;
218
+ * display: flex;
219
+ * align-items: center;
220
+ * justify-content: center;
221
+ * font-weight: bold;
222
+ * font-size: 1.2rem;
223
+ * }
224
+ *
225
+ * .user-info {
226
+ * flex: 1;
227
+ * }
228
+ *
229
+ * .user-name {
230
+ * font-weight: bold;
231
+ * color: #333;
232
+ * margin-bottom: 4px;
233
+ * }
234
+ *
235
+ * .user-email {
236
+ * color: #666;
237
+ * font-size: 0.9rem;
238
+ * }
239
+ *
240
+ * .sortable-info {
241
+ * background: white;
242
+ * border-radius: 12px;
243
+ * padding: 25px;
244
+ * box-shadow: 0 4px 20px rgba(0,0,0,0.1);
245
+ * }
246
+ *
247
+ * .sortable-info .info-item {
248
+ * display: flex;
249
+ * justify-content: space-between;
250
+ * align-items: center;
251
+ * padding: 12px;
252
+ * margin-bottom: 10px;
253
+ * background: #f8f9fa;
254
+ * border-radius: 8px;
255
+ * border-left: 4px solid #667eea;
256
+ * }
257
+ *
258
+ * .sortable-info .info-item:last-child {
259
+ * margin-bottom: 0;
260
+ * }
261
+ *
262
+ * .sortable-info .info-item span:first-child {
263
+ * font-weight: bold;
264
+ * color: #555;
265
+ * }
266
+ *
267
+ * .order-value {
268
+ * font-family: monospace;
269
+ * font-weight: bold;
270
+ * background: #e9ecef;
271
+ * padding: 6px 12px;
272
+ * border-radius: 4px;
273
+ * min-width: 150px;
274
+ * text-align: center;
275
+ * }
276
+ * </style>
277
+ * */
4
278
  let scopeObj;
5
279
 
6
280
  function defineScope(elementArray) {
@@ -1,5 +1,80 @@
1
1
  import './style.scss'
2
2
 
3
+ /**
4
+ * @example // v-title usage
5
+ * <template>
6
+ * <div class="tooltip-section">
7
+ * <h2>Top Tooltips</h2>
8
+ * <div class="d-flex h-space-around">
9
+ * <button v-title.top="'This is a top tooltip'" class="tooltip-btn btn-primary">
10
+ * Top Tooltip
11
+ * </button>
12
+ *
13
+ * <div v-title.top="'Save your changes'" class="tooltip-icon">
14
+ * 💾
15
+ * </div>
16
+ *
17
+ * <a v-title.top="'Visit our documentation'" href="#" class="tooltip-link">
18
+ * Documentation
19
+ * </a>
20
+ * </div>
21
+ * </div>
22
+ *
23
+ * <!-- Bottom Tooltips -->
24
+ * <div class="tooltip-section">
25
+ * <h2>Bottom Tooltips</h2>
26
+ * <div class="d-flex h-space-around">
27
+ * <button v-title.bottom="'Click to download file'" class="tooltip-btn btn-success">
28
+ * Download
29
+ * </button>
30
+ *
31
+ * <div v-title.bottom="'Delete this item'" class="tooltip-icon">
32
+ * 🗑️
33
+ * </div>
34
+ *
35
+ * <a v-title.bottom="'Contact support team'" href="#" class="tooltip-link">
36
+ * Support
37
+ * </a>
38
+ * </div>
39
+ * </div>
40
+ *
41
+ * <!-- Left Tooltips -->
42
+ * <div class="tooltip-section">
43
+ * <h2>Left Tooltips</h2>
44
+ * <div class="d-flex h-space-around">
45
+ * <button v-title.left="'Previous page'" class="tooltip-btn btn-info">
46
+ * ← Back
47
+ * </button>
48
+ *
49
+ * <div v-title.left="'User settings'" class="tooltip-icon">
50
+ * ⚙️
51
+ * </div>
52
+ *
53
+ * <a v-title.left="'View your profile'" href="#" class="tooltip-link">
54
+ * Profile
55
+ * </a>
56
+ * </div>
57
+ * </div>
58
+ *
59
+ * <!-- Right Tooltips -->
60
+ * <div class="tooltip-section">
61
+ * <h2>Right Tooltips</h2>
62
+ * <div class="d-flex h-space-around">
63
+ * <button v-title.right="'Next page'" class="tooltip-btn btn-warning">
64
+ * Next →
65
+ * </button>
66
+ *
67
+ * <div v-title.right="'Open notifications'" class="tooltip-icon">
68
+ * 🔔
69
+ * </div>
70
+ *
71
+ * <a v-title.right="'Go to home page'" href="#" class="tooltip-link">
72
+ * Home
73
+ * </a>
74
+ * </div>
75
+ * </div>
76
+ * </template>
77
+ * */
3
78
  function mousestart(el, binding) {
4
79
  let d = 'top'
5
80