@daracl/form 0.0.11 → 0.0.13

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 (50) hide show
  1. package/dist/daracl.form.js +2 -2
  2. package/dist/daracl.form.min.js +2 -2
  3. package/dist/daracl.form.min.js.LICENSE.txt +1 -1
  4. package/dist/daracl.vender.min.js +1 -1
  5. package/dist/index.html +3 -4
  6. package/dist/main.css +1 -1
  7. package/dist/types/DateTimePicker.d.ts +5 -0
  8. package/package.json +3 -5
  9. package/src/DaraForm.ts +0 -431
  10. package/src/FieldInfoMap.ts +0 -356
  11. package/src/FormTemplate.ts +0 -207
  12. package/src/constants.ts +0 -100
  13. package/src/event/renderEvents.ts +0 -41
  14. package/src/index copy.html +0 -591
  15. package/src/index-grid.html +0 -655
  16. package/src/index-tab.html +0 -639
  17. package/src/index.html +0 -485
  18. package/src/indexVender.ts +0 -9
  19. package/src/renderer/ButtonRender.ts +0 -51
  20. package/src/renderer/CheckboxRender.ts +0 -214
  21. package/src/renderer/CustomRender.ts +0 -100
  22. package/src/renderer/DateRender.ts +0 -104
  23. package/src/renderer/DropdownRender.ts +0 -149
  24. package/src/renderer/FileRender.ts +0 -239
  25. package/src/renderer/GridRender.ts +0 -289
  26. package/src/renderer/GroupRender.ts +0 -47
  27. package/src/renderer/HiddenRender.ts +0 -36
  28. package/src/renderer/NumberRender.ts +0 -68
  29. package/src/renderer/PasswordRender.ts +0 -69
  30. package/src/renderer/RadioRender.ts +0 -191
  31. package/src/renderer/RangeRender.ts +0 -79
  32. package/src/renderer/Render.ts +0 -194
  33. package/src/renderer/TabRender.ts +0 -229
  34. package/src/renderer/TextAreaRender.ts +0 -72
  35. package/src/renderer/TextRender.ts +0 -68
  36. package/src/rule/fileValidator.ts +0 -26
  37. package/src/rule/numberValidator.ts +0 -96
  38. package/src/rule/regexpValidator.ts +0 -45
  39. package/src/rule/stringValidator.ts +0 -64
  40. package/src/rule/validator.ts +0 -49
  41. package/src/types/DataMap.d.ts +0 -17
  42. package/src/types/FormField.d.ts +0 -129
  43. package/src/types/FormOptions.d.ts +0 -91
  44. package/src/types/Message.d.ts +0 -40
  45. package/src/types/ValidResult.d.ts +0 -9
  46. package/src/util/Lanauage.ts +0 -127
  47. package/src/util/renderFactory.ts +0 -26
  48. package/src/util/styleUtils.ts +0 -85
  49. package/src/util/utils.ts +0 -283
  50. package/src/util/validUtils.ts +0 -53
