@daracl/form 0.0.12 → 0.0.14

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 (49) 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/main.css +1 -1
  6. package/package.json +5 -7
  7. package/src/DaraForm.ts +0 -431
  8. package/src/FieldInfoMap.ts +0 -356
  9. package/src/FormTemplate.ts +0 -207
  10. package/src/constants.ts +0 -100
  11. package/src/event/renderEvents.ts +0 -41
  12. package/src/index copy.html +0 -591
  13. package/src/index-grid.html +0 -655
  14. package/src/index-tab.html +0 -639
  15. package/src/index.html +0 -485
  16. package/src/indexVender.ts +0 -9
  17. package/src/renderer/ButtonRender.ts +0 -51
  18. package/src/renderer/CheckboxRender.ts +0 -214
  19. package/src/renderer/CustomRender.ts +0 -100
  20. package/src/renderer/DateRender.ts +0 -104
  21. package/src/renderer/DropdownRender.ts +0 -149
  22. package/src/renderer/FileRender.ts +0 -239
  23. package/src/renderer/GridRender.ts +0 -289
  24. package/src/renderer/GroupRender.ts +0 -47
  25. package/src/renderer/HiddenRender.ts +0 -36
  26. package/src/renderer/NumberRender.ts +0 -68
  27. package/src/renderer/PasswordRender.ts +0 -69
  28. package/src/renderer/RadioRender.ts +0 -191
  29. package/src/renderer/RangeRender.ts +0 -79
  30. package/src/renderer/Render.ts +0 -194
  31. package/src/renderer/TabRender.ts +0 -229
  32. package/src/renderer/TextAreaRender.ts +0 -72
  33. package/src/renderer/TextRender.ts +0 -68
  34. package/src/rule/fileValidator.ts +0 -26
  35. package/src/rule/numberValidator.ts +0 -96
  36. package/src/rule/regexpValidator.ts +0 -45
  37. package/src/rule/stringValidator.ts +0 -64
  38. package/src/rule/validator.ts +0 -49
  39. package/src/types/DataMap.d.ts +0 -17
  40. package/src/types/DateTimePicker.d.ts +0 -5
  41. package/src/types/FormField.d.ts +0 -129
  42. package/src/types/FormOptions.d.ts +0 -91
  43. package/src/types/Message.d.ts +0 -40
  44. package/src/types/ValidResult.d.ts +0 -9
  45. package/src/util/Lanauage.ts +0 -127
  46. package/src/util/renderFactory.ts +0 -26
  47. package/src/util/styleUtils.ts +0 -85
  48. package/src/util/utils.ts +0 -283
  49. 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>