@fui-org/fui-cli 1.3.2 → 2.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 (111) hide show
  1. package/README.md +19 -3
  2. package/dist/fui-bmg5pnmq.js +379 -0
  3. package/dist/fui.js +1 -1
  4. package/package.json +3 -6
  5. package/skills/fui/SKILL.md +9 -41
  6. package/skills/fui-skill/SKILL.md +95 -225
  7. package/skills/fui-skill/assets/projectdefaultstyle-3.0.css +555 -0
  8. package/skills/fui-skill/assets/projectdefaultstyle.css +207 -235
  9. package/skills/fui-skill/references/INDEX.md +105 -137
  10. package/skills/fui-skill/references/advanced-techniques.md +76 -68
  11. package/skills/fui-skill/references/coding-standards.md +56 -56
  12. package/skills/fui-skill/references/component-design.md +166 -173
  13. package/skills/fui-skill/references/component-quickref.md +61 -60
  14. package/skills/fui-skill/references/component-table.md +128 -117
  15. package/skills/fui-skill/references/components-dialog.md +55 -56
  16. package/skills/fui-skill/references/components-display.md +24 -30
  17. package/skills/fui-skill/references/components-echart.md +186 -261
  18. package/skills/fui-skill/references/components-input.md +72 -96
  19. package/skills/fui-skill/references/controls-patterns.md +196 -342
  20. package/skills/fui-skill/references/controls-styling-vocabulary.md +130 -97
  21. package/skills/fui-skill/references/db-table-design.md +24 -28
  22. package/skills/fui-skill/references/db-workflow.md +191 -390
  23. package/skills/fui-skill/references/default-function.md +169 -128
  24. package/skills/fui-skill/references/design-modes.md +35 -63
  25. package/skills/fui-skill/references/echart-templates.md +204 -196
  26. package/skills/fui-skill/references/fastproject.md +62 -60
  27. package/skills/fui-skill/references/fsheet.md +109 -124
  28. package/skills/fui-skill/references/fullstack-workflow.md +90 -128
  29. package/skills/fui-skill/references/module-data-patterns.md +31 -40
  30. package/skills/fui-skill/references/module-json-anatomy.md +47 -52
  31. package/skills/fui-skill/references/module-structure.md +80 -196
  32. package/skills/fui-skill/references/new-session.md +49 -51
  33. package/skills/fui-skill/references/pdfmake.md +17 -17
  34. package/skills/fui-skill/references/permission-system.md +89 -108
  35. package/skills/fui-skill/references/platform-architecture.md +128 -153
  36. package/skills/fui-skill/references/project-config.md +102 -134
  37. package/skills/fui-skill/references/project-provisioning.md +139 -244
  38. package/skills/fui-skill/references/script-map.md +208 -242
  39. package/skills/fui-skill/references/sql-clr-functions.md +98 -97
  40. package/skills/fui-skill/references/system-design.md +63 -88
  41. package/skills/fui-skill/references/tapi-file-api.md +46 -52
  42. package/skills/fui-skill/references/tapi-permission-patterns.md +51 -53
  43. package/skills/fui-skill/references/tapi-reference.md +132 -207
  44. package/skills/fui-skill/references/tools-registry.md +84 -460
  45. package/skills/fui-skill/references/ui-crosswindow-patterns.md +79 -75
  46. package/skills/fui-skill/references/ui-dialog-patterns.md +98 -72
  47. package/skills/fui-skill/references/ui-layout-patterns.md +26 -26
  48. package/skills/fui-skill/references/ui-patterns.md +71 -83
  49. package/skills/fui-skill/references/ui-screenshot-review.md +63 -62
  50. package/skills/fui-skill/references/ui-table-cell-patterns.md +61 -59
  51. package/skills/fui-skill/references/ui-templates.md +16 -23
  52. package/skills/fui-skill/references/verification.md +236 -246
  53. package/skills/fui-skill/references/watcher-patterns.md +30 -63
  54. package/skills/fui-skill/references/websocket-realtime.md +83 -66
  55. package/skills/fui-skill/scripts/component-3.0.js +298 -131
  56. package/skills/fui-skill/scripts/component.js +277 -271
  57. package/skills/fui-skill/scripts/componentTable-3.0.js +182 -53
  58. package/skills/fui-skill/scripts/componentTable.js +171 -49
  59. package/skills/fui-skill/scripts/defaultfunction-3.0.js +88 -3
  60. package/skills/fui-skill/scripts/defaultfunction.js +88 -3
  61. package/skills/fui-skill/scripts/fsheet.js +38 -0
  62. package/dist/fui-y8an39cn.js +0 -420
  63. package/skills/fui-skill/README.md +0 -112
  64. package/skills/fui-skill/metadata.json +0 -75
  65. package/skills/fui-skill-cli/SKILL.md +0 -139
  66. package/skills/fui-skill-cli/references/INDEX.md +0 -110
  67. package/skills/fui-skill-cli/references/advanced-techniques.md +0 -168
  68. package/skills/fui-skill-cli/references/coding-standards.md +0 -112
  69. package/skills/fui-skill-cli/references/component-design.md +0 -448
  70. package/skills/fui-skill-cli/references/component-quickref.md +0 -78
  71. package/skills/fui-skill-cli/references/component-table.md +0 -248
  72. package/skills/fui-skill-cli/references/components-dialog.md +0 -191
  73. package/skills/fui-skill-cli/references/components-display.md +0 -141
  74. package/skills/fui-skill-cli/references/components-echart.md +0 -316
  75. package/skills/fui-skill-cli/references/components-input.md +0 -335
  76. package/skills/fui-skill-cli/references/controls-patterns.md +0 -701
  77. package/skills/fui-skill-cli/references/controls-styling-vocabulary.md +0 -137
  78. package/skills/fui-skill-cli/references/db-table-design.md +0 -73
  79. package/skills/fui-skill-cli/references/db-workflow.md +0 -288
  80. package/skills/fui-skill-cli/references/default-function.md +0 -425
  81. package/skills/fui-skill-cli/references/design-modes.md +0 -57
  82. package/skills/fui-skill-cli/references/echart-templates.md +0 -489
  83. package/skills/fui-skill-cli/references/fastproject.md +0 -99
  84. package/skills/fui-skill-cli/references/fsheet.md +0 -203
  85. package/skills/fui-skill-cli/references/fullstack-workflow.md +0 -313
  86. package/skills/fui-skill-cli/references/module-data-patterns.md +0 -117
  87. package/skills/fui-skill-cli/references/module-json-anatomy.md +0 -132
  88. package/skills/fui-skill-cli/references/module-structure.md +0 -141
  89. package/skills/fui-skill-cli/references/new-session.md +0 -85
  90. package/skills/fui-skill-cli/references/pdfmake.md +0 -60
  91. package/skills/fui-skill-cli/references/permission-system.md +0 -150
  92. package/skills/fui-skill-cli/references/platform-architecture.md +0 -269
  93. package/skills/fui-skill-cli/references/project-config.md +0 -303
  94. package/skills/fui-skill-cli/references/project-provisioning.md +0 -278
  95. package/skills/fui-skill-cli/references/script-map.md +0 -262
  96. package/skills/fui-skill-cli/references/sql-clr-functions.md +0 -225
  97. package/skills/fui-skill-cli/references/system-design.md +0 -89
  98. package/skills/fui-skill-cli/references/tapi-file-api.md +0 -185
  99. package/skills/fui-skill-cli/references/tapi-permission-patterns.md +0 -156
  100. package/skills/fui-skill-cli/references/tapi-reference.md +0 -474
  101. package/skills/fui-skill-cli/references/tools-registry.md +0 -84
  102. package/skills/fui-skill-cli/references/ui-crosswindow-patterns.md +0 -321
  103. package/skills/fui-skill-cli/references/ui-dialog-patterns.md +0 -255
  104. package/skills/fui-skill-cli/references/ui-layout-patterns.md +0 -176
  105. package/skills/fui-skill-cli/references/ui-patterns.md +0 -303
  106. package/skills/fui-skill-cli/references/ui-screenshot-review.md +0 -95
  107. package/skills/fui-skill-cli/references/ui-table-cell-patterns.md +0 -318
  108. package/skills/fui-skill-cli/references/ui-templates.md +0 -22
  109. package/skills/fui-skill-cli/references/verification.md +0 -236
  110. package/skills/fui-skill-cli/references/watcher-patterns.md +0 -163
  111. package/skills/fui-skill-cli/references/websocket-realtime.md +0 -271