@@ -1,655 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
-
4
- <head>
5
- <meta charset="utf-8" />
6
- <title>Dara Form</title>
7
- </head>
8
-
9
- <body>
10
- <div class="header">
11
- <div class="form-button">
12
- <button type="button" onclick="formObj.addItem()">Add</button>
13
- <button type="button" onclick="formObj.getValue()">getValue</button>
14
- <button type="button" onclick="formObj.getValuePromise()">getValue(true)</button>
15
- <button type="button" onclick="formObj.setValue()">setValue()</button>
16
- <button type="button" onclick="formObj.isValidForm()">valid check</button>
17
- <button type="button" onclick="formObj.resetForm()">Reset</button>
18
- <button type="button" onclick="formObj.setFieldItems()">setFieldItems</button>
19
- </div>
20
-
21
- <div>
22
- Theme : <label>Light<input type="radio" name="theme-toggle" value="light" checked="true"></label>
23
- <label>Dark<input type="radio" name="theme-toggle" value="dark"></label>
24
- </div>
25
- </div>
26
-
27
- <div style="padding: 0px 20px">
28
- <form id="loginForm" class="login-form"></form>
29
-
30
- <form id="formArea" class="test-form aaa-test"></form>
31
-
32
- </div>
33
- </body>
34
-
35
- </html>
36
- <style>
37
- .form-button {
38
- text-align: center;
39
- }
40
-
41
- :root {
42
- --bg: #ffffff;
43
- --bg-color: #070d19;
44
-
45
- }
46
-
47
- body.dark {
48
- --bg: #070d19;
49
- --bg-color: #ffffff;
50
-
51
- }
52
-
53
- body {
54
- background-color: var(--bg);
55
- }
56
-
57
- .header {
58
- color: var(--bg-color);
59
- }
60
- </style>
61
- <script type="module">
62
-
63
- const THEME_KEY = "form-theme";
64
- const theme = localStorage.getItem(THEME_KEY);
65
-
66
- if (theme) setMainTheme(theme);
67
-
68
- function setMainTheme(theme, persist = false) {
69
- const classList = document.body.classList;
70
-
71
- classList.remove("light", "dark");
72
-
73
- classList.add(theme);
74
-
75
- if (persist) {
76
- localStorage.setItem(THEME_KEY, theme);
77
- }
78
- }
79
-
80
- function load() {
81
- // theme
82
- const toggler = document.querySelectorAll('[name="theme-toggle"]');
83
- const theme = localStorage.getItem(THEME_KEY);
84
-
85
- if (toggler) {
86
- if (theme === "dark") {
87
- document.querySelector('[name="theme-toggle"][value="dark"]').checked = true;
88
- }
89
-
90
- toggler.forEach((el) => {
91
- el.addEventListener("click", (e) => {
92
- setMainTheme(el.value, true);
93
- });
94
- })
95
- }
96
- }
97
- load();
98
-
99
- const loginForm = Daracl.form.create(document.getElementById("loginForm"), {
100
- message: "This value is not valid",
101
- //mode: 'vertical',
102
- //autoFocus: false,
103
- style: {
104
- //width: '600px',
105
- position: 'left',
106
- labelWidth: '3'
107
-
108
- },
109
- mode: 'write',
110
- // form load 이후 호출.
111
- onMounted: function () {
112
- console.log(this)
113
- },
114
- message: {
115
- empty: "{name} 필수 입력사항입니다.",
116
- string: {
117
- minLength: "{size} 글자 이상 입력해야합니다.",
118
- maxLength: "{size} 글자 이상 입력할 수 없습니다.",
119
- },
120
- number: {
121
- minimum: "{size} 보다 커야 합니다",
122
- miximum: "{size} 보다 커야 합니다",
123
- },
124
- regexp: {
125
- email: "이메일이 유효하지 않습니다.",
126
- url: "URL이 유효하지 않습니다.",
127
- },
128
- },
129
- fields: [
130
- {
131
- name: "\"uid<div>",
132
- required: true,
133
- label: "아이디",
134
- tooltip: "아이디를 넣어주세요.",
135
- placeholder: "아이디를 넣어주세요.",
136
- renderType: "text",
137
- }
138
- , {
139
- name: "password",
140
- label: "패스워드",
141
- description: "비밀번호는 대문자 소문자 포함입니다.",
142
- placeholder: "패스워드를 입력하세요",
143
- renderType: "password",
144
- }
145
- , {
146
- name: "sex",
147
- label: "남성/여성",
148
- renderType: "checkbox",
149
- listItem: {
150
- list: [
151
- { label: "", value: "Y", selected: true },
152
- ],
153
- }
154
- }
155
- , {
156
- name: "grid",
157
- label: "grid",
158
- renderType: "grid",
159
- gridOptions: {
160
- disableAddButton: false,
161
- disableRemoveButton: false,
162
- height: '200px',
163
- }
164
- , children: [
165
- {
166
- name: "key",
167
- label: "key",
168
- renderType: "text",
169
- required: true,
170
- style: {
171
- width: '200px'
172
- },
173
- rule: {
174
- minLength: 2,
175
- maxLength: 100,
176
- },
177
- }
178
- , {
179
- name: "value",
180
- label: "value",
181
- renderType: "text",
182
- }
183
- , {
184
- name: "cre",
185
- label: "성별",
186
- required: true,
187
- renderType: "dropdown",
188
- listItem: {
189
- labelField: "credName",
190
- valueField: "credId",
191
- list: [{ label: "선택하세요." }, { credId: "credId", credName: "credName" }],
192
- }
193
- },
194
- ],
195
-
196
- }
197
- ]
198
- });
199
-
200
- var formInfo = {
201
- message: "This value is not valid",
202
- //mode: 'vertical',
203
- //autoFocus: false,
204
- style: {
205
- //width: '600px',
206
- position: 'left-left',
207
- labelWidth: '3'
208
-
209
- },
210
- // form load 이후 호출.
211
- onMounted: function () {
212
- console.log(this)
213
- },
214
- message: {
215
- empty: "{name} 필수 입력사항입니다.",
216
- string: {
217
- minLength: "{size} 글자 이상 입력해야합니다.",
218
- maxLength: "{size} 글자 이상 입력할 수 없습니다.",
219
- },
220
- number: {
221
- minimum: "{size} 보다 커야 합니다",
222
- miximum: "{size} 보다 커야 합니다",
223
- },
224
- regexp: {
225
- email: "이메일이 유효하지 않습니다.",
226
- url: "URL이 유효하지 않습니다.",
227
- },
228
- },
229
- fields: [
230
- {
231
- name: "hiddenMode",
232
- renderType: "hidden",
233
- defaultValue: "asdf",
234
- },
235
- {
236
- name: "uid",
237
- label: "아이디",
238
- tooltip: "아이디를 넣어주세요.",
239
- description: "설명설명설명",
240
- placeholder: "아이디를 넣어주세요.",
241
- renderType: "tab",
242
- style: {
243
- labelHide: false,
244
- position: 'top-left'
245
- },
246
- children: [
247
- {
248
- label: 'tab1'
249
- , description: 'tabl 설명'
250
- , children: [
251
- {
252
- name: "uname222",
253
- label: "tab-이름",
254
- style: {
255
- customClass: 'custom-class',
256
- position: 'left',
257
- labelWidth: '120px',
258
- labelHide: false,
259
- }
260
- , rule: {
261
- minLength: 2,
262
- maxLength: 100,
263
- },
264
- onChange: (arg) => {
265
- console.log(arg);
266
- },
267
- }
268
- , {
269
- name: "uname222333",
270
- label: "tab11-이름",
271
- tooltip: "아이디를 넣어주세요.",
272
- rule: {
273
- minLength: 2,
274
- maxLength: 100,
275
- },
276
- onChange: (arg) => {
277
- console.log(arg);
278
- },
279
- }
280
-
281
- , {
282
- label: "child tab",
283
- renderType: "tab",
284
- style: {
285
- //labelHide: true
286
- position: 'top-center'
287
- }
288
- , children: [
289
- {
290
- label: 'child-tab1'
291
- , description: 'tabl 설명'
292
- , children: [
293
- {
294
- name: "child-uname222",
295
- label: "tab-이름",
296
- style: {
297
- customClass: 'custom-class',
298
- position: 'left',
299
- labelWidth: '120px',
300
- labelHide: false,
301
- }
302
- }
303
- ]
304
- }
305
- , {
306
- label: 'child-uname2-tab2'
307
- , children: [
308
- {
309
- name: "child-uname333",
310
- label: "tab",
311
-
312
- rule: {
313
- minLength: 2,
314
- maxLength: 100,
315
- },
316
- onChange: (arg) => {
317
- console.log(arg);
318
- },
319
- }
320
- ]
321
- }
322
- ]
323
- }
324
- ]
325
- }
326
- , {
327
- label: 'tab2'
328
- , children: [
329
- {
330
- name: "uname333",
331
- label: "tab-22222222222222222222222222222222",
332
- rule: {
333
- minLength: 2,
334
- maxLength: 100,
335
- },
336
- onChange: (arg) => {
337
- console.log(arg);
338
- },
339
- }
340
- ]
341
- }
342
- ]
343
- },
344
- {
345
- name: "uname",
346
- label: "이름222222",
347
- renderType: 'custom',
348
- template: '<div id="customElementID">111</div>',
349
- required: true,
350
- rule: {
351
- minLength: 2,
352
- maxLength: 100,
353
- },
354
- onChange: (arg) => {
355
- console.log(arg);
356
- },
357
- renderer: {
358
- mounted: () => {
359
- console.log(document.getElementById('customElementID'))
360
- }
361
- , getValue() {
362
- return '21';
363
- }
364
- , valid(field, rowElement) {
365
- const val = this.getValue();
366
- return { name: field.name, message: 'custom type not valid' };
367
- }
368
- }
369
- },
370
- {
371
- label: '비밀번호'
372
- , orientation: 'vertical'
373
- , conditional: {
374
- show: true,
375
- custom: function () {
376
-
377
- return true;
378
- }
379
- }
380
- , children: [{
381
- name: 'upw'
382
- , label: '비밀번호'
383
- , style: {
384
- labelHide: true
385
- }
386
- , renderType: 'password'
387
- , regexpType: 'number-char'
388
- , rule: {
389
- minLength: 3
390
- }
391
- , different: {
392
- field: 'uid',
393
- message: '아이디와 달라야 합니다.'
394
- }
395
- }
396
- , {
397
- name: 'confirmUpw'
398
- , label: '확인 비밀번호'
399
- , style: {
400
- labelHide: true
401
- }
402
- , renderType: 'password'
403
- , identical: {
404
- field: 'upw',
405
- message: '비밀번호가 같아야합니다.'
406
- }
407
- }]
408
- }
409
- , {
410
- name: "age",
411
- label: "생년월일",
412
- required: true,
413
- renderType: "date",
414
- customOptions: {
415
- mode: 'datetime'
416
- }
417
- },
418
- {
419
- name: "sex",
420
- label: "성별",
421
- required: true,
422
- renderType: "radio",
423
- listItem: {
424
- list: [
425
- { label: "남", value: "Y", selected: true },
426
- { label: "여", value: "X" },
427
- ],
428
- },
429
- },
430
- {
431
- name: "picture",
432
- label: "사진",
433
- required: true,
434
- renderType: "file",
435
- listItem: {
436
- list: [
437
- ],
438
- },
439
- },
440
-
441
- {
442
- name: "cmpCredId",
443
- label: "credentials",
444
- renderType: "dropdown",
445
- tooltip: "credentials 넣어주세요.",
446
- required: true,
447
- listItem: {
448
- labelField: "credName",
449
- valueField: "credId",
450
- list: [{ label: "선택하세요." }, { credId: "credId", credName: "credName" }],
451
- },
452
- description: "awefawfeawefawef",
453
- },
454
- {
455
- label: "checkbox",
456
-
457
- name: "checkbox11",
458
- required: true,
459
- renderType: "checkbox",
460
- defaultValue: '',
461
- listItem: {
462
- orientation: "horizontal", // 'vertical , horizontal'
463
- list: [
464
- { label: "checkbox value", value: "Y", selected: true }
465
- , { label: "checkbox value111", value: "Y1" }
466
- , { label: "checkbox value222", value: "Y2", disabled: true }
467
- , { label: "checkbox value333", value: "Y3" }
468
- ],
469
- },
470
- onChange: (arg) => {
471
- console.log(arg);
472
- },
473
- }
474
- , {
475
- label: "라벨주소",
476
- name: 'newAddress',
477
- renderType: 'radio',
478
- //defaultValue: 'N',
479
- listItem: {
480
- orientation: "horizontal", // 'vertical , horizontal'
481
- list: [
482
- { label: "추가1", value: "Y", selected: true },
483
- { label: "추가", value: "N" }
484
- ],
485
- }
486
- , description: `<div><a href="asdf">111111111111111</a></div>`
487
- , orientation: "horizontal" // 'vertical , horizontal'
488
- , conditional: {
489
- show: true,
490
- custom: function () {
491
- return true;
492
- },
493
- },
494
- children: [
495
-
496
- {
497
- name: "address32",
498
- label: "주소",
499
- orientation: 'vertical',
500
- style: {
501
- labelHide: false,
502
- position: 'left',
503
- labelWidth: '120px',
504
- },
505
- required: true,
506
- rule: {
507
- minLength: 2,
508
- maxLength: 100,
509
- },
510
- conditional: {
511
- show: false,
512
- field: "newAddress",
513
- eq: "N",
514
- //custom?: OptionCallback
515
- }
516
- },
517
- {
518
- name: "address",
519
- label: "주소2",
520
- hideLabel: true,
521
- required: true,
522
- style: {
523
- labelHide: false,
524
- },
525
- rule: {
526
- minLength: 2,
527
- maxLength: 100,
528
- },
529
- conditional: {
530
- show: true,
531
- custom: function () {
532
- return true;
533
- },
534
- },
535
- },
536
- {
537
- name: "address2",
538
- label: "주소3",
539
- style: {
540
- //width: '200px',
541
- labelHide: false,
542
- position: 'left'
543
- },
544
- required: true,
545
- rule: {
546
- minLength: 2,
547
- maxLength: 100,
548
- },
549
- conditional: {
550
- show: true,
551
- field: "newAddress",
552
- eq: "Y",
553
- //custom?: OptionCallback
554
- },
555
- },
556
- {
557
- renderType: "text",
558
- label: "주소 하위1",
559
- //childLabelWidth: "",
560
- orientation: "horizontal", // 'vertical , horizontal, horizontal-row'
561
- style: {
562
- labelWidth: "200px",
563
- labelHide: false
564
- },
565
- conditional: {
566
- show: true,
567
- custom: function () {
568
- return true;
569
- },
570
- },
571
- children: [
572
- {
573
- name: "address22222",
574
- label: "주소1",
575
- labelWidth: "150px",
576
- },
577
- {
578
- name: "address222333322",
579
- label: "주소2",
580
- renderType: "text",
581
- },
582
- ],
583
- },
584
- {
585
- label: "버튼",
586
- hideLabel: true,
587
- renderType: "button",
588
- onClick: (arg) => {
589
- console.log(arg);
590
- },
591
- },
592
- ],
593
- },
594
- ],
595
- };
596
-
597
- var rowIdx = 0;
598
- var formBuilder;
599
- var formObj = {
600
- load: () => {
601
- formBuilder = loginForm;
602
- //formBuilder = Daracl.form.create("#formArea", formInfo);
603
- },
604
- addItem: () => {
605
- rowIdx += 1;
606
- formBuilder.addField({
607
- name: `addItem${rowIdx}`,
608
- label: `추가컬럼${rowIdx}`,
609
- maxLength: 100,
610
- required: true,
611
- });
612
- },
613
- getValue: () => {
614
- alert(JSON.stringify(loginForm.getValue()));
615
- },
616
- getValuePromise: () => {
617
- formBuilder
618
- .getFormDataValue(true)
619
- .then((aa) => {
620
- console.log(aa);
621
-
622
- for (let [name, value] of aa.entries()) {
623
- console.log(`${name} : ${value}`);
624
- }
625
-
626
- alert("form data console 확인");
627
- })
628
- .catch((e) => {
629
- alert(e.message);
630
- });
631
- },
632
- setFieldItems: () => {
633
- formBuilder.setFieldItems("picture", [
634
- { fileId: "test1", fileName: "aaa.zip" },
635
- { fileId: "test2", fileName: "bbb.zip" },
636
- ]);
637
- formBuilder.setValue({ sex: "X" }, false);
638
- },
639
-
640
- setValue: () => {
641
- formBuilder.setValue({
642
- grid: [
643
- { key: 'aaa', value: 'bbb', cre: 'credId' },
644
- { key: 'key임', value: 'value임', cre: 'credId' }
645
- ]
646
- }, false);
647
- },
648
- };
649
-
650
- formObj.load();
651
-
652
- window.formBuilder = formBuilder;
653
- window.formObj = formObj;
654
- window.loginForm = loginForm;
655
- </script>