@agung_dhewe/webapps 1.1.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 (130) hide show
  1. package/LICENSE +28 -0
  2. package/README.md +2 -0
  3. package/jsconfig.json +10 -0
  4. package/libs/fgta5js-dist/fgta5js-v1.8.3.min.css +2 -0
  5. package/libs/fgta5js-dist/fgta5js-v1.8.3.min.js +11 -0
  6. package/libs/fgta5js-dist/fgta5js-v1.8.3.min.js.map +1 -0
  7. package/libs/fgta5js-dist/fonts/karla-italic-latin-ext.woff2 +0 -0
  8. package/libs/fgta5js-dist/fonts/karla-italic-latin.woff2 +0 -0
  9. package/libs/fgta5js-dist/fonts/karla-normal-latin-ext.woff2 +0 -0
  10. package/libs/fgta5js-dist/fonts/karla-normal-latin.woff2 +0 -0
  11. package/libs/fgta5js-dist/fonts/karla.css +142 -0
  12. package/libs/webmodule/module-edit.css +163 -0
  13. package/libs/webmodule/module-footer.css +22 -0
  14. package/libs/webmodule/module-list.css +25 -0
  15. package/libs/webmodule/module.css +52 -0
  16. package/libs/webmodule/module.js +195 -0
  17. package/libs/webmodule/pagehelper.mjs +45 -0
  18. package/modules/generator/appgen-components.mjs +142 -0
  19. package/modules/generator/appgen-icons.mjs +6 -0
  20. package/modules/generator/appgen-io.mjs +784 -0
  21. package/modules/generator/appgen-ui-search.mjs +173 -0
  22. package/modules/generator/appgen-ui-unique.mjs +153 -0
  23. package/modules/generator/appgen-ui.mjs +1181 -0
  24. package/modules/generator/generator-context.mjs +18 -0
  25. package/modules/generator/generator-designtemplate.html +1508 -0
  26. package/modules/generator/generator-ext.html +0 -0
  27. package/modules/generator/generator-ext.mjs +3 -0
  28. package/modules/generator/generator.css +642 -0
  29. package/modules/generator/generator.mjs +195 -0
  30. package/modules/generator/generator.png +0 -0
  31. package/modules/generator/generatorEdit.html +185 -0
  32. package/modules/generator/generatorEdit.mjs +238 -0
  33. package/modules/generator/generatorList.html +32 -0
  34. package/modules/generator/generatorList.mjs +243 -0
  35. package/modules/login/login.css +11 -0
  36. package/modules/login/login.html +12 -0
  37. package/modules/login/login.mjs +111 -0
  38. package/package.json +46 -0
  39. package/percobaan/simmpan-ke-minio.js +24 -0
  40. package/src/api.js +80 -0
  41. package/src/apis/generator.api.js +226 -0
  42. package/src/apis/login.api.js +109 -0
  43. package/src/bucket.js +24 -0
  44. package/src/context.js +26 -0
  45. package/src/datalog.sql +22 -0
  46. package/src/datarecords.js +0 -0
  47. package/src/db.js +61 -0
  48. package/src/generator/createApiExtenderModule.js +54 -0
  49. package/src/generator/createApiModule.js +218 -0
  50. package/src/generator/createIcon.js +62 -0
  51. package/src/generator/createInfoAboutExtender.js +42 -0
  52. package/src/generator/createInfoLogs.js +41 -0
  53. package/src/generator/createInfoRecordExtender.js +41 -0
  54. package/src/generator/createModuleContext.js +48 -0
  55. package/src/generator/createModuleDetilEditHtml.js +110 -0
  56. package/src/generator/createModuleDetilEditMjs.js +172 -0
  57. package/src/generator/createModuleDetilListHtml.js +146 -0
  58. package/src/generator/createModuleDetilListMjs.js +73 -0
  59. package/src/generator/createModuleEjs.js +51 -0
  60. package/src/generator/createModuleExtenderHtml.js +43 -0
  61. package/src/generator/createModuleExtenderMjs.js +43 -0
  62. package/src/generator/createModuleHeaderEditHtml.js +148 -0
  63. package/src/generator/createModuleHeaderEditMjs.js +197 -0
  64. package/src/generator/createModuleHeaderListHtml.js +144 -0
  65. package/src/generator/createModuleHeaderListMjs.js +67 -0
  66. package/src/generator/createModuleMjs.js +67 -0
  67. package/src/generator/createModuleRollup.js +42 -0
  68. package/src/generator/createProgramData.js +96 -0
  69. package/src/generator/createTable.js +156 -0
  70. package/src/generator/ddl.js +475 -0
  71. package/src/generator/helper.js +149 -0
  72. package/src/generator/templates/__rollup-module.ejs +90 -0
  73. package/src/generator/templates/api-extender-module.js.ejs +0 -0
  74. package/src/generator/templates/api-module.js.ejs +818 -0
  75. package/src/generator/templates/module-context.ejs +16 -0
  76. package/src/generator/templates/module-ext-about.ejs +1 -0
  77. package/src/generator/templates/module-ext-record.ejs +1 -0
  78. package/src/generator/templates/module-ext.html.ejs +3 -0
  79. package/src/generator/templates/module-ext.mjs.ejs +21 -0
  80. package/src/generator/templates/module-logs.ejs +14 -0
  81. package/src/generator/templates/module.ejs.ejs +48 -0
  82. package/src/generator/templates/module.mjs.ejs +256 -0
  83. package/src/generator/templates/moduleDetilEdit.html.ejs +34 -0
  84. package/src/generator/templates/moduleDetilEdit.mjs.ejs +792 -0
  85. package/src/generator/templates/moduleDetilList.html.ejs +26 -0
  86. package/src/generator/templates/moduleDetilList.mjs.ejs +319 -0
  87. package/src/generator/templates/moduleHeaderEdit.html.ejs +53 -0
  88. package/src/generator/templates/moduleHeaderEdit.mjs.ejs +807 -0
  89. package/src/generator/templates/moduleHeaderList.html.ejs +24 -0
  90. package/src/generator/templates/moduleHeaderList.mjs.ejs +308 -0
  91. package/src/generator/templates/sqlAddField.ejs +3 -0
  92. package/src/generator/templates/sqlAddForeignKey.ejs +12 -0
  93. package/src/generator/templates/sqlAddUniqueIndex.ejs +4 -0
  94. package/src/generator/templates/sqlCreateTable.ejs +9 -0
  95. package/src/generator/templates/sqlDropForeignKey.ejs +3 -0
  96. package/src/generator/templates/sqlDropUniqueIndex.ejs +4 -0
  97. package/src/generator/templates/sqlModifyField.ejs +6 -0
  98. package/src/generator/trygenerate.js +83 -0
  99. package/src/generator/worker.js +389 -0
  100. package/src/helper.js +82 -0
  101. package/src/logger.js +39 -0
  102. package/src/router.js +84 -0
  103. package/src/routers/defaultLoginApi.js +29 -0
  104. package/src/routers/defaultLoginAsset.js +18 -0
  105. package/src/routers/defaultLoginPage.js +36 -0
  106. package/src/routers/defaultRootIndex.js +16 -0
  107. package/src/routers/downloadHandler.js +51 -0
  108. package/src/routers/fileUploadApi.js +15 -0
  109. package/src/routers/generatorApi.js +30 -0
  110. package/src/routers/generatorAsset.js +18 -0
  111. package/src/routers/generatorPage.js +37 -0
  112. package/src/routers/handleError.js +43 -0
  113. package/src/routers/handleModuleNotfound.js +12 -0
  114. package/src/routers/moduleApi.js +34 -0
  115. package/src/routers/modulePage.js +102 -0
  116. package/src/sequencerdoc.js +311 -0
  117. package/src/sequencerline.js +214 -0
  118. package/src/session.js +57 -0
  119. package/src/startup.js +59 -0
  120. package/src/webapps.js +239 -0
  121. package/src/workermanager.js +83 -0
  122. package/templates/_lib_debug.ejs +11 -0
  123. package/templates/_lib_production.ejs +5 -0
  124. package/templates/application.page.ejs +143 -0
  125. package/templates/generator.page.ejs +131 -0
  126. package/templates/index.page.ejs +24 -0
  127. package/templates/login.page.ejs +102 -0
  128. package/templates/moduleError.ejs +16 -0
  129. package/templates/moduleNotfound.ejs +14 -0
  130. package/webapps.code-workspace +11 -0
