@daracl/form 0.0.17 → 0.0.19

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 (91) hide show
  1. package/README.md +1 -1
  2. package/dist/DaraForm.d.ts +51 -2
  3. package/dist/FieldInfoMap.d.ts +8 -1
  4. package/dist/FormTemplate.d.ts +2 -2
  5. package/dist/constants.d.ts +5 -1
  6. package/dist/daracl.form.css +788 -0
  7. package/dist/daracl.form.min.css +10 -0
  8. package/dist/daracl.form.min.umd.js +171 -0
  9. package/dist/daracl.form.min.umd.js.map +1 -0
  10. package/dist/daracl.form.umd.js +4497 -0
  11. package/dist/daracl.form.umd.js.map +1 -0
  12. package/dist/defaultOption.d.ts +8 -0
  13. package/dist/event/renderEvents.d.ts +1 -1
  14. package/dist/global.d.ts +6 -0
  15. package/dist/index.cjs +1827 -520
  16. package/dist/index.cjs.map +1 -7
  17. package/dist/index.d.ts +7 -2
  18. package/dist/index.html +193 -348
  19. package/dist/index.js +4106 -3097
  20. package/dist/index.js.map +1 -7
  21. package/dist/index.min.cjs +171 -0
  22. package/dist/index.min.cjs.map +1 -0
  23. package/dist/index.min.js +2915 -0
  24. package/dist/index.min.js.map +1 -0
  25. package/dist/index.umd.d.ts +7 -0
  26. package/dist/renderer/ButtonRender.d.ts +2 -2
  27. package/dist/renderer/CheckboxRender.d.ts +2 -2
  28. package/dist/renderer/CustomRender.d.ts +2 -2
  29. package/dist/renderer/DateRender.d.ts +2 -2
  30. package/dist/renderer/DropdownRender.d.ts +2 -2
  31. package/dist/renderer/FileRender.d.ts +2 -2
  32. package/dist/renderer/GridRender.d.ts +2 -2
  33. package/dist/renderer/GroupRender.d.ts +2 -2
  34. package/dist/renderer/HiddenRender.d.ts +2 -2
  35. package/dist/renderer/NumberRender.d.ts +2 -2
  36. package/dist/renderer/PasswordRender.d.ts +2 -2
  37. package/dist/renderer/RadioRender.d.ts +2 -2
  38. package/dist/renderer/RangeRender.d.ts +2 -2
  39. package/dist/renderer/Render.d.ts +2 -2
  40. package/dist/renderer/TabRender.d.ts +2 -2
  41. package/dist/renderer/TextAreaRender.d.ts +2 -2
  42. package/dist/renderer/TextRender.d.ts +2 -2
  43. package/dist/types/FormField.d.ts +18 -13
  44. package/dist/types/FormOptions.d.ts +1 -1
  45. package/dist/types/style.d.ts +3 -0
  46. package/dist/util/renderFactory.d.ts +1 -1
  47. package/dist/util/styleUtils.d.ts +10 -12
  48. package/dist/util/utils.d.ts +1 -1
  49. package/package.json +129 -140
  50. package/style/abstracts/_index.scss +2 -0
  51. package/style/abstracts/_mixins.scss +22 -0
  52. package/style/abstracts/_variables.scss +1 -0
  53. package/style/base/_base.scss +68 -0
  54. package/style/base/_index.scss +1 -0
  55. package/style/components/_button.scss +16 -0
  56. package/style/components/_field-container.scss +42 -0
  57. package/style/components/_field-group.scss +16 -0
  58. package/style/components/_file-list.scss +59 -0
  59. package/style/components/_form-field.scss +48 -0
  60. package/style/components/_form-group.scss +94 -0
  61. package/style/components/_grid-field.scss +120 -0
  62. package/style/components/_icon.scss +26 -0
  63. package/style/components/_index.scss +11 -0
  64. package/style/components/_label.scss +65 -0
  65. package/style/components/_row.scss +88 -0
  66. package/style/components/_tab.scss +69 -0
  67. package/{dist/index.css → style/daracl.form.css} +213 -184
  68. package/style/daracl.form.css.map +1 -0
  69. package/style/daracl.form.min.css +2 -0
  70. package/style/daracl.form.min.css.map +1 -0
  71. package/style/daracl.form.scss +53 -691
  72. package/style/themes/_common.scss +18 -0
  73. package/style/themes/_dark.scss +32 -0
  74. package/style/themes/_index.scss +14 -0
  75. package/style/themes/_light.scss +26 -0
  76. package/style/themes/_mixin.scss +6 -0
  77. package/dist/commonVender.d.ts +0 -1
  78. package/dist/daracl.form.js +0 -5720
  79. package/dist/daracl.form.js.map +0 -1
  80. package/dist/daracl.form.min.js +0 -7
  81. package/dist/daracl.form.min.js.LICENSE.txt +0 -5
  82. package/dist/daracl.form.min.js.map +0 -1
  83. package/dist/daracl.vender.min.css +0 -5
  84. package/dist/daracl.vender.min.js +0 -2
  85. package/dist/daracl.vender.min.js.LICENSE.txt +0 -3
  86. package/dist/index.css.map +0 -7
  87. package/dist/indexVender.d.ts +0 -6
  88. package/dist/main.css +0 -6
  89. package/dist/main.css.map +0 -1
  90. package/src/index.ts +0 -5
  91. /package/dist/util/{Lanauage.d.ts → Language.d.ts} +0 -0
