@hostlink/nuxt-light 1.55.0 → 1.55.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.
Files changed (218) hide show
  1. package/README.md +120 -120
  2. package/dist/module.json +1 -1
  3. package/dist/runtime/components/L/CustomField/Add.vue +40 -42
  4. package/dist/runtime/components/L/CustomField/List.vue +5 -5
  5. package/dist/runtime/components/L/Database/create-table-dialog.vue +33 -34
  6. package/dist/runtime/components/L/Fieldset.vue +8 -11
  7. package/dist/runtime/components/L/ForgetPasswordDialog.vue +26 -27
  8. package/dist/runtime/components/L/Revision.vue +89 -93
  9. package/dist/runtime/components/L/Storage.vue +7 -7
  10. package/dist/runtime/components/L/System/Setting/authentication.d.vue.ts +1 -5
  11. package/dist/runtime/components/L/System/Setting/authentication.vue +16 -16
  12. package/dist/runtime/components/L/System/Setting/authentication.vue.d.ts +1 -5
  13. package/dist/runtime/components/L/System/Setting/developer.vue +10 -11
  14. package/dist/runtime/components/L/System/Setting/forget-password.vue +9 -9
  15. package/dist/runtime/components/L/System/Setting/general.vue +9 -9
  16. package/dist/runtime/components/L/System/Setting/mail.d.vue.ts +1 -5
  17. package/dist/runtime/components/L/System/Setting/mail.vue +28 -32
  18. package/dist/runtime/components/L/System/Setting/mail.vue.d.ts +1 -5
  19. package/dist/runtime/components/L/System/Setting/modules.d.vue.ts +1 -5
  20. package/dist/runtime/components/L/System/Setting/modules.vue +6 -6
  21. package/dist/runtime/components/L/System/Setting/modules.vue.d.ts +1 -5
  22. package/dist/runtime/components/L/System/Setting/security.d.vue.ts +1 -5
  23. package/dist/runtime/components/L/System/Setting/security.vue +38 -41
  24. package/dist/runtime/components/L/System/Setting/security.vue.d.ts +1 -5
  25. package/dist/runtime/components/L/User/eventlog.vue +5 -5
  26. package/dist/runtime/components/L/User/overview.vue +19 -19
  27. package/dist/runtime/components/L/User/userlog.vue +1 -1
  28. package/dist/runtime/components/L/ValidationInput.vue +14 -14
  29. package/dist/runtime/components/MyTest.vue +3 -3
  30. package/dist/runtime/components/l-action-btn.vue +4 -4
  31. package/dist/runtime/components/l-add-btn.vue +3 -3
  32. package/dist/runtime/components/l-alert.vue +8 -8
  33. package/dist/runtime/components/l-app-main.d.vue.ts +1 -5
  34. package/dist/runtime/components/l-app-main.vue +170 -171
  35. package/dist/runtime/components/l-app-main.vue.d.ts +1 -5
  36. package/dist/runtime/components/l-app.vue +27 -27
  37. package/dist/runtime/components/l-audit-card.vue +8 -8
  38. package/dist/runtime/components/l-back-btn.vue +6 -6
  39. package/dist/runtime/components/l-banner.d.vue.ts +1 -1
  40. package/dist/runtime/components/l-banner.vue +10 -10
  41. package/dist/runtime/components/l-banner.vue.d.ts +1 -1
  42. package/dist/runtime/components/l-bar.vue +3 -3
  43. package/dist/runtime/components/l-btn.vue +4 -4
  44. package/dist/runtime/components/l-card.d.vue.ts +1 -9
  45. package/dist/runtime/components/l-card.vue +31 -31
  46. package/dist/runtime/components/l-card.vue.d.ts +1 -9
  47. package/dist/runtime/components/l-checkbox.vue +3 -3
  48. package/dist/runtime/components/l-col.vue +5 -5
  49. package/dist/runtime/components/l-customizer.d.vue.ts +2 -2
  50. package/dist/runtime/components/l-customizer.vue +95 -96
  51. package/dist/runtime/components/l-customizer.vue.d.ts +2 -2
  52. package/dist/runtime/components/l-date-picker.d.vue.ts +1 -1
  53. package/dist/runtime/components/l-date-picker.vue +17 -17
  54. package/dist/runtime/components/l-date-picker.vue.d.ts +1 -1
  55. package/dist/runtime/components/l-delete-btn.vue +1 -1
  56. package/dist/runtime/components/l-dialog-database-field-add.vue +25 -26
  57. package/dist/runtime/components/l-drag-drop-container.vue +5 -5
  58. package/dist/runtime/components/l-drag-drop-group.vue +1 -1
  59. package/dist/runtime/components/l-drag-drop.vue +6 -6
  60. package/dist/runtime/components/l-edit-btn.vue +2 -2
  61. package/dist/runtime/components/l-editor.d.vue.ts +1 -5
  62. package/dist/runtime/components/l-editor.vue +41 -41
  63. package/dist/runtime/components/l-editor.vue.d.ts +1 -5
  64. package/dist/runtime/components/l-facebook-button.vue +2 -2
  65. package/dist/runtime/components/l-fav-menu.vue +14 -14
  66. package/dist/runtime/components/l-field.vue +3 -3
  67. package/dist/runtime/components/l-file-manager-labels.vue +11 -11
  68. package/dist/runtime/components/l-file-manager-move.vue +67 -67
  69. package/dist/runtime/components/l-file-manager-preview.vue +22 -22
  70. package/dist/runtime/components/l-file-manager.vue +243 -248
  71. package/dist/runtime/components/l-file-upload.d.vue.ts +1 -1
  72. package/dist/runtime/components/l-file-upload.vue +25 -25
  73. package/dist/runtime/components/l-file-upload.vue.d.ts +1 -1
  74. package/dist/runtime/components/l-file.d.vue.ts +1 -5
  75. package/dist/runtime/components/l-file.vue +8 -8
  76. package/dist/runtime/components/l-file.vue.d.ts +1 -5
  77. package/dist/runtime/components/l-form-dialog.vue +27 -27
  78. package/dist/runtime/components/l-form.d.vue.ts +1 -33
  79. package/dist/runtime/components/l-form.vue +11 -11
  80. package/dist/runtime/components/l-form.vue.d.ts +1 -33
  81. package/dist/runtime/components/l-group-select.vue +22 -22
  82. package/dist/runtime/components/l-icon-picker.vue +35 -38
  83. package/dist/runtime/components/l-input-select.vue +4 -4
  84. package/dist/runtime/components/l-input-xlsx.vue +30 -31
  85. package/dist/runtime/components/l-input.d.vue.ts +1 -1
  86. package/dist/runtime/components/l-input.vue +23 -23
  87. package/dist/runtime/components/l-input.vue.d.ts +1 -1
  88. package/dist/runtime/components/l-item.vue +18 -18
  89. package/dist/runtime/components/l-link.vue +3 -3
  90. package/dist/runtime/components/l-list.vue +12 -12
  91. package/dist/runtime/components/l-login.d.vue.ts +1 -5
  92. package/dist/runtime/components/l-login.vue +57 -57
  93. package/dist/runtime/components/l-login.vue.d.ts +1 -5
  94. package/dist/runtime/components/l-menu.vue +33 -34
  95. package/dist/runtime/components/l-microsoft-button.d.vue.ts +1 -11
  96. package/dist/runtime/components/l-microsoft-button.vue +68 -68
  97. package/dist/runtime/components/l-microsoft-button.vue.d.ts +1 -11
  98. package/dist/runtime/components/l-page.vue +21 -21
  99. package/dist/runtime/components/l-repeater.d.vue.ts +3 -3
  100. package/dist/runtime/components/l-repeater.vue +35 -35
  101. package/dist/runtime/components/l-repeater.vue.d.ts +3 -3
  102. package/dist/runtime/components/l-row.vue +5 -5
  103. package/dist/runtime/components/l-save-btn.vue +2 -2
  104. package/dist/runtime/components/l-select.vue +1 -1
  105. package/dist/runtime/components/l-small-box.vue +9 -9
  106. package/dist/runtime/components/l-statistic.vue +9 -9
  107. package/dist/runtime/components/l-tab.vue +10 -10
  108. package/dist/runtime/components/l-table.d.vue.ts +1 -1
  109. package/dist/runtime/components/l-table.vue +176 -190
  110. package/dist/runtime/components/l-table.vue.d.ts +1 -1
  111. package/dist/runtime/components/l-tabs.vue +9 -9
  112. package/dist/runtime/components/l-test2.vue +3 -3
  113. package/dist/runtime/components/l-time-picker.d.vue.ts +1 -1
  114. package/dist/runtime/components/l-time-picker.vue +18 -18
  115. package/dist/runtime/components/l-time-picker.vue.d.ts +1 -1
  116. package/dist/runtime/components/l-view-btn.vue +2 -2
  117. package/dist/runtime/components/user-list.vue +3 -3
  118. package/dist/runtime/composables/mytest.js +2 -2
  119. package/dist/runtime/composables/tc2sc.js +85 -85
  120. package/dist/runtime/formkit/Checkbox.d.vue.ts +0 -1
  121. package/dist/runtime/formkit/Checkbox.vue +6 -6
  122. package/dist/runtime/formkit/Checkbox.vue.d.ts +0 -1
  123. package/dist/runtime/formkit/DatePicker.d.vue.ts +0 -1
  124. package/dist/runtime/formkit/DatePicker.vue +11 -11
  125. package/dist/runtime/formkit/DatePicker.vue.d.ts +0 -1
  126. package/dist/runtime/formkit/Editor.vue +7 -7
  127. package/dist/runtime/formkit/File.d.vue.ts +0 -1
  128. package/dist/runtime/formkit/File.vue +6 -6
  129. package/dist/runtime/formkit/File.vue.d.ts +0 -1
  130. package/dist/runtime/formkit/FilePicker.d.vue.ts +0 -1
  131. package/dist/runtime/formkit/FilePicker.vue +6 -6
  132. package/dist/runtime/formkit/FilePicker.vue.d.ts +0 -1
  133. package/dist/runtime/formkit/FileUpload.d.vue.ts +0 -1
  134. package/dist/runtime/formkit/FileUpload.vue +6 -6
  135. package/dist/runtime/formkit/FileUpload.vue.d.ts +0 -1
  136. package/dist/runtime/formkit/Form.d.vue.ts +1 -3
  137. package/dist/runtime/formkit/Form.vue +11 -11
  138. package/dist/runtime/formkit/Form.vue.d.ts +1 -3
  139. package/dist/runtime/formkit/GroupSelect.d.vue.ts +0 -1
  140. package/dist/runtime/formkit/GroupSelect.vue +7 -7
  141. package/dist/runtime/formkit/GroupSelect.vue.d.ts +0 -1
  142. package/dist/runtime/formkit/Input.d.vue.ts +1 -1
  143. package/dist/runtime/formkit/Input.vue +11 -11
  144. package/dist/runtime/formkit/Input.vue.d.ts +1 -1
  145. package/dist/runtime/formkit/InputSelect.d.vue.ts +1 -1
  146. package/dist/runtime/formkit/InputSelect.vue +7 -7
  147. package/dist/runtime/formkit/InputSelect.vue.d.ts +1 -1
  148. package/dist/runtime/formkit/InputXlsx.vue +4 -4
  149. package/dist/runtime/formkit/OptionGroup.vue +5 -5
  150. package/dist/runtime/formkit/Radio.vue +4 -4
  151. package/dist/runtime/formkit/Repeater.d.vue.ts +1 -1
  152. package/dist/runtime/formkit/Repeater.vue +37 -37
  153. package/dist/runtime/formkit/Repeater.vue.d.ts +1 -1
  154. package/dist/runtime/formkit/Select.d.vue.ts +0 -1
  155. package/dist/runtime/formkit/Select.vue +6 -6
  156. package/dist/runtime/formkit/Select.vue.d.ts +0 -1
  157. package/dist/runtime/formkit/Textarea.d.vue.ts +1 -1
  158. package/dist/runtime/formkit/Textarea.vue +11 -11
  159. package/dist/runtime/formkit/Textarea.vue.d.ts +1 -1
  160. package/dist/runtime/formkit/TimePicker.d.vue.ts +0 -1
  161. package/dist/runtime/formkit/TimePicker.vue +10 -10
  162. package/dist/runtime/formkit/TimePicker.vue.d.ts +0 -1
  163. package/dist/runtime/formkit/Toggle.vue +3 -3
  164. package/dist/runtime/index.d.ts +39 -39
  165. package/dist/runtime/locales/en.json +9 -9
  166. package/dist/runtime/locales/zh-hk.json +213 -213
  167. package/dist/runtime/pages/CustomField/[custom_field_id]/edit.vue +33 -38
  168. package/dist/runtime/pages/CustomField/index.vue +12 -14
  169. package/dist/runtime/pages/EventLog/_eventlog_id/view.vue +36 -36
  170. package/dist/runtime/pages/EventLog/index.vue +7 -7
  171. package/dist/runtime/pages/FileManager/index.vue +4 -4
  172. package/dist/runtime/pages/MailLog/index.vue +18 -18
  173. package/dist/runtime/pages/Permission/add.vue +13 -13
  174. package/dist/runtime/pages/Permission/all.vue +63 -63
  175. package/dist/runtime/pages/Permission/export.vue +9 -10
  176. package/dist/runtime/pages/Permission/index.vue +4 -4
  177. package/dist/runtime/pages/Role/_name/update-child.vue +4 -4
  178. package/dist/runtime/pages/Role/add.vue +7 -7
  179. package/dist/runtime/pages/Role/add2.vue +30 -30
  180. package/dist/runtime/pages/Role/index.vue +27 -27
  181. package/dist/runtime/pages/System/database/backup.vue +72 -72
  182. package/dist/runtime/pages/System/database/check.vue +72 -72
  183. package/dist/runtime/pages/System/database/event.vue +51 -51
  184. package/dist/runtime/pages/System/database/process.vue +21 -21
  185. package/dist/runtime/pages/System/database/restore.vue +110 -110
  186. package/dist/runtime/pages/System/database/table.vue +67 -69
  187. package/dist/runtime/pages/System/fs.vue +99 -99
  188. package/dist/runtime/pages/System/index.vue +16 -18
  189. package/dist/runtime/pages/System/mailtest.vue +12 -12
  190. package/dist/runtime/pages/System/menu/index.vue +142 -144
  191. package/dist/runtime/pages/System/package.vue +11 -11
  192. package/dist/runtime/pages/System/phpinfo.vue +3 -3
  193. package/dist/runtime/pages/System/setting.vue +28 -30
  194. package/dist/runtime/pages/System/test.vue +12 -12
  195. package/dist/runtime/pages/System/view_as.vue +21 -22
  196. package/dist/runtime/pages/SystemValue/_systemvalue_id/edit.vue +6 -6
  197. package/dist/runtime/pages/SystemValue/add.vue +7 -7
  198. package/dist/runtime/pages/SystemValue/index.vue +4 -4
  199. package/dist/runtime/pages/Translate/index.vue +38 -38
  200. package/dist/runtime/pages/User/_user_id/change-password.vue +17 -18
  201. package/dist/runtime/pages/User/_user_id/edit.vue +28 -28
  202. package/dist/runtime/pages/User/_user_id/update-role.vue +7 -8
  203. package/dist/runtime/pages/User/_user_id/view.vue +27 -30
  204. package/dist/runtime/pages/User/add.vue +35 -35
  205. package/dist/runtime/pages/User/index.vue +11 -11
  206. package/dist/runtime/pages/User/profile.vue +45 -46
  207. package/dist/runtime/pages/User/setting/bio-auth.vue +22 -22
  208. package/dist/runtime/pages/User/setting/favorite.vue +61 -62
  209. package/dist/runtime/pages/User/setting/index.vue +6 -6
  210. package/dist/runtime/pages/User/setting/information.vue +6 -6
  211. package/dist/runtime/pages/User/setting/menu.vue +165 -165
  212. package/dist/runtime/pages/User/setting/open_id.vue +161 -161
  213. package/dist/runtime/pages/User/setting/password.vue +19 -19
  214. package/dist/runtime/pages/User/setting/style.vue +104 -106
  215. package/dist/runtime/pages/User/setting/two-factor-auth.vue +176 -176
  216. package/dist/runtime/pages/User/setting.vue +32 -32
  217. package/dist/runtime/pages/UserLog/index.vue +4 -4
  218. package/package.json +63 -63