File without changes
@@ -0,0 +1,3 @@
1
+ export async function init(self, args) {
2
+
3
+ }
@@ -0,0 +1,642 @@
1
+ .search-container button{
2
+ min-width: unset !important;
3
+ font-weight: normal !important;
4
+ padding: 5px 10px 5px 10px;
5
+ }
6
+
7
+
8
+ #obj_appname,
9
+ input[type="text"],
10
+ input[type="number"]
11
+ {
12
+ outline: none;
13
+ border: 1px solid #ccc;
14
+ padding: 10px;
15
+ }
16
+
17
+ input[type="number"]:focus,
18
+ input[type="text"]:focus {
19
+ border-color: black;
20
+ }
21
+
22
+ input[type="number"]::-webkit-inner-spin-button,
23
+ input[type="number"]::-webkit-outer-spin-button {
24
+ -webkit-appearance: none;
25
+ margin: 0;
26
+ }
27
+
28
+ input::placeholder {
29
+ font-size: 0.7rem;
30
+ font-style: italic;
31
+ }
32
+
33
+
34
+ button,
35
+ input[type="button"] {
36
+ user-select: none;
37
+ outline: none;
38
+ background-color: rgb(17, 37, 75);
39
+ color: white;
40
+ font-weight: bold;
41
+ border: 1px solid #ccc;
42
+ cursor: pointer;
43
+ }
44
+
45
+ th,
46
+ label {
47
+ font-weight: bold;
48
+ font-size: 0.8rem;
49
+ }
50
+
51
+ th, td {
52
+ padding: 0;
53
+ }
54
+
55
+ th {
56
+ background-color: rgb(34, 77, 156);
57
+ color: white;
58
+ }
59
+
60
+
61
+ button {
62
+ padding: 10px 40px 10px 40px;
63
+ min-width: 150px;
64
+ }
65
+
66
+ button:hover {
67
+ background-color: rgb(49, 78, 132);
68
+ }
69
+
70
+ .subtitle {
71
+ font-weight: bold;
72
+ font-size: 1.1rem;
73
+ padding: 20px 0 10px 0;
74
+ color: rgb(17, 37, 75);
75
+ }
76
+
77
+ .generator-button-new {
78
+ display: inline-block;
79
+ position: fixed;
80
+ background-size: cover;
81
+ background-repeat: no-repeat;
82
+ background-image: url('./../images/icon-newdocument.svg');
83
+ width: 48px;
84
+ height: 48px;
85
+ right: 1rem;
86
+ top: calc(var(--fgta5-app-header-height) + 1rem);
87
+ transition: transform 0.3s ease;
88
+ }
89
+
90
+ .generator-button-new:hover {
91
+ transform: scale(1.5);
92
+ }
93
+
94
+
95
+
96
+
97
+ #appgen-datadesign-layout {
98
+ display: grid;
99
+ grid-template-areas:
100
+ "def def"
101
+ "action action"
102
+ "entity entity"
103
+ "editor sidebar";
104
+ grid-template-columns: auto 150px;
105
+ grid-template-rows: auto;
106
+ gap: 10px;
107
+ }
108
+
109
+ #appgen-datadesign-layout > div {
110
+ /* background-color: #ccc; */
111
+ padding: 10px;
112
+ }
113
+
114
+ #layout-definition {
115
+ grid-area: def;
116
+
117
+ display: grid;
118
+ grid-template-columns: 150px auto 100px ;
119
+ column-gap: 10px;
120
+ row-gap: 10px;
121
+ }
122
+
123
+ #layout-definition > label {
124
+ text-align: right;
125
+ align-self: center;
126
+ justify-self: end;
127
+ }
128
+
129
+ #layout-action {
130
+ grid-area: action;
131
+ }
132
+
133
+ #layout-entity {
134
+ grid-area: entity;
135
+ }
136
+
137
+ #layout-editor {
138
+ grid-area: editor;
139
+ }
140
+
141
+ #layout-sidebar {
142
+ grid-area: sidebar;
143
+ }
144
+
145
+ #layout-sidebar > div {
146
+ position: sticky;
147
+ top: calc(var(--fgta5-app-header-height) + 75px);
148
+ }
149
+
150
+
151
+
152
+ #tbl_entity {
153
+ width: 100%;
154
+
155
+ }
156
+
157
+ #tbl_entity > tfoot > tr td {
158
+ padding-top: 15px;
159
+ }
160
+
161
+ #tbl_entity td > span {
162
+ margin: 5px;
163
+ }
164
+
165
+ #tbl_entity th {
166
+ text-align: left;
167
+ padding: 10px 5px 10px 5px;
168
+ }
169
+
170
+ #tbl_entity input {
171
+ padding: 3px;
172
+ width: calc(100% - 20px);
173
+ margin: 5px;
174
+ }
175
+
176
+ #tbl_entity [name="col_name"] {
177
+ width: 100px;
178
+ min-width: 100px;
179
+ }
180
+
181
+ #tbl_entity [name="col_name"] > input {
182
+ text-transform: lowercase;
183
+ }
184
+
185
+ #tbl_entity [name="col_title"] {
186
+ min-width: 100px;
187
+ }
188
+
189
+ #tbl_entity [name="col_table"] {
190
+ width: 100px;
191
+ }
192
+
193
+ #tbl_entity [name="col_pk"] {
194
+ width: 100px;
195
+ }
196
+
197
+ #tbl_entity [name="col_btndesign"] {
198
+ width: 100px;
199
+ }
200
+
201
+ #tbl_entity [name="col_btnremove"] {
202
+ width: 100px;
203
+ }
204
+
205
+ #tbl_entity [name="col_btnremove"] {
206
+ width: 100px;
207
+ }
208
+
209
+ #tbl_entity [name="col_id"] {
210
+ width: 100px;
211
+ max-width: 100px;
212
+ white-space: nowrap;
213
+ overflow: hidden;
214
+ text-overflow: ellipsis;
215
+ }
216
+
217
+ /*
218
+ #entities-design {
219
+ }
220
+ */
221
+
222
+
223
+
224
+ .entity-editor {
225
+ scroll-margin-top: calc(var(--fgta5-app-header-height) + 50px)
226
+ }
227
+
228
+
229
+ .designer-info {
230
+ display: grid;
231
+ grid-template-columns: 80px auto;
232
+ width: 100%;
233
+ column-gap: 10px;
234
+ margin-bottom: 40px;
235
+ }
236
+
237
+ .designer-info div[name="col_name"] {
238
+ text-transform: lowercase;
239
+ }
240
+
241
+ .designer-info div[name="col_title"] {
242
+ grid-column: span 2;
243
+ border: 0;
244
+ margin-bottom: 25px;
245
+ font-weight: bold;
246
+ font-size: 2.5rem;
247
+ }
248
+
249
+ .designer-info [data-tag="label"] {
250
+ font-weight: bold;
251
+ font-size: .7rem;
252
+ text-align: right;
253
+ line-height: 1.2rem;
254
+ }
255
+
256
+ .designer-info [data-tag="content"] {
257
+ border-bottom: 1px dotted #ddd;
258
+ }
259
+
260
+
261
+ @keyframes tombolDiTekanMenghilang {
262
+ 0% { opacity: 1; transform: scale(1); }
263
+ 100% { opacity: 0; transform: scale(1.2) }
264
+ }
265
+
266
+ @keyframes tombolMunculLagi {
267
+ 0% { opacity: 0; transform: scale(0.3); }
268
+ 100% { opacity: 1; transform: scale(1) }
269
+ }
270
+
271
+ @keyframes pulseHighlight {
272
+ 0% {
273
+ transform: scale(1);
274
+ box-shadow: 0 0 0 rgba(255, 200, 0, 0);
275
+ }
276
+ 50% {
277
+ transform: scale(1.05);
278
+ box-shadow: 0 0 20px rgba(255, 200, 0, 0.6);
279
+ border-color: rgba(255, 200, 0);
280
+ color: rgba(255, 200, 0);
281
+ }
282
+ 100% {
283
+ transform: scale(1);
284
+ box-shadow: 0 0 0 rgba(255, 200, 0, 0);
285
+ }
286
+ }
287
+
288
+ .drop-target {
289
+ margin: 30px;
290
+ border: 6px dashed #eee;
291
+ padding: 30px;
292
+ text-align: center;
293
+ border-radius: 30px;
294
+ color: #eee;
295
+ font-size: 2rem;
296
+ font-weight: bold;
297
+ }
298
+
299
+ .drop-target[data-dragover] {
300
+ border-color: #a7c8ff;
301
+ color: #a7c8ff;
302
+ }
303
+
304
+ .component-icon-tool {
305
+ /* border: 1px solid #ccc; */
306
+ border: 1px solid rgba(17, 37, 75, 0.2);
307
+ border-radius: 4px;
308
+ margin: 5px 0 15px 0;
309
+ padding: 0;
310
+
311
+ display: flex;
312
+ align-items: center;
313
+ column-gap: 5px;
314
+
315
+ transition: transform 0.3s ease, opacity 0.5s ease, background-color 0.3s ease ;
316
+
317
+ /* cursor: grab; */
318
+ cursor: pointer;
319
+
320
+ background-color: #f9f9f9;
321
+ box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.5);
322
+
323
+ }
324
+
325
+ .component-icon-tool:hover {
326
+ /* transform: scale(1.2); */
327
+ background-color: #a7c8ff;
328
+ }
329
+
330
+ .component-icon-tool > div[data-icon] {
331
+ width: 16px;
332
+ height: 16px;
333
+ margin: 8px;
334
+ cursor: grab;
335
+ }
336
+
337
+ .component-icon-tool > div[data-label] {
338
+ font-weight: bold;
339
+ font-size: 0.7rem;
340
+ }
341
+
342
+
343
+
344
+
345
+
346
+
347
+
348
+ .design-data-field {
349
+ min-height: 100px;
350
+ margin: 25px 0 25px 0;
351
+ /* border: 1px solid #ccc; */
352
+ border: 1px solid rgba(17, 37, 75, 0.2);
353
+ border-radius: 15px ;
354
+ position: relative;
355
+ background-color: #f9f9f9;
356
+ box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.5);
357
+ }
358
+
359
+ .design-data-field > div {
360
+ margin: 10px 30px 30px 20px;
361
+ }
362
+
363
+ .design-data-field > div[data-fieldform] {
364
+ display: grid;
365
+ grid-template-columns: 90px 150px 90px 150px 90px auto;
366
+ gap: 5px;
367
+ }
368
+
369
+ .design-data-field label {
370
+ font-size: 0.7rem;
371
+ text-align: right;
372
+ transform: translateY(5px);
373
+ }
374
+
375
+ .design-data-field select {
376
+ width: 100%;
377
+ border: 1px solid #ccc;
378
+ outline: none;
379
+ padding: 4px;
380
+ }
381
+
382
+ .design-data-field label[name="allownull"] {
383
+ text-align: left;
384
+ }
385
+
386
+
387
+ .design-data-field input {
388
+ padding: 4px;
389
+ width: 100%;
390
+ }
391
+
392
+ .design-data-field input[type="checkbox"] {
393
+ width: 15px;
394
+ margin-left: 0;
395
+ }
396
+
397
+
398
+ .design-data-field input[type="text"][name="fieldname"] {
399
+ background-color: #fcffd1;
400
+ text-transform: lowercase;
401
+
402
+ }
403
+
404
+ .design-data-field input[type="text"] {
405
+ width: calc(100% - 10px);
406
+ }
407
+
408
+ .design-data-field input[type="number"] {
409
+ width: 30px;
410
+ text-align: right;
411
+ margin-right: 5px;
412
+
413
+ }
414
+
415
+
416
+ .design-data-field div[name="validation"] {
417
+ display: grid;
418
+ grid-template-columns: 100px 50px auto;
419
+ gap: 4px;
420
+ }
421
+
422
+ .design-data-field div[name="validation"] label {
423
+ text-align: left;
424
+ transform: translateY(0);
425
+ }
426
+
427
+
428
+ .design-data-field div[name="defaultinvalidmessage"] {
429
+ line-height: 1.5rem;
430
+ text-align: right;
431
+ font-size: 0.7rem;
432
+ font-weight: bold;
433
+ padding-right: 10px;
434
+ }
435
+
436
+
437
+ #upload-icon {
438
+ display: flex;
439
+ width: 80px;
440
+ height: 80px;
441
+ align-items: center;
442
+ justify-content: center;
443
+ background-repeat: no-repeat;
444
+ background-size: cover;
445
+ background-image: url("data:image/svg+xml,%3Csvg%20version%3D%221.1%22%20viewBox%3D%220%200%2048%2048%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cg%20fill%3D%22currentColor%22%3E%0A%3Cpath%20d%3D%22m20.019%202c-2.9332%200-5.2348%202.3057-5.2348%205.2389v3.1417h-8.3806c-2.3047%200-4.1903%201.8856-4.1903%204.1903v7.9628h3.1417c3.1427%200%205.6567%202.514%205.6567%205.6567%200%203.1427-2.514%205.6567-5.6567%205.6567h-3.3547v7.9628c0%202.3047%201.8856%204.1903%204.1903%204.1903h7.9628v-3.1458c0-3.1427%202.514-5.6567%205.6567-5.6567%203.1427%200%205.6567%202.514%205.6567%205.6567v3.1458h7.9628c2.3047%200%204.1903-1.8856%204.1903-4.1903v-8.3806h3.1417c2.9332%200%205.2389-2.3057%205.2389-5.2389%200-2.9332-2.3057-5.2389-5.2389-5.2389h-3.1417v-8.3806c0-2.3047-1.8856-4.1903-4.1903-4.1903h-8.3806v-3.1417c0.20951-2.9332-2.0968-5.2389-5.03-5.2389z%22%2F%3E%0A%3C%2Fg%3E%0A%3C%2Fsvg%3E");
446
+ }
447
+
448
+ #upload-icon:hover > label {
449
+ opacity: 1;
450
+ }
451
+
452
+ #upload-icon > label {
453
+ display: inline-block;
454
+ background-color: white;
455
+ color: black;
456
+ opacity: 0;
457
+ cursor: pointer;
458
+ padding: 3px;
459
+ border: 1px solid #ccc;
460
+ }
461
+
462
+ .design-tools-container {
463
+ display: flex;
464
+ flex-wrap: wrap;
465
+ gap: 12px
466
+ }
467
+
468
+ .design-button {
469
+ display: block;
470
+ width: 24px;
471
+ height: 24px;
472
+ cursor: pointer;
473
+ }
474
+
475
+
476
+ .minimized,
477
+ .design-view-as-summary div[name="design-data-field"]:not(.maximized) {
478
+ box-shadow: none;
479
+ padding: 5px 0 5px 10px;
480
+ margin: 10px;
481
+ border-radius: 3px;
482
+ min-height: unset;
483
+ }
484
+
485
+
486
+ .minimized div[data-summary],
487
+ .design-view-as-summary div[name="design-data-field"]:not(.maximized) div[data-summary] {
488
+ display: flex !important;
489
+ gap: 5px;
490
+ margin: 3px;
491
+ align-items: center;
492
+ }
493
+
494
+
495
+ .minimized div[data-detil],
496
+ .design-view-as-summary div[name="design-data-field"]:not(.maximized) div[data-detil] {
497
+ display: none;
498
+ }
499
+
500
+ .minimized input[name="fieldname-summary"],
501
+ .design-view-as-summary div[name="design-data-field"]:not(.maximized) input[name="fieldname-summary"] {
502
+ border: none;
503
+ background: transparent;
504
+ font-weight: bold;
505
+ width: 200px;
506
+ }
507
+
508
+
509
+ .minimized input[name="fieldname-summary"]:focus,
510
+ .design-view-as-summary div[name="design-data-field"]:not(.maximized) input[name="fieldname-summary"]:focus {
511
+ background-color: rgb(208, 208, 208);
512
+ }
513
+
514
+
515
+ .minimized-drop-target,
516
+ .design-view-as-summary div[name="design-data-field"]:not(.maximized) div[name="drop-target"] {
517
+ margin: 0;
518
+ border: 1 px solid #eee;
519
+ padding: 15px;
520
+ font-size: 1rem;
521
+ background-color: white;
522
+ color: #eee
523
+ }
524
+
525
+ .minimized-drop-target[data-dragover],
526
+ .design-view-as-summary div[name="design-data-field"]:not(.maximized) div[name="drop-target"][data-dragover] {
527
+ border: 1px solid #a7c8ff;
528
+ font-size: 1rem;
529
+ background-color: #a7c8ff;
530
+ color: white
531
+ }
532
+
533
+
534
+ .minimized div[name="component-summary"] [name="icon"],
535
+ .design-view-as-summary div[name="design-data-field"]:not(.maximized) div[name="component-summary"] [name="icon"] {
536
+ cursor: grab;
537
+ }
538
+
539
+
540
+
541
+
542
+
543
+ .field-remove-button {
544
+ width: 12px;
545
+ height: 12px;
546
+ color: #ccc;
547
+ position: absolute;
548
+ right: 0;
549
+ padding: 5px;
550
+ margin: 5px;
551
+ transition: transform 0.3s ease;
552
+ cursor: pointer;
553
+ }
554
+
555
+ .field-remove-button:hover {
556
+ transform: scale(1.5);
557
+ color: red;
558
+ }
559
+
560
+ @keyframes fieldDihapus {
561
+ 0% { opacity: 1; transform: scale(1); }
562
+ 100% { opacity: 0; transform: scale( 0.3);}
563
+ }
564
+
565
+
566
+
567
+ .design-data-field-icon {
568
+ width: 16px;
569
+ height: 16px;
570
+ margin-left: 8px;
571
+ }
572
+
573
+
574
+ .design-data-field-icon-pk {
575
+ width: 16px;
576
+ height: 16px;
577
+ position: absolute;
578
+ transform: translateX(-8px);
579
+ }
580
+
581
+ .field-handle-bar {
582
+ cursor: pointer;
583
+ }
584
+
585
+
586
+
587
+ .action-input {
588
+ border: 1px solid #ccc;
589
+ outline: none;
590
+ margin: 3px;
591
+ padding: 5px;
592
+
593
+ }
594
+
595
+ .action-title {
596
+ font-weight: bold;
597
+ }
598
+
599
+ .action-button-add {
600
+ border: 1px solid #ccc;
601
+ margin: 3px;
602
+ padding: 5px;
603
+
604
+ outline: none;
605
+ width: 60px;
606
+ height: 28px;
607
+ padding: 3px;
608
+ min-width: unset;
609
+ }
610
+
611
+ .action-cell {
612
+ padding: 5px;
613
+ }
614
+
615
+ .action-cell[name="action-title"] {
616
+ font-weight: bold;
617
+ }
618
+
619
+ .action-button-remove {
620
+ width: 16px;
621
+ height: 16px;
622
+ color: #ccc;
623
+ transition: transform 0.3s ease;
624
+ margin-left: 10px;
625
+ }
626
+
627
+ .action-button-remove:hover {
628
+ color: red;
629
+ transform: scale(1.5);
630
+ }
631
+
632
+ .field-error {
633
+ background: #ff8383;
634
+ }
635
+
636
+
637
+
638
+ .search-editor-item {
639
+ padding: 6px;
640
+ cursor: pointer;
641
+ border-top: 1px dotted #ddd;
642
+ }