@@ -1,691 +1,53 @@
1
- @use "sass:list";
2
- $sizes: 8.33333333%, 16.66666667%, 25%, 33.33333333%, 41.66666667%, 50%, 58.33333333%, 66.66666667%, 75%, 83.33333333%, 91.66666667%, 100%;
3
-
4
- @mixin rowFlex() {
5
- &.top {
6
- flex-direction: column;
7
- > div {
8
- max-width: 100% !important;
9
- }
10
- }
11
-
12
- &.right {
13
- -ms-flex-direction: row-reverse !important;
14
- -webkit-box-orient: horizontal !important;
15
- -webkit-box-direction: reverse !important;
16
- flex-direction: row-reverse !important;
17
- }
18
-
19
- &.bottom {
20
- flex-direction: column-reverse !important;
21
- > div {
22
- max-width: 100% !important;
23
- }
24
- }
25
- }
26
-
27
- .daracl-form {
28
- --border-color: #dfe1e5;
29
- --color-danger: #d9534f;
30
- --background-danger: #d9534f;
31
- --font-color: #686868;
32
- --font-hover-color: #3a3d41;
33
- --invalid-font-color: #ff4136;
34
- --invalid-border-color: #ffb6b4;
35
- --invalid-background-color: #fdd;
36
- --button-bg: #f6f6f6;
37
- --button-bg-hover: #ebebeb;
38
- --tab-bg: #f6f6f6;
39
- --tab-bg-hover: #ebebeb;
40
- --tooltip-background: #3e3e3e;
41
- --tooltip-color: #fff;
42
- --field-margin-top: 10px;
43
- --input-bg: #fff;
44
- --input-color: #212529;
45
- --input-disabled-bg: #ebebeb;
46
- --bg-grid-header: #f1f1f1;
47
- }
48
-
49
- body.dark .daracl-form,
50
- .daracl-form.dark {
51
- --border-color: #41444c;
52
- --color-danger: #d9534f;
53
- --background-danger: #d9534f;
54
- --font-color: #b9bdc1;
55
- --font-hover-color: #f5f3f3;
56
- --invalid-font-color: #ff4136;
57
- --invalid-border-color: #ffb6b4;
58
- --invalid-background-color: #fdd;
59
- --button-bg: #435ebe;
60
- --button-bg-hover: #3950a2;
61
- --tab-bg: #23418f;
62
- --tab-bg-hover: #516db1;
63
- --tooltip-background: #3e3e3e;
64
- --tooltip-color: #fff;
65
- --field-margin-top: 10px;
66
- --input-bg: transparent;
67
- --input-color: #c6cddb;
68
- --input-disabled-bg: #878787;
69
- --bg-grid-header: #878787;
70
- }
71
-
72
- .daracl-form {
73
- padding: 0px;
74
- margin-top: 10px;
75
- color: var(--font-color);
76
-
77
- *,
78
- ::after,
79
- ::before {
80
- box-sizing: border-box;
81
- }
82
-
83
- .txt {
84
- &-left {
85
- text-align: left;
86
- }
87
-
88
- &-center {
89
- text-align: center;
90
- }
91
-
92
- &-right {
93
- text-align: right;
94
- }
95
- }
96
-
97
- &[data-df-mode="view"] {
98
- .form-field {
99
- border-width: 0px;
100
- border-color: transparent;
101
- border-color: transparent;
102
- outline: initial;
103
-
104
- &:focus-visible,
105
- &:focus {
106
- border-width: 0px;
107
- }
108
- }
109
- }
110
-
111
- .df-hidden {
112
- max-height: 0vh !important;
113
- width: 0px;
114
- visibility: collapse;
115
- display: none !important;
116
- padding: 0px !important;
117
- margin: 0px !important;
118
- }
119
-
120
- input,
121
- select,
122
- textarea {
123
- background-color: transparent;
124
- color: var(--font-color);
125
- &[disabled] {
126
- background-color: var(--input-disabled-bg);
127
- opacity: 0.8;
128
- }
129
- }
130
-
131
- .df-label {
132
- position: relative;
133
- font-weight: 700;
134
- vertical-align: top;
135
- padding: 5px 15px 0px 0px;
136
- overflow: initial;
137
- // 확인할것.
138
- white-space: nowrap;
139
- text-overflow: ellipsis;
140
- word-break: break-all;
141
-
142
- .required {
143
- &::after {
144
- content: "*";
145
- vertical-align: middle;
146
- }
147
-
148
- color: var(--color-danger);
149
- }
150
-
151
- .df-tooltip {
152
- visibility: visible;
153
- color: var(--tooltip-color);
154
- background: var(--tooltip-background);
155
- width: 16px;
156
- height: 16px;
157
- border-radius: 8px;
158
- text-align: center;
159
- line-height: 16px;
160
- margin: 0 5px;
161
- font-size: 12px;
162
- cursor: help;
163
- position: relative;
164
- display: inline-block;
165
-
166
- .tooltip {
167
- display: none;
168
- text-align: initial;
169
- background: var(--tooltip-background);
170
- border-radius: 5px;
171
- color: var(--tooltip-color);
172
- padding: 10px 5px;
173
- position: absolute;
174
- z-index: 2;
175
- left: -10px;
176
- min-width: max-content;
177
- text-shadow: none;
178
- cursor: default;
179
- }
180
-
181
- &:hover .tooltip {
182
- display: block;
183
- }
184
- }
185
- }
186
-
187
- .form-field {
188
- border: 1px solid var(--border-color);
189
- display: block;
190
- width: 100%;
191
- padding: 0.375rem 0.75rem;
192
- font-weight: 400;
193
- line-height: 1.5;
194
- border-radius: 4px;
195
- transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
196
- background-color: var(--input-bg);
197
- background-clip: padding-box;
198
- color: var(--input-color);
199
-
200
- &[type="radio"],
201
- &[type="checkbox"] {
202
- width: 14px;
203
- display: inline;
204
- min-height: 0px;
205
- padding: 0px;
206
- margin: 0px;
207
- vertical-align: middle;
208
- }
209
-
210
- &.dropdown {
211
- appearance: none;
212
- -webkit-appearance: none;
213
- -moz-appearance: none;
214
- }
215
-
216
- &.textarea {
217
- padding-right: 0px;
218
- }
219
-
220
- &[type="number"] {
221
- padding-right: 3px;
222
- }
223
-
224
- &.file {
225
- display: none;
226
- }
227
-
228
- &.range {
229
- padding: 0px;
230
- }
231
- }
232
-
233
- .df-row {
234
- display: -ms-flexbox;
235
- display: -webkit-box;
236
- display: flex;
237
- -ms-flex: 0 1 auto;
238
- -webkit-box-flex: 0;
239
- flex: 0 1 auto;
240
- -ms-flex-direction: row;
241
- -webkit-box-orient: horizontal;
242
- -webkit-box-direction: normal;
243
- flex-direction: row;
244
- -ms-flex-wrap: wrap;
245
- flex-wrap: wrap;
246
-
247
- &.vertical {
248
- display: block;
249
- }
250
-
251
- &.horizontal {
252
- -webkit-box-flex: 0;
253
- -ms-flex: 0 0 auto;
254
- flex: 0 0 auto;
255
- width: auto;
256
- max-width: none;
257
-
258
- > .form-group > .empty {
259
- display: none !important;
260
- }
261
- }
262
-
263
- @include rowFlex();
264
- }
265
-
266
- @each $size in $sizes {
267
- $i: list.index($sizes, $size);
268
- $className: ".col-xs-#{$i}";
269
- #{$className} {
270
- flex-basis: $size;
271
- -webkit-box-flex: 0;
272
- -ms-flex: 0 0 $size;
273
- flex: 0 0 $size;
274
- max-width: $size;
275
- }
276
- }
277
-
278
- .align-items-center {
279
- -webkit-box-align: center !important;
280
- -ms-flex-align: center !important;
281
- align-items: center !important;
282
- }
283
-
284
- .col-xs {
285
- -webkit-flex-grow: 1;
286
- -ms-flex-positive: 1;
287
- -webkit-box-flex: 1;
288
- flex-grow: 1;
289
- -ms-flex-preferred-size: 0;
290
- flex-basis: 0;
291
- max-width: 100%;
292
- }
293
-
294
- .col-auto {
295
- -webkit-box-flex: 0;
296
- -ms-flex: 0 0 auto;
297
- flex: 0 0 auto;
298
- width: auto;
299
- max-width: none;
300
- }
301
-
302
- .col-fix {
303
- flex: none;
304
- }
305
-
306
- .col-full {
307
- flex: 1;
308
- overflow: auto;
309
- }
310
-
311
- .df-field-container {
312
- overflow: initial;
313
- position: relative;
314
- > .df-row {
315
- margin-top: -10px;
316
- }
317
-
318
- > div + .df-row {
319
- margin-top: 0px;
320
- }
321
- .df-field {
322
- position: relative;
323
- margin-right: 10px;
324
-
325
- .range-num {
326
- clear: both;
327
- display: block;
328
- width: 100%;
329
- text-align: left;
330
- }
331
-
332
- .file-wrapper {
333
- border: 1px solid var(--border-color);
334
- text-align: center;
335
- display: block;
336
- width: 100%;
337
- padding: 0.375rem 0.75rem;
338
- font-weight: 400;
339
- line-height: 1.5;
340
- background-clip: padding-box;
341
- border-radius: 4px;
342
- transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
343
- }
344
- }
345
- }
346
-
347
- .daracl-file-list {
348
- .file-icon {
349
- width: 20px;
350
- height: 20px;
351
- display: inline-block;
352
- vertical-align: middle;
353
- cursor: pointer;
354
-
355
- &:hover {
356
- background-color: var(--button-bg-hover);
357
- }
358
-
359
- &.download {
360
- background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjIwcHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjIwcHgiIGZpbGw9IiMwMDAwMDAiPjxnPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCIvPjwvZz48Zz48cGF0aCBkPSJNMTgsMTV2M0g2di0zSDR2M2MwLDEuMSwwLjksMiwyLDJoMTJjMS4xLDAsMi0wLjksMi0ydi0zSDE4eiBNMTcsMTFsLTEuNDEtMS40MUwxMywxMi4xN1Y0aC0ydjguMTdMOC40MSw5LjU5TDcsMTFsNSw1IEwxNywxMXoiLz48L2c+PC9zdmc+");
361
- }
362
-
363
- &.remove {
364
- background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjBweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE2IDl2MTBIOFY5aDhtLTEuNS02aC01bC0xIDFINXYyaDE0VjRoLTMuNWwtMS0xek0xOCA3SDZ2MTJjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjd6Ii8+PC9zdmc+");
365
- }
366
- }
367
-
368
- .file-name {
369
- text-overflow: ellipsis;
370
- white-space: nowrap;
371
- word-wrap: normal;
372
- overflow: hidden;
373
- display: inline-block;
374
- vertical-align: middle;
375
- width: calc(100% - 55px);
376
- }
377
- }
378
-
379
- .field-group {
380
- .field.vertical {
381
- > * {
382
- display: block;
383
- }
384
- }
385
- }
386
-
387
- .tab-header {
388
- list-style: none;
389
- margin: 0px;
390
- padding: 0px;
391
-
392
- display: flex;
393
- line-height: 1.3;
394
- width: 100%;
395
- border-bottom: 1px solid var(--border-color);
396
-
397
- &.tab-al {
398
- &-left {
399
- justify-content: left;
400
- }
401
- &-right {
402
- justify-content: right;
403
- }
404
- &-center {
405
- justify-content: center;
406
- }
407
- }
408
-
409
- > .tab-item {
410
- list-style: none;
411
- float: left;
412
- position: relative;
413
- top: 0;
414
- margin: 1px 0.4em 0 0;
415
- padding: 0;
416
- white-space: nowrap;
417
-
418
- &.active {
419
- a {
420
- color: var(--font-hover-color);
421
- background-color: var(--tab-bg);
422
- }
423
- }
424
-
425
- a {
426
- border-top-left-radius: calc(0.45rem - 1px);
427
- border-top-right-radius: calc(0.45rem - 1px);
428
- border: 1px solid transparent;
429
- border-bottom-width: 0;
430
- float: left;
431
- padding: 0.5em 1em;
432
- text-decoration: none;
433
- color: var(--font-color);
434
- height: 30px;
435
- line-height: 15px;
436
-
437
- &:hover {
438
- background-color: var(--tab-bg-hover);
439
- border: 1px solid var(--border-color);
440
- border-bottom-width: 0;
441
- }
442
- }
443
- }
444
- }
445
-
446
- .df-tab-body {
447
- .tab-panel {
448
- display: none;
449
-
450
- &.active {
451
- display: block;
452
- }
453
- }
454
- }
455
-
456
- .df-btn {
457
- padding: 5px 10px;
458
- border-radius: calc(0.45rem - 1px);
459
- border: 1px solid var(--border-color);
460
- background-color: var(--button-bg);
461
-
462
- cursor: pointer;
463
- transition: background-color 0.3s;
464
-
465
- &:hover {
466
- color: var(--font-hover-color);
467
- background-color: var(--button-bg-hover);
468
- }
469
- }
470
-
471
- .df-icon {
472
- display: inline-block;
473
- width: 21px; /* 아이콘의 너비 설정 */
474
- height: 21px; /* 아이콘의 높이 설정 */
475
- vertical-align: middle;
476
- }
477
-
478
- .df-add-icon {
479
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='20px' viewBox='0 -960 960 960' width='20px' fill='%235f6368'%3E%3Cpath d='M431-431H220.78v-98H431v-210.22h98V-529h210.22v98H529v210.22h-98V-431Z'/%3E%3C/svg%3E");
480
- }
481
-
482
- .df-remove-icon {
483
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='20px' viewBox='0 -960 960 960' width='20px' fill='%235f6368'%3E%3Cpath d='M291-221.91 221.91-291l189-189-189-189L291-738.09l189 189 189-189L738.09-669l-189 189 189 189L669-221.91l-189-189-189 189Z'/%3E%3C/svg%3E");
484
- }
485
-
486
- .form-group {
487
- display: -ms-flexbox;
488
- display: -webkit-box;
489
- display: flex;
490
- -ms-flex-direction: row;
491
- -webkit-box-orient: horizontal;
492
- -webkit-box-direction: normal;
493
- flex-direction: row;
494
- -ms-flex-wrap: wrap;
495
- flex-wrap: wrap;
496
- margin-top: var(--field-margin-top);
497
- margin-bottom: 0px;
498
- margin-right: 0px !important;
499
- margin-left: 0px !important;
500
-
501
- &:last-child {
502
- margin-bottom: 0px;
503
- }
504
-
505
- @include rowFlex();
506
-
507
- .help-message {
508
- display: none;
509
- }
510
-
511
- .help-icon {
512
- background-repeat: no-repeat;
513
- background-position-y: center;
514
-
515
- &.form-field {
516
- background-position-x: calc(100% - 15px);
517
- }
518
-
519
- &.daracl-icon {
520
- display: none;
521
- position: absolute;
522
- z-index: 1;
523
- top: 0px;
524
- right: 0px;
525
- height: 100%;
526
- width: 20px;
527
- margin-right: 15px;
528
- }
529
- }
530
-
531
- &.invalid {
532
- .form-field {
533
- border-color: var(--invalid-border-color);
534
- outline-color: var(--invalid-border-color);
535
- }
536
-
537
- > .df-field-container.required > .df-field .help-icon {
538
- display: block;
539
- background-image: url("data:image/svg+xml; base64, PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiB3aWR0aD0iMjAiPjxwYXRoIGQ9Im0yNDktMjA3LTQyLTQyIDIzMS0yMzEtMjMxLTIzMSA0Mi00MiAyMzEgMjMxIDIzMS0yMzEgNDIgNDItMjMxIDIzMSAyMzEgMjMxLTQyIDQyLTIzMS0yMzEtMjMxIDIzMVoiIHN0eWxlPSImIzEwOyAgICBmaWxsOiAjZmY3MzczOyYjMTA7Ii8+PC9zdmc+");
540
- }
541
-
542
- .help-message {
543
- display: block;
544
- color: var(--invalid-font-color);
545
- }
546
- }
547
-
548
- &.valid {
549
- > .df-field-container.required {
550
- > .df-field .help-icon {
551
- display: block;
552
- background-image: url("data:image/svg+xml; base64, PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHN0eWxlPSImIzEwOyAgICBmaWxsOiAjMTlhOTc0OyYjMTA7Ij48cGF0aCBkPSJNMzc4LTI0NiAxNTQtNDcwbDQzLTQzIDE4MSAxODEgMzg0LTM4NCA0MyA0My00MjcgNDI3WiIvPjwvc3ZnPg==");
553
- }
554
- }
555
- }
556
-
557
- .file-label {
558
- border: 1px solid var(--border-color);
559
- display: inline;
560
- width: 100%;
561
- padding: 3px 15px;
562
- line-height: 1;
563
- background-clip: padding-box;
564
- border-radius: 4px;
565
- transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
566
-
567
- &:hover {
568
- background-color: var(--button-bg-hover);
569
- }
570
- }
571
- }
572
- .df-grid-field {
573
- margin-right: 10px;
574
- .df-grid-btn-area {
575
- border: 1px solid var(--border-color);
576
- padding: 3px;
577
- }
578
-
579
- .df-grid-container {
580
- width: 100%;
581
- height: auto;
582
- overflow-y: auto;
583
- border: 1px solid var(--border-color);
584
-
585
- .df-btn {
586
- padding: 3px 5px;
587
- }
588
-
589
- .df-grid {
590
- width: 100%;
591
- border-top-width: 0px;
592
- border-collapse: collapse;
593
-
594
- > thead {
595
- th {
596
- position: sticky;
597
- top: 0px;
598
- z-index: 10;
599
- border-bottom: 1px solid var(--border-color);
600
- background-color: var(--bg-grid-header);
601
- text-align: center;
602
- }
603
- }
604
-
605
- .help-message {
606
- display: none;
607
- }
608
-
609
- td,
610
- th {
611
- padding: 3px 5px;
612
- }
613
-
614
- .help-icon {
615
- background-repeat: no-repeat;
616
- background-position-y: center;
617
-
618
- &.form-field {
619
- background-position-x: calc(100% - 15px);
620
- }
621
-
622
- &.daracl-icon {
623
- display: none;
624
- position: absolute;
625
- z-index: 1;
626
- top: 0px;
627
- right: 0px;
628
- height: 100%;
629
- width: 20px;
630
- margin-right: 15px;
631
- }
632
- }
633
-
634
- .grid-column {
635
- position: relative;
636
- }
637
-
638
- .invalid {
639
- .form-field {
640
- border-color: var(--invalid-border-color);
641
- outline-color: var(--invalid-border-color);
642
- }
643
-
644
- > .grid-column.required .df-field .help-icon {
645
- display: block;
646
- background-image: url("data:image/svg+xml; base64, PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiB3aWR0aD0iMjAiPjxwYXRoIGQ9Im0yNDktMjA3LTQyLTQyIDIzMS0yMzEtMjMxLTIzMSA0Mi00MiAyMzEgMjMxIDIzMS0yMzEgNDIgNDItMjMxIDIzMSAyMzEgMjMxLTQyIDQyLTIzMS0yMzEtMjMxIDIzMVoiIHN0eWxlPSImIzEwOyAgICBmaWxsOiAjZmY3MzczOyYjMTA7Ii8+PC9zdmc+");
647
- }
648
-
649
- .help-message {
650
- display: block;
651
- position: absolute;
652
- border: 1px solid var(--invalid-border-color);
653
- border-color: var(--invalid-border-color) transparent transparent transparent;
654
- top: calc(100% + 6px);
655
- left: 50%;
656
- transform: translateX(-50%);
657
- min-width: 270px;
658
- padding: 5px 5px;
659
- border-radius: 0.4rem;
660
- z-index: 2;
661
- background-color: var(--invalid-background-color);
662
- color: var(--invalid-font-color);
663
- &::after {
664
- content: "";
665
- position: absolute;
666
- top: 0;
667
- left: 50%;
668
- width: 0;
669
- height: 0;
670
- border: 7px solid transparent;
671
- border-bottom-color: var(--invalid-border-color);
672
- border-top: 0;
673
- border-left: 0;
674
- margin-left: -3.5px;
675
- margin-top: -7px;
676
- }
677
- }
678
- }
679
-
680
- .valid {
681
- > .grid-column.required {
682
- .df-field .help-icon {
683
- display: block;
684
- background-image: url("data:image/svg+xml; base64, PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHN0eWxlPSImIzEwOyAgICBmaWxsOiAjMTlhOTc0OyYjMTA7Ij48cGF0aCBkPSJNMzc4LTI0NiAxNTQtNDcwbDQzLTQzIDE4MSAxODEgMzg0LTM4NCA0MyA0My00MjcgNDI3WiIvPjwvc3ZnPg==");
685
- }
686
- }
687
- }
688
- }
689
- }
690
- }
691
- }
1
+ // Entry point: 각 파일은 mixin 만 정의하고, .daracl-form 스코프는 여기서 한 번만 감싼다.
2
+ // 출력 순서가 기존 CSS 와 동일하도록 theme -> base -> components 순으로 include 한다.
3
+ @use "sass:map";
4
+ @use "themes";
5
+ @use "base" as *;
6
+ @use "components" as *;
7
+
8
+ /* ==========================================================================
9
+ Theme
10
+ ========================================================================== */
11
+ $default-theme: themes.$default-theme;
12
+
13
+ /* ==========================================================================
14
+ Common
15
+ ========================================================================== */
16
+ .daracl-form {
17
+ background: var(--body-bg);
18
+
19
+ @include themes.theme(map.get(themes.$themes, $default-theme));
20
+ @include df-base;
21
+ @include df-label;
22
+ @include df-form-field;
23
+ @include df-row;
24
+ @include df-field-container;
25
+ @include df-file-list;
26
+ @include df-field-group;
27
+ @include df-tab;
28
+ @include df-button;
29
+ @include df-icon;
30
+ @include df-form-group;
31
+ @include df-grid-field;
32
+ }
33
+
34
+ // Global theme
35
+ @each $name, $theme-value in themes.$themes {
36
+ @if $name != $default-theme {
37
+ [data-daracl-theme="#{$name}"] {
38
+ .daracl-form {
39
+ @include themes.theme($theme-value);
40
+ }
41
+ }
42
+ }
43
+ }
44
+
45
+ // 그 외 테마: body.<name> 또는 .daracl-form.<name>
46
+ @each $name, $theme-value in themes.$themes {
47
+ @if $name != $default-theme {
48
+ body.#{$name} .daracl-form,
49
+ .daracl-form.#{$name} {
50
+ @include themes.theme($theme-value);
51
+ }
52
+ }
53
+ }