@@ -1,67 +1,39 @@
1
- .space-x-1>*:not(:first-child) {
2
- margin-left: 0.25rem !important;
1
+ .ga-1{
2
+ gap: 4px;
3
3
  }
4
-
5
- .space-x-2>*:not(:first-child) {
6
- margin-left: 0.5rem !important;
4
+ .ga-2{
5
+ gap: 8px;
7
6
  }
8
-
9
- .space-x-3>*:not(:first-child) {
10
- margin-left: 0.75rem !important;
7
+ .ga-3{
8
+ gap: 12px;
11
9
  }
12
-
13
- .space-x-4>*:not(:first-child) {
14
- margin-left: 1rem !important;
10
+ .ga-4{
11
+ gap: 16px;
15
12
  }
16
-
17
- .space-x-5>*:not(:first-child) {
18
- margin-left: 1.25rem !important;
13
+ .ga-5{
14
+ gap: 20px;
19
15
  }
20
-
21
- .space-x-6>*:not(:first-child) {
22
- margin-left: 1.5rem !important;
16
+ .ga-6{
17
+ gap: 24px;
23
18
  }
24
-
25
- .space-x-7>*:not(:first-child) {
26
- margin-left: 1.75rem !important;
19
+ .ga-7{
20
+ gap: 28px;
27
21
  }
28
-
29
- .space-x-8>*:not(:first-child) {
30
- margin-left: 2rem !important;
22
+ .ga-8{
23
+ gap: 32px;
31
24
  }
32
-
33
- .space-y-1>*:not(:first-child) {
34
- margin-top: 0.25rem !important;
25
+ .ga-9{
26
+ gap: 36px;
35
27
  }
36
-
37
- .space-y-2>*:not(:first-child) {
38
- margin-top: 0.5rem !important;
28
+ .ga-10{
29
+ gap: 40px;
39
30
  }
40
-
41
- .space-y-3>*:not(:first-child) {
42
- margin-top: 0.75rem !important;
31
+ .ga-11{
32
+ gap: 44px;
43
33
  }
44
-
45
- .space-y-4>*:not(:first-child) {
46
- margin-top: 1rem !important;
47
- }
48
-
49
- .space-y-5>*:not(:first-child) {
50
- margin-top: 1.25rem !important;
51
- }
52
-
53
- .space-y-6>*:not(:first-child) {
54
- margin-top: 1.5rem !important;
55
- }
56
-
57
- .space-y-7>*:not(:first-child) {
58
- margin-top: 1.75rem !important;
59
- }
60
-
61
- .space-y-8>*:not(:first-child) {
62
- margin-top: 2rem !important;
34
+ .ga-12{
35
+ gap: 48px;
63
36
  }
64
-
65
37
  /* ------------------------------------------------------------------------ */
66
38
  .mw-200 {
67
39
  max-width: 200px;
@@ -110,7 +82,8 @@
110
82
  .hidden-container{
111
83
  display: none;
112
84
  }
113
- /* ========== for FUI home page ================================================= */
85
+
86
+ /* ============================================================= */
114
87
  html {
115
88
  overflow-y: auto;
116
89
  font-family: Roboto, sans-serif;
@@ -135,278 +108,255 @@ input[type=number] {
135
108
  }
136
109
 
137
110
  /* ================================================================================================= */
138
- .v-list-item__spacer{
139
- width: 10px !important;
140
- }
141
-
142
- .v-btn {
143
- font-weight: 400;
144
- }
145
-
146
- .v-input--density-compact{
147
- --v-input-control-height:36px;
148
- --v-input-padding-top: 6px;
149
- }
150
-
151
- .v-input--density-compact .v-field--no-label, .v-input--density-compact .v-field--single-line, .v-input--density-compact .v-field--variant-outlined {
152
- --v-field-padding-bottom: 6px;
153
- }
154
-
155
- .v-alert--density-compact {
156
- padding-bottom: 6px;
157
- padding-top: 6px;
111
+ /* json ace_editor */
112
+ .ace_editor.ace-jsoneditor {
113
+ font-size: 0.9em !important;
158
114
  }
159
115
 
160
- .v-textarea .v-field__input {
161
- height: auto;
116
+ .jsoneditor-poweredBy {
117
+ display: none;
162
118
  }
163
119
 
164
- .v-container {
165
- padding: 12px;
120
+ .jsoneditor {
121
+ border: none !important;
166
122
  }
167
123
 
168
- /* ========================= grid ======================================================================== */
169
-
170
- .v-container.grid-list-none .v-row .v-col {
171
- padding: 0px
124
+ .jsoneditor-menu {
125
+ background-color: #1976d2 !important;
126
+ border: none !important;
172
127
  }
173
128
 
174
- .v-container.grid-list-none .v-row:only-child {
175
- margin: 0px
129
+ /* jconfirm */
130
+ @media only screen and (min-width: 600px) {
131
+ .jconfirm .jconfirm-box {
132
+ min-width: 460px;
133
+ max-width: 500px;
134
+ }
176
135
  }
177
136
 
178
- .v-container.grid-list-none .v-row:not(:only-child) {
179
- margin: auto 0px
137
+ .jconfirm .jconfirm-box {
138
+ font-family: Roboto, sans-serif !important;
139
+ border-top: 0 !important;
180
140
  }
181
141
 
182
- .v-container.grid-list-none :not(:only-child) .v-row:first-child {
183
- margin-top: 0px
142
+ .jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons button,
143
+ .jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons button {
144
+ font-weight: 400 !important;
145
+ font-size: .9rem !important;
184
146
  }
185
147
 
186
- .v-container.grid-list-none :not(:only-child) .v-row:last-child {
187
- margin-bottom: 0px
148
+ .jconfirm .jconfirm-box-container {
149
+ margin: auto;
150
+ max-width: none;
188
151
  }
189
152
 
190
- .v-container.grid-list-xs .v-row .v-col {
191
- padding: 1px
192
- }
153
+ .jconfirm .jconfirm-box .jconfirm-buttons>button {
154
+ margin-left: 10px !important;
155
+ margin-right: 10px !important;
193
156
 
194
- .v-container.grid-list-xs .v-row:only-child {
195
- margin: -1px
196
157
  }
197
158
 
198
- .v-container.grid-list-xs .v-row:not(:only-child) {
199
- margin: auto -1px
159
+ .jconfirm.jconfirm-white .jconfirm-box .jconfirm-title-c .jconfirm-icon-c,
160
+ .jconfirm.jconfirm-light .jconfirm-box .jconfirm-title-c .jconfirm-icon-c {
161
+ font-size: 2.9em !important;
162
+ margin: 0 0 15px 0 !important;
200
163
  }
201
164
 
202
- .v-container.grid-list-xs :not(:only-child) .v-row:first-child {
203
- margin-top: -1px
165
+ .jconfirm .jconfirm-box div.jconfirm-title-c {
166
+ display: grid;
167
+ line-height: inherit;
168
+ text-align: center;
169
+ font-size: 1.1rem !important;
204
170
  }
205
171
 
206
- .v-container.grid-list-xs :not(:only-child) .v-row:last-child {
207
- margin-bottom: -1px
172
+ .jconfirm .jconfirm-box .jconfirm-content-pane .jconfirm-content,
173
+ .jconfirm .jconfirm-box .jconfirm-buttons{
174
+ text-align: center;
175
+ float: inherit;
208
176
  }
209
177
 
210
- .v-container.grid-list-sm .v-row .v-col {
211
- padding: 2px
212
- }
213
178
 
214
- .v-container.grid-list-sm .v-row:only-child {
215
- margin: -2px
216
- }
179
+ /* ============================================================== */
217
180
 
218
- .v-container.grid-list-sm .v-row:not(:only-child) {
219
- margin: auto -2px
181
+ .ck.ck-editor {
182
+ overflow-x: hidden;
183
+ font-size: initial;
220
184
  }
221
185
 
222
- .v-container.grid-list-sm :not(:only-child) .v-row:first-child {
223
- margin-top: -2px
224
- }
225
186
 
226
- .v-container.grid-list-sm :not(:only-child) .v-row:last-child {
227
- margin-bottom: -2px
187
+ /* =========== menu for mobile =================================================== */
188
+ @media only screen and (max-width: 959px) {
189
+ .v-application .hidden-sm-and-down {
190
+ display: none !important;
191
+ }
228
192
  }
229
193
 
230
- .v-container.grid-list-md .v-row .v-col {
231
- padding: 4px
232
- }
233
194
 
234
- .v-container.grid-list-md .v-row:only-child {
235
- margin: -4px
195
+ /*================== Custom style ===================================================*/
196
+ .v-text-field--filled.v-input--dense.v-text-field--outlined.v-text-field--filled>.v-input__control>.v-input__slot,
197
+ .v-text-field--filled.v-input--dense.v-text-field--outlined>.v-input__control>.v-input__slot,
198
+ .v-text-field--filled.v-input--dense.v-text-field--single-line>.v-input__control>.v-input__slot,
199
+ .v-text-field--full-width.v-input--dense.v-text-field--outlined.v-text-field--filled>.v-input__control>.v-input__slot,
200
+ .v-text-field--full-width.v-input--dense.v-text-field--outlined>.v-input__control>.v-input__slot,
201
+ .v-text-field--full-width.v-input--dense.v-text-field--single-line>.v-input__control>.v-input__slot,
202
+ .v-text-field--outlined.v-input--dense.v-text-field--outlined.v-text-field--filled>.v-input__control>.v-input__slot,
203
+ .v-text-field--outlined.v-input--dense.v-text-field--outlined>.v-input__control>.v-input__slot,
204
+ .v-text-field--outlined.v-input--dense.v-text-field--single-line>.v-input__control>.v-input__slot {
205
+ min-height: 36px;
236
206
  }
237
207
 
238
- .v-container.grid-list-md .v-row:not(:only-child) {
239
- margin: auto -4px
208
+ .v-select.v-text-field--outlined:not(.v-text-field--single-line).v-input--dense .v-select__selections {
209
+ padding: 0px 0;
240
210
  }
241
211
 
242
- .v-container.grid-list-md :not(:only-child) .v-row:first-child {
243
- margin-top: -4px
212
+ .v-text-field--enclosed.v-input--dense:not(.v-text-field--solo).v-text-field--outlined .v-input__append-inner,
213
+ .v-text-field--enclosed.v-input--dense:not(.v-text-field--solo).v-text-field--outlined .v-input__append-outer,
214
+ .v-text-field--enclosed.v-input--dense:not(.v-text-field--solo).v-text-field--outlined .v-input__prepend-inner,
215
+ .v-text-field--enclosed.v-input--dense:not(.v-text-field--solo).v-text-field--outlined .v-input__prepend-outer,
216
+ .v-text-field--full-width.v-input--dense:not(.v-text-field--solo).v-text-field--outlined .v-input__append-inner,
217
+ .v-text-field--full-width.v-input--dense:not(.v-text-field--solo).v-text-field--outlined .v-input__append-outer,
218
+ .v-text-field--full-width.v-input--dense:not(.v-text-field--solo).v-text-field--outlined .v-input__prepend-inner,
219
+ .v-text-field--full-width.v-input--dense:not(.v-text-field--solo).v-text-field--outlined .v-input__prepend-outer {
220
+ margin-top: 6px;
244
221
  }
245
-
246
- .v-container.grid-list-md :not(:only-child) .v-row:last-child {
247
- margin-bottom: -4px
222
+ .v-text-field--outlined.v-input--dense .v-label {
223
+ top: 8px;
248
224
  }
249
225
 
250
- .v-container.grid-list-lg .v-row .v-col {
251
- padding: 8px
226
+ .v-text-field input {
227
+ padding: 9px 0 7px 0;
252
228
  }
253
229
 
254
- .v-container.grid-list-lg .v-row:only-child {
255
- margin: -8px
230
+ .v-btn {
231
+ font-weight: 400;
256
232
  }
257
233
 
258
- .v-container.grid-list-lg .v-row:not(:only-child) {
259
- margin: auto -8px
234
+ .v-textarea textarea {
235
+ line-height: 1.5;
260
236
  }
261
237
 
262
- .v-container.grid-list-lg :not(:only-child) .v-row:first-child {
263
- margin-top: -8px
238
+ /*=================== v-data-table ======================================================= */
239
+ .v-data-table>.v-data-table__wrapper>table>tbody>tr>td,
240
+ .v-data-table>.v-data-table__wrapper>table>tbody>tr>th,
241
+ .v-data-table>.v-data-table__wrapper>table>tfoot>tr>td,
242
+ .v-data-table>.v-data-table__wrapper>table>tfoot>tr>th,
243
+ .v-data-table>.v-data-table__wrapper>table>thead>tr>td,
244
+ .v-data-table>.v-data-table__wrapper>table>thead>tr>th {
245
+ padding: 0 12px;
264
246
  }
265
247
 
266
- .v-container.grid-list-lg :not(:only-child) .v-row:last-child {
267
- margin-bottom: -8px
248
+ .v-select__selection--comma,
249
+ .theme--light.v-data-table thead tr th,
250
+ .theme--light.v-data-table,
251
+ .theme--light.v-input input {
252
+ /* color: #000 !important; */
253
+ font-weight: 400;
268
254
  }
269
255
 
270
- .v-container.grid-list-xl .v-row .v-col {
271
- padding: 12px
256
+ .theme--light.v-data-table thead tr th {
257
+ font-size: .85rem !important;
258
+ font-weight: 500;
259
+ color: #505050 !important;
260
+ height: 36px !important;
272
261
  }
273
262
 
274
- .v-container.grid-list-xl .v-row:only-child {
275
- margin: -12px
263
+ .v-data-table .v-text-field>.v-input__control>.v-input__slot:before {
264
+ border-width: 0 0 0 0 !important;
276
265
  }
277
266
 
278
- .v-container.grid-list-xl .v-row:not(:only-child) {
279
- margin: auto -12px
267
+ .v-data-table .v-data-table__wrapper .v-input {
268
+ font-size: inherit !important;
280
269
  }
281
270
 
282
- .v-container.grid-list-xl :not(:only-child) .v-row:first-child {
283
- margin-top: -12px
271
+ .tTable {
272
+ border-top: thin solid rgba(0, 0, 0, .08) !important;
284
273
  }
285
274
 
286
- .v-container.grid-list-xl :not(:only-child) .v-row:last-child {
287
- margin-bottom: -12px
275
+ .tTable table th {
276
+ white-space: nowrap !important;
277
+ background-color: #f9f9f9 !important;
278
+ border-bottom: thin solid rgba(0, 0, 0, .08) !important;
288
279
  }
289
280
 
290
- /* ----------------------------------------------------------------- */
291
- .grow {
292
- flex-grow: 1;
293
- flex-shrink: 0;
294
- flex-basis: content;
281
+ .tTable table td {
282
+ border-bottom: thin solid rgba(0, 0, 0, .08) !important;
295
283
  }
296
284
 
297
- .shrink {
298
- flex-grow: 0;
299
- flex-shrink: 1;
300
- flex-basis: content;
285
+ .theme--light.v-data-table .v-data-footer {
286
+ border-top: none !important;
301
287
  }
302
288
 
303
- /* ================================================================================================= */
304
- /* json ace_editor */
305
-
306
- .ace_editor.ace-jsoneditor {
307
- font-size: 1em !important;
308
- line-height: 1.5em !important
289
+ .theme--light.v-data-table .v-data-table__divider {
290
+ border-right: thin solid rgba(0, 0, 0, .08) !important;
309
291
  }
310
292
 
311
- .jsoneditor-poweredBy {
293
+ .tTable table th .v-icon.v-data-table-header__icon {
312
294
  display: none;
313
295
  }
314
296
 
315
-
316
- /* jconfirm */
317
- @media only screen and (min-width: 600px) {
318
- .jconfirm .jconfirm-box {
319
- min-width: 460px;
320
- max-width: 500px;
321
- }
322
- }
323
-
324
- .jconfirm .jconfirm-box {
325
- font-family: Roboto, sans-serif !important;
326
- border-top: 0 !important;
297
+ .tTable table th.sortable.active .v-icon.v-data-table-header__icon {
298
+ display: inline-flex;
327
299
  }
328
300
 
329
- .jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons button,
330
- .jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons button {
331
- font-weight: 400 !important;
332
- font-size: .9rem !important;
301
+ .tTable tbody tr:hover {
302
+ background-color: #f5f5f5 !important;
333
303
  }
334
304
 
335
- .jconfirm .jconfirm-box-container {
336
- margin: auto;
305
+ .tTableNoHover tbody tr:hover {
306
+ background: transparent !important;
337
307
  }
338
308
 
339
- .jconfirm .jconfirm-box .jconfirm-buttons>button {
340
- margin-left: 10px !important;
341
- margin-right: 10px !important;
342
-
309
+ .v-data-table .v-data-table-header-mobile {
310
+ display: none !important;
343
311
  }
344
312
 
345
- .jconfirm.jconfirm-white .jconfirm-box .jconfirm-title-c .jconfirm-icon-c,
346
- .jconfirm.jconfirm-light .jconfirm-box .jconfirm-title-c .jconfirm-icon-c {
347
- font-size: 2.9em !important;
348
- margin: 0 !important;
313
+ .v-data-table .v-data-table__mobile-row {
314
+ min-height: 34px;
315
+ height: 34px !important;
349
316
  }
350
317
 
351
- .jconfirm .jconfirm-box div.jconfirm-title-c {
352
- display: grid;
353
- line-height: inherit;
354
- text-align: center;
355
- font-size: 1.1rem !important;
356
- }
357
-
358
- .jconfirm .jconfirm-box div.jconfirm-content-pane.no-scroll,
359
- .jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons,
360
- .jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons {
361
- text-align: center;
362
- float: inherit;
363
- }
364
-
365
-
366
- /* ============================================================== */
367
-
368
- .ck.ck-editor {
369
- overflow-x: hidden;
370
- font-size: initial;
371
- }
372
-
373
- /* =================================================================================================== */
374
- .tTable {
375
- border-top: thin solid rgba(0, 0, 0, .12) !important;
376
- border-radius: 0;
377
- }
378
-
379
- .tTable .divider {
380
- border-right: 1px solid rgba(0, 0, 0, .12);
381
- }
382
-
383
-
384
318
  /* ===================================================================================================
385
319
  =============== scrollbar Style ============================================================================
386
320
  =================================================================================================== */
321
+ /* Thanh cuộn mảnh, ẩn khi không hover, hiện dần khi rê chuột vào (giống #content-left-box của ME).
322
+ Màu thumb đi qua biến --fp-scrollbar; phải đăng ký @property thì biến mới transition được
323
+ (biến chưa đăng ký chỉ nhảy giá trị, không có hiệu ứng mờ dần). */
324
+ @property --fp-scrollbar {
325
+ syntax: '<color>';
326
+ inherits: false;
327
+ initial-value: transparent;
328
+ }
329
+
387
330
  .fpScrollbar, .v-navigation-drawer__content {
388
331
  overflow-y: auto;
332
+ --fp-scrollbar: transparent;
333
+ /* Firefox */
334
+ scrollbar-width: thin;
335
+ scrollbar-color: var(--fp-scrollbar) transparent;
336
+ /* CHỈ transition biến. Thêm "scrollbar-color" vào đây thì mỗi khung hình biến đổi màu lại khởi động lại
337
+ transition của scrollbar-color từ đầu ⇒ màu đổi từng nấc, chậm gấp 2–3 lần (đo trên lhu-docs). */
338
+ transition: --fp-scrollbar 600ms ease;
389
339
  }
390
340
 
391
- .fpScrollbar::-webkit-scrollbar, .v-navigation-drawer__content::-webkit-scrollbar {
392
- width: 6px;
341
+ .fpScrollbar:hover, .v-navigation-drawer__content:hover {
342
+ --fp-scrollbar: rgba(0, 0, 0, 0.25);
343
+ transition: --fp-scrollbar 300ms ease;
393
344
  }
394
345
 
395
- /* Track */
396
- .fpScrollbar::-webkit-scrollbar-track,.v-navigation-drawer__content::-webkit-scrollbar-track {
397
- background: #f1f1f1;
398
-
346
+ /* Chrome/Edge/Safari cũ. Từ Chrome 121, đã khai scrollbar-color thì Chrome BỎ QUA ::-webkit-scrollbar
347
+ ⇒ thanh thực tế rộng ~10px (mức "thin" của trình duyệt), không phải 5px. */
348
+ .fpScrollbar::-webkit-scrollbar, .v-navigation-drawer__content::-webkit-scrollbar {
349
+ width: 5px;
350
+ height: 5px;
399
351
  }
400
352
 
401
- /* Handle */
402
- .fpScrollbar::-webkit-scrollbar-thumb,.v-navigation-drawer__content::-webkit-scrollbar-thumb {
403
- background: #bbb;
404
- border-radius: 4px;
353
+ .fpScrollbar::-webkit-scrollbar-track, .v-navigation-drawer__content::-webkit-scrollbar-track {
354
+ background: transparent;
405
355
  }
406
356
 
407
- /* Handle on hover */
408
- .fpScrollbar::-webkit-scrollbar-thumb:hover, .v-navigation-drawer__content::-webkit-scrollbar-thumb:hover {
409
- background: #bbb;
357
+ .fpScrollbar::-webkit-scrollbar-thumb, .v-navigation-drawer__content::-webkit-scrollbar-thumb {
358
+ background-color: var(--fp-scrollbar);
359
+ border-radius: 4px;
410
360
  }
411
361
 
412
362
  /* ===================================================================================================
@@ -511,8 +461,30 @@ input[type=number] {
511
461
  /* Firefox 16+, IE 10+, Opera */
512
462
  }
513
463
  }
514
-
515
-
464
+ /* ==============================================================================*/
465
+ .fui-loading {
466
+ --color-1: #1867c0;
467
+ --size: 0.8px;
468
+
469
+ width: calc(48 * var(--size));
470
+ height: calc(48 * var(--size));
471
+ border: calc(5 * var(--size)) dotted var(--color-1);
472
+ border-radius: 50%;
473
+ display: inline-block;
474
+ position: relative;
475
+ box-sizing: border-box;
476
+ animation: rotation 4s linear infinite;
477
+ }
478
+
479
+ @keyframes rotation {
480
+ 0% {
481
+ transform: rotate(0deg);
482
+ }
483
+ 100% {
484
+ transform: rotate(360deg);
485
+ }
486
+ }
487
+
516
488
  /* ===================================================================================================
517
489
  =============== Loader ============================================================================
518
490
  =================================================================================================== */