@@ -78,180 +78,180 @@ const onCopy = async () => {
78
78
  </style>
79
79
 
80
80
  <template>
81
- <div class="two-factor-setup">
82
- <!-- Header -->
83
- <div class="setup-header q-mb-lg">
84
- <h5 class="q-my-md">{{ $t('Setup Two-Factor Authentication') }}</h5>
85
- <q-stepper v-model="currentStep" vertical color="primary" animated flat>
86
- <q-step :name="1" title="Download Authenticator App" icon="download" :done="currentStep > 1">
87
- <div class="q-mb-md">
88
- <p class="text-body1 q-mb-md">{{ $t('Choose and download an authenticator app for your device:') }}</p>
89
-
90
- <!-- App Selection Cards -->
91
- <div class="row q-gutter-md q-mb-lg">
92
- <div class="col-12 col-md-5">
93
- <q-card flat bordered class="app-card">
94
- <q-card-section class="q-pa-md">
95
- <div class="text-h6 q-mb-sm">📱 Android</div>
96
- <div class="q-gutter-sm">
97
- <q-btn
98
- outline
99
- color="primary"
100
- size="sm"
101
- target="_blank"
102
- href="https://play.google.com/store/apps/details?id=com.azure.authenticator"
103
- label="Microsoft Authenticator"
104
- class="full-width"
105
- />
106
- <q-btn
107
- outline
108
- color="primary"
109
- size="sm"
110
- target="_blank"
111
- href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2"
112
- label="Google Authenticator"
113
- class="full-width"
114
- />
115
- </div>
116
- </q-card-section>
117
- </q-card>
118
- </div>
119
-
120
- <div class="col-12 col-md-5">
121
- <q-card flat bordered class="app-card">
122
- <q-card-section class="q-pa-md">
123
- <div class="text-h6 q-mb-sm">🍎 iOS</div>
124
- <div class="q-gutter-sm">
125
- <q-btn
126
- outline
127
- color="primary"
128
- size="sm"
129
- target="_blank"
130
- href="https://apps.apple.com/us/app/microsoft-authenticator/id983156458"
131
- label="Microsoft Authenticator"
132
- class="full-width"
133
- />
134
- <q-btn
135
- outline
136
- color="primary"
137
- size="sm"
138
- target="_blank"
139
- href="https://apps.apple.com/us/app/google-authenticator/id388497605"
140
- label="Google Authenticator"
141
- class="full-width"
142
- />
143
- </div>
144
- </q-card-section>
145
- </q-card>
146
- </div>
147
- </div>
148
-
149
- <q-btn
150
- color="primary"
151
- @click="currentStep = 2"
152
- :label="$t('I have installed the app')"
153
- icon-right="arrow_forward"
154
- />
155
- </div>
156
- </q-step>
157
-
158
- <q-step :name="2" title="Scan QR Code" icon="qr_code" :done="currentStep > 2">
159
- <div class="text-center q-mb-md">
160
- <p class="text-body1 q-mb-md">{{ $t('Scan this QR code with your authenticator app:') }}</p>
161
-
162
- <q-card flat bordered class="qr-card inline-block q-pa-lg">
163
- <q-img :src="my.my2FA.image" width="200px" class="q-mb-md" />
164
-
165
- <!-- Manual Entry Option -->
166
- <q-expansion-item
167
- icon="key"
168
- :label="$t('Enter manually instead')"
169
- class="text-left"
170
- >
171
- <div class="q-pa-md bg-grey-1 rounded-borders">
172
- <div class="text-caption text-grey-7 q-mb-xs">{{ $t('Secret Key:') }}</div>
173
- <div class="row items-center q-gutter-sm">
174
- <div class="col">
175
- <q-input
176
- :model-value="secretVisible ? (my.my2FA?.secret || '') : '●'.repeat(my.my2FA?.secret?.length || 16)"
177
- readonly
178
- dense
179
- outlined
180
- class="secret-input"
181
- />
182
- </div>
183
- <q-btn
184
- flat
185
- round
186
- dense
187
- :icon="secretVisible ? 'visibility_off' : 'visibility'"
188
- @click="secretVisible = !secretVisible"
189
- :title="secretVisible ? $t('Hide') : $t('Show')"
190
- />
191
- <q-btn
192
- flat
193
- round
194
- dense
195
- icon="content_copy"
196
- @click="onCopy"
197
- :title="$t('Copy to clipboard')"
198
- />
199
- </div>
200
- </div>
201
- </q-expansion-item>
202
- </q-card>
203
-
204
- <div class="q-mt-md">
205
- <q-btn
206
- color="primary"
207
- @click="currentStep = 3"
208
- :label="$t('I have scanned the code')"
209
- icon-right="arrow_forward"
210
- />
211
- </div>
212
- </div>
213
- </q-step>
214
-
215
- <q-step :name="3" title="Verify Setup" icon="verified_user">
216
- <div class="verify-section">
217
- <p class="text-body1 q-mb-md">
218
- {{ $t('Enter the 6-digit code from your authenticator app to complete setup:') }}
219
- </p>
220
-
221
- <div class="row justify-center q-mb-lg">
222
- <div class="col-12 col-sm-8 col-md-6">
223
- <q-input
224
- v-model="obj.code"
225
- :label="$t('Verification Code')"
226
- hint="6-digit code from your authenticator app"
227
- type="tel"
228
- inputmode="numeric"
229
- pattern="[0-9]*"
230
- outlined
231
- maxlength="6"
232
- class="text-center code-input"
233
- required
234
- >
235
- <template v-slot:prepend>
236
- <q-icon name="security" />
237
- </template>
238
- </q-input>
239
- </div>
240
- </div>
241
-
242
- <div class="text-center">
243
- <q-btn
244
- @click="save"
245
- color="positive"
246
- size="lg"
247
- :label="$t('Complete Setup')"
248
- icon="check_circle"
249
- :loading="loading"
250
- />
251
- </div>
252
- </div>
253
- </q-step>
254
- </q-stepper>
255
- </div>
256
- </div>
81
+ <div class="two-factor-setup">
82
+ <!-- Header -->
83
+ <div class="setup-header q-mb-lg">
84
+ <h5 class="q-my-md">{{ $t('Setup Two-Factor Authentication') }}</h5>
85
+ <q-stepper v-model="currentStep" vertical color="primary" animated flat>
86
+ <q-step :name="1" title="Download Authenticator App" icon="download" :done="currentStep > 1">
87
+ <div class="q-mb-md">
88
+ <p class="text-body1 q-mb-md">{{ $t('Choose and download an authenticator app for your device:') }}</p>
89
+
90
+ <!-- App Selection Cards -->
91
+ <div class="row q-gutter-md q-mb-lg">
92
+ <div class="col-12 col-md-5">
93
+ <q-card flat bordered class="app-card">
94
+ <q-card-section class="q-pa-md">
95
+ <div class="text-h6 q-mb-sm">📱 Android</div>
96
+ <div class="q-gutter-sm">
97
+ <q-btn
98
+ outline
99
+ color="primary"
100
+ size="sm"
101
+ target="_blank"
102
+ href="https://play.google.com/store/apps/details?id=com.azure.authenticator"
103
+ label="Microsoft Authenticator"
104
+ class="full-width"
105
+ />
106
+ <q-btn
107
+ outline
108
+ color="primary"
109
+ size="sm"
110
+ target="_blank"
111
+ href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2"
112
+ label="Google Authenticator"
113
+ class="full-width"
114
+ />
115
+ </div>
116
+ </q-card-section>
117
+ </q-card>
118
+ </div>
119
+
120
+ <div class="col-12 col-md-5">
121
+ <q-card flat bordered class="app-card">
122
+ <q-card-section class="q-pa-md">
123
+ <div class="text-h6 q-mb-sm">🍎 iOS</div>
124
+ <div class="q-gutter-sm">
125
+ <q-btn
126
+ outline
127
+ color="primary"
128
+ size="sm"
129
+ target="_blank"
130
+ href="https://apps.apple.com/us/app/microsoft-authenticator/id983156458"
131
+ label="Microsoft Authenticator"
132
+ class="full-width"
133
+ />
134
+ <q-btn
135
+ outline
136
+ color="primary"
137
+ size="sm"
138
+ target="_blank"
139
+ href="https://apps.apple.com/us/app/google-authenticator/id388497605"
140
+ label="Google Authenticator"
141
+ class="full-width"
142
+ />
143
+ </div>
144
+ </q-card-section>
145
+ </q-card>
146
+ </div>
147
+ </div>
148
+
149
+ <q-btn
150
+ color="primary"
151
+ @click="currentStep = 2"
152
+ :label="$t('I have installed the app')"
153
+ icon-right="arrow_forward"
154
+ />
155
+ </div>
156
+ </q-step>
157
+
158
+ <q-step :name="2" title="Scan QR Code" icon="qr_code" :done="currentStep > 2">
159
+ <div class="text-center q-mb-md">
160
+ <p class="text-body1 q-mb-md">{{ $t('Scan this QR code with your authenticator app:') }}</p>
161
+
162
+ <q-card flat bordered class="qr-card inline-block q-pa-lg">
163
+ <q-img :src="my.my2FA.image" width="200px" class="q-mb-md" />
164
+
165
+ <!-- Manual Entry Option -->
166
+ <q-expansion-item
167
+ icon="key"
168
+ :label="$t('Enter manually instead')"
169
+ class="text-left"
170
+ >
171
+ <div class="q-pa-md bg-grey-1 rounded-borders">
172
+ <div class="text-caption text-grey-7 q-mb-xs">{{ $t('Secret Key:') }}</div>
173
+ <div class="row items-center q-gutter-sm">
174
+ <div class="col">
175
+ <q-input
176
+ :model-value="secretVisible ? (my.my2FA?.secret || '') : '●'.repeat(my.my2FA?.secret?.length || 16)"
177
+ readonly
178
+ dense
179
+ outlined
180
+ class="secret-input"
181
+ />
182
+ </div>
183
+ <q-btn
184
+ flat
185
+ round
186
+ dense
187
+ :icon="secretVisible ? 'visibility_off' : 'visibility'"
188
+ @click="secretVisible = !secretVisible"
189
+ :title="secretVisible ? $t('Hide') : $t('Show')"
190
+ />
191
+ <q-btn
192
+ flat
193
+ round
194
+ dense
195
+ icon="content_copy"
196
+ @click="onCopy"
197
+ :title="$t('Copy to clipboard')"
198
+ />
199
+ </div>
200
+ </div>
201
+ </q-expansion-item>
202
+ </q-card>
203
+
204
+ <div class="q-mt-md">
205
+ <q-btn
206
+ color="primary"
207
+ @click="currentStep = 3"
208
+ :label="$t('I have scanned the code')"
209
+ icon-right="arrow_forward"
210
+ />
211
+ </div>
212
+ </div>
213
+ </q-step>
214
+
215
+ <q-step :name="3" title="Verify Setup" icon="verified_user">
216
+ <div class="verify-section">
217
+ <p class="text-body1 q-mb-md">
218
+ {{ $t('Enter the 6-digit code from your authenticator app to complete setup:') }}
219
+ </p>
220
+
221
+ <div class="row justify-center q-mb-lg">
222
+ <div class="col-12 col-sm-8 col-md-6">
223
+ <q-input
224
+ v-model="obj.code"
225
+ :label="$t('Verification Code')"
226
+ hint="6-digit code from your authenticator app"
227
+ type="tel"
228
+ inputmode="numeric"
229
+ pattern="[0-9]*"
230
+ outlined
231
+ maxlength="6"
232
+ class="text-center code-input"
233
+ required
234
+ >
235
+ <template v-slot:prepend>
236
+ <q-icon name="security" />
237
+ </template>
238
+ </q-input>
239
+ </div>
240
+ </div>
241
+
242
+ <div class="text-center">
243
+ <q-btn
244
+ @click="save"
245
+ color="positive"
246
+ size="lg"
247
+ :label="$t('Complete Setup')"
248
+ icon="check_circle"
249
+ :loading="loading"
250
+ />
251
+ </div>
252
+ </div>
253
+ </q-step>
254
+ </q-stepper>
255
+ </div>
256
+ </div>
257
257
  </template>
@@ -6,36 +6,36 @@ const route = useRoute();
6
6
  </script>
7
7
 
8
8
  <template>
9
- <l-page>
10
- <l-card>
11
- <q-splitter unit="px" :model-value="120">
12
- <template #before>
13
- <q-tabs v-model="tab" vertical active-color="primary">
14
- <q-route-tab name="general" icon="sym_o_info" :label="$t('General')" to="/User/setting" exact />
15
- <q-route-tab name="information" icon="sym_o_info" :label="$t('Information')"
16
- to="/User/setting/information" exact />
17
- <q-route-tab name="password" icon="sym_o_password" :label="$t('Password')"
18
- to="/User/setting/password" exact />
19
- <q-route-tab name="style" icon="sym_o_style" :label="$t('Style')" to="/User/setting/style"
20
- exact />
21
- <q-route-tab name="2fa" icon="sym_o_key" :label="$t('2FA')" to="/User/setting/two-factor-auth"
22
- exact />
23
- <q-route-tab name="bio" icon="sym_o_fingerprint" :label="$t('Bio')" to="/User/setting/bio-auth"
24
- exact />
25
- <q-route-tab name="openid" icon="sym_o_key" :label="$t('Open ID')" to="/User/setting/open_id"
26
- exact />
27
- <q-route-tab name="fav" icon="sym_o_favorite" :label="$t('Favorite')"
28
- to="/User/setting/favorite" exact />
29
-
30
- <q-route-tab name="menu" icon="sym_o_menu" :label="$t('Menu')" to="/User/setting/menu" exact />
31
- </q-tabs>
32
- </template>
33
-
34
- <template #after>
35
- <NuxtPage :key="route.path"></NuxtPage>
36
-
37
- </template>
38
- </q-splitter>
39
- </l-card>
40
- </l-page>
9
+ <l-page>
10
+ <l-card>
11
+ <q-splitter unit="px" :model-value="120">
12
+ <template #before>
13
+ <q-tabs v-model="tab" vertical active-color="primary">
14
+ <q-route-tab name="general" icon="sym_o_info" :label="$t('General')" to="/User/setting" exact />
15
+ <q-route-tab name="information" icon="sym_o_info" :label="$t('Information')"
16
+ to="/User/setting/information" exact />
17
+ <q-route-tab name="password" icon="sym_o_password" :label="$t('Password')"
18
+ to="/User/setting/password" exact />
19
+ <q-route-tab name="style" icon="sym_o_style" :label="$t('Style')" to="/User/setting/style"
20
+ exact />
21
+ <q-route-tab name="2fa" icon="sym_o_key" :label="$t('2FA')" to="/User/setting/two-factor-auth"
22
+ exact />
23
+ <q-route-tab name="bio" icon="sym_o_fingerprint" :label="$t('Bio')" to="/User/setting/bio-auth"
24
+ exact />
25
+ <q-route-tab name="openid" icon="sym_o_key" :label="$t('Open ID')" to="/User/setting/open_id"
26
+ exact />
27
+ <q-route-tab name="fav" icon="sym_o_favorite" :label="$t('Favorite')"
28
+ to="/User/setting/favorite" exact />
29
+
30
+ <q-route-tab name="menu" icon="sym_o_menu" :label="$t('Menu')" to="/User/setting/menu" exact />
31
+ </q-tabs>
32
+ </template>
33
+
34
+ <template #after>
35
+ <NuxtPage :key="route.path"></NuxtPage>
36
+
37
+ </template>
38
+ </q-splitter>
39
+ </l-card>
40
+ </l-page>
41
41
  </template>
@@ -12,8 +12,8 @@ const columns = model("UserLog").columns({
12
12
  </script>
13
13
 
14
14
  <template>
15
- <l-page>
16
- <l-table @request-data="$event.loadObjects('UserLog')" :columns="columns" sort-by="login_dt:desc">
17
- </l-table>
18
- </l-page>
15
+ <l-page>
16
+ <l-table @request-data="$event.loadObjects('UserLog')" :columns="columns" sort-by="login_dt:desc">
17
+ </l-table>
18
+ </l-page>
19
19
  </template>
package/package.json CHANGED
@@ -1,63 +1,63 @@
1
- {
2
- "name": "@hostlink/nuxt-light",
3
- "version": "1.55.0",
4
- "description": "HostLink Nuxt Light Framework",
5
- "repository": {
6
- "type": "git",
7
- "url": "@hostlink/nuxt-light"
8
- },
9
- "license": "MIT",
10
- "type": "module",
11
- "exports": {
12
- ".": {
13
- "types": "./dist/types.d.mts",
14
- "import": "./dist/module.mjs"
15
- }
16
- },
17
- "types": "./dist/types.d.mts",
18
- "files": [
19
- "dist"
20
- ],
21
- "scripts": {
22
- "prepack": "nuxt-module-build build",
23
- "dev": "nuxi dev playground --public",
24
- "dev:build": "nuxi build playground",
25
- "dev:prepare": "nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground",
26
- "release:org": "npm run lint && npm run test && npm run prepack && npm publish && git push --follow-tags",
27
- "release": "npm run prepack && npm publish --access=public && git push --follow-tags",
28
- "lint": "eslint .",
29
- "test": "vitest run",
30
- "test:watch": "vitest watch"
31
- },
32
- "dependencies": {
33
- "@azure/msal-browser": "^4.26.2",
34
- "@formkit/drag-and-drop": "^0.5.3",
35
- "@hostlink/light": "^3.0.5",
36
- "@nuxt/module-builder": "^1.0.1",
37
- "@quasar/extras": "^1.17.0",
38
- "@quasar/quasar-ui-qmarkdown": "^2.0.5",
39
- "@vueuse/core": "^14.0.0",
40
- "axios": "^1.12.2",
41
- "defu": "^6.1.4",
42
- "diff2html": "^3.4.47",
43
- "formkit-quasar": "^0.0.15",
44
- "json-to-graphql-query": "^2.3.0",
45
- "nuxt-quasar-ui": "^2.1.12",
46
- "quasar": "^2.18.5",
47
- "vue-i18n": "^11.1.12",
48
- "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz"
49
- },
50
- "devDependencies": {
51
- "@nuxt/devtools": "latest",
52
- "@nuxt/eslint-config": "^1.10.0",
53
- "@nuxt/kit": "^4.2.1",
54
- "@nuxt/schema": "^4.2.1",
55
- "@nuxt/test-utils": "^3.17.2",
56
- "@types/node": "^24.10.1",
57
- "changelogen": "^0.5.7",
58
- "eslint": "^9.39.1",
59
- "nuxt": "^4.2.1",
60
- "typescript": "^5.9.2",
61
- "vue-tsc": "^3.1.5"
62
- }
63
- }
1
+ {
2
+ "name": "@hostlink/nuxt-light",
3
+ "version": "1.55.2",
4
+ "description": "HostLink Nuxt Light Framework",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "@hostlink/nuxt-light"
8
+ },
9
+ "license": "MIT",
10
+ "type": "module",
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/types.d.mts",
14
+ "import": "./dist/module.mjs"
15
+ }
16
+ },
17
+ "types": "./dist/types.d.mts",
18
+ "files": [
19
+ "dist"
20
+ ],
21
+ "scripts": {
22
+ "prepack": "nuxt-module-build build",
23
+ "dev": "nuxi dev playground --public",
24
+ "dev:build": "nuxi build playground",
25
+ "dev:prepare": "nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground",
26
+ "release:org": "npm run lint && npm run test && npm run prepack && npm publish && git push --follow-tags",
27
+ "release": "git push --follow-tags",
28
+ "lint": "eslint .",
29
+ "test": "vitest run",
30
+ "test:watch": "vitest watch"
31
+ },
32
+ "dependencies": {
33
+ "@azure/msal-browser": "^4.26.2",
34
+ "@formkit/drag-and-drop": "^0.5.3",
35
+ "@hostlink/light": "^3.0.5",
36
+ "@nuxt/module-builder": "^1.0.1",
37
+ "@quasar/extras": "^1.17.0",
38
+ "@quasar/quasar-ui-qmarkdown": "^2.0.5",
39
+ "@vueuse/core": "^14.0.0",
40
+ "axios": "^1.12.2",
41
+ "defu": "^6.1.4",
42
+ "diff2html": "^3.4.47",
43
+ "formkit-quasar": "^0.0.15",
44
+ "json-to-graphql-query": "^2.3.0",
45
+ "nuxt-quasar-ui": "^2.1.12",
46
+ "quasar": "^2.18.5",
47
+ "vue-i18n": "^11.1.12",
48
+ "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz"
49
+ },
50
+ "devDependencies": {
51
+ "@nuxt/devtools": "latest",
52
+ "@nuxt/eslint-config": "^1.10.0",
53
+ "@nuxt/kit": "^4.2.1",
54
+ "@nuxt/schema": "^4.2.1",
55
+ "@nuxt/test-utils": "^3.17.2",
56
+ "@types/node": "^24.10.1",
57
+ "changelogen": "^0.5.7",
58
+ "eslint": "^9.39.1",
59
+ "nuxt": "^4.2.1",
60
+ "typescript": "^5.9.2",
61
+ "vue-tsc": "^3.1.5"
62
+ }
63
+ }