@daracl/form 0.0.12 → 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 (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 +3 -5
  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
package/src/index.html DELETED
@@ -1,485 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
-
4
- <head>
5
- <meta charset="utf-8" />
6
- <title>Dara Form</title>
7
- <script src="/dist/daracl.vender.min.js"></script>
8
- <link href="/dist/daracl.vender.min.css" rel="stylesheet">
9
- </head>
10
-
11
- <body>
12
- <div class="header">
13
- <div class="form-button">
14
- <button type="button" onclick="formObj.addItem()">Add</button>
15
- <button type="button" onclick="formObj.getValue()">getValue</button>
16
- <button type="button" onclick="formObj.getValuePromise()">getValue(true)</button>
17
- <button type="button" onclick="formObj.setValue()">setValue()</button>
18
- <button type="button" onclick="formBuilder.isValidForm()">valid check</button>
19
- <button type="button" onclick="formBuilder.resetForm()">Reset</button>
20
- <button type="button" onclick="formBuilder.setFieldItems()">setFieldItems</button>
21
- </div>
22
-
23
- <div>
24
- Theme : <label>Light<input type="radio" name="theme-toggle" value="light" checked="true"></label>
25
- <label>Dark<input type="radio" name="theme-toggle" value="dark"></label>
26
- </div>
27
- </div>
28
-
29
- <div style="padding: 0px 20px">
30
- <form id="loginForm" class="login-form"></form>
31
-
32
- <form id="formArea" class="test-form aaa-test"></form>
33
-
34
- </div>
35
- </body>
36
-
37
- </html>
38
- <style>
39
- .form-button {
40
- text-align: center;
41
- }
42
-
43
- :root {
44
- --bg: #ffffff;
45
- --bg-color: #070d19;
46
-
47
- }
48
-
49
- body.dark {
50
- --bg: #070d19;
51
- --bg-color: #ffffff;
52
-
53
- }
54
-
55
- body {
56
- background-color: var(--bg);
57
- }
58
-
59
- .header {
60
- color: var(--bg-color);
61
- }
62
- </style>
63
- <script>
64
-
65
- const THEME_KEY = "form-theme";
66
- const theme = localStorage.getItem(THEME_KEY);
67
-
68
- if (theme) setMainTheme(theme);
69
-
70
- function setMainTheme(theme, persist = false) {
71
- const classList = document.body.classList;
72
-
73
- classList.remove("light", "dark");
74
-
75
- classList.add(theme);
76
-
77
- if (persist) {
78
- localStorage.setItem(THEME_KEY, theme);
79
- }
80
- }
81
-
82
- function load() {
83
- // theme
84
- const toggler = document.querySelectorAll('[name="theme-toggle"]');
85
- const theme = localStorage.getItem(THEME_KEY);
86
-
87
- if (toggler) {
88
- if (theme === "dark") {
89
- document.querySelector('[name="theme-toggle"][value="dark"]').checked = true;
90
- }
91
-
92
- toggler.forEach((el) => {
93
- el.addEventListener("click", (e) => {
94
- setMainTheme(el.value, true);
95
- });
96
- })
97
- }
98
- }
99
- load();
100
-
101
- var formInfo = {
102
- message: "This value is not valid",
103
- //mode: 'vertical',
104
- //autoFocus: false,
105
- //useTypeValue: false,
106
- style: {
107
- //width: '600px',
108
- position: 'left-left',
109
- labelWidth: '3'
110
-
111
- },
112
- // form load 이후 호출.
113
- onMounted: function () {
114
- console.log(this)
115
- },
116
- message: {
117
- empty: "{name} 필수 입력사항입니다.",
118
- string: {
119
- minLength: "{size} 글자 이상 입력해야합니다.",
120
- maxLength: "{size} 글자 이상 입력할 수 없습니다.",
121
- },
122
- number: {
123
- minimum: "{size} 보다 커야 합니다",
124
- miximum: "{size} 보다 커야 합니다",
125
- },
126
- regexp: {
127
- email: "이메일이 유효하지 않습니다.",
128
- url: "URL이 유효하지 않습니다.",
129
- },
130
- },
131
- fields: [
132
- {
133
- name: "hiddenMode",
134
- renderType: "hidden",
135
- defaultValue: "asdf",
136
- },
137
- {
138
- name: "uname",
139
- label: "Text",
140
- renderType: 'text',
141
- template: '<div id="customElementID">111</div>',
142
- required: true,
143
- rule: {
144
- minLength: 2,
145
- maxLength: 100,
146
- },
147
- onChange: (arg) => {
148
- console.log(arg);
149
- },
150
- renderer: {
151
- mounted: () => {
152
- console.log(document.getElementById('customElementID'))
153
- }
154
- , getValue() {
155
- return '21';
156
- }
157
- , valid1(field, rowElement) {
158
- const val = this.getValue();
159
- return { name: field.name, message: 'custom type not valid' };
160
- }
161
- }
162
- },
163
- , {
164
- name: "cmpCredId111",
165
- label: "Dropdown",
166
- renderType: "dropdown",
167
- tooltip: "credentials 넣어주세요.",
168
- defaultValue: '222',
169
- required: true,
170
- listItem: {
171
- labelField: "credName",
172
- valueField: "credId",
173
- list: [{ credId: "11", credName: "credNam11" }, { credId: "22", credName: "credName" }, { credId: "33", credName: "credName33" }],
174
- },
175
- description: "drop down 설명",
176
- onChange: (aaa) => {
177
- console.log(aaa)
178
-
179
- if (aaa.newValue == '22') return false;
180
-
181
- return true;
182
- }
183
- },
184
-
185
-
186
- {
187
- label: 'Password'
188
- , orientation: 'vertical'
189
- , conditional: {
190
- show: true,
191
- custom: function () {
192
-
193
- return true;
194
- }
195
- }
196
- , children: [{
197
- name: 'upw'
198
- , label: '비밀번호'
199
- , style: {
200
- labelHide: true
201
- }
202
- , renderType: 'password'
203
- , regexpType: 'number-char'
204
- , rule: {
205
- minLength: 3
206
- }
207
- , different: {
208
- field: 'uid',
209
- message: '아이디와 달라야 합니다.'
210
- }
211
- }
212
- , {
213
- name: 'confirmUpw'
214
- , label: '확인 비밀번호'
215
- , style: {
216
- labelHide: true
217
- }
218
- , renderType: 'password'
219
- , identical: {
220
- field: 'upw',
221
- message: '비밀번호가 같아야합니다.'
222
- }
223
- }]
224
- }
225
-
226
- , {
227
- name: "birth",
228
- label: "Date",
229
- required: true,
230
- renderType: "date",
231
- customOptions: {
232
- mode: 'date'
233
- }
234
- },
235
- {
236
- name: "sex",
237
- label: "Radio",
238
- required: true,
239
- renderType: "radio",
240
- listItem: {
241
- list: [
242
- { label: "남", value: "Y", selected: true },
243
- { label: "여", value: "X" },
244
- ],
245
- },
246
- },
247
- {
248
- name: "picture",
249
- label: "File",
250
- required: true,
251
- renderType: "file",
252
- listItem: {
253
- list: [
254
- ],
255
- },
256
- },
257
-
258
-
259
- {
260
- label: "Checkbox",
261
-
262
- name: "checkbox11",
263
- required: true,
264
- renderType: "checkbox",
265
- defaultValue: '',
266
- listItem: {
267
- orientation: "horizontal", // 'vertical , horizontal'
268
- list: [
269
- { label: "checkbox value", value: "Y", selected: true }
270
- , { label: "checkbox value111", value: "Y1" }
271
- , { label: "checkbox value222", value: "Y2", disabled: true }
272
- , { label: "checkbox value333", value: "Y3" }
273
- ],
274
- },
275
- onChange: (arg) => {
276
- console.log(arg);
277
- },
278
- }
279
- , {
280
- label: "라벨주소",
281
- name: 'newAddress',
282
- renderType: 'radio',
283
- //defaultValue: 'N',
284
- listItem: {
285
- orientation: "horizontal", // 'vertical , horizontal'
286
- list: [
287
- { label: "추가1", value: "Y", selected: true },
288
- { label: "추가", value: "N" }
289
- ],
290
- }
291
- , description: `<div><a href="asdf">111111111111111</a></div>`
292
- , orientation: "horizontal" // 'vertical , horizontal'
293
- , conditional: {
294
- show: true,
295
- custom: function () {
296
- return true;
297
- },
298
- },
299
- children: [
300
-
301
- {
302
- name: "address32",
303
- label: "주소",
304
- orientation: 'vertical',
305
- style: {
306
- labelHide: false,
307
- position: 'left',
308
- labelWidth: '120px',
309
- },
310
- required: true,
311
- rule: {
312
- minLength: 2,
313
- maxLength: 100,
314
- },
315
- conditional: {
316
- show: false,
317
- field: "newAddress",
318
- eq: "N",
319
- //custom?: OptionCallback
320
- }
321
- },
322
- {
323
- name: "address",
324
- label: "주소2",
325
- hideLabel: true,
326
- required: true,
327
- style: {
328
- labelHide: false,
329
- },
330
- rule: {
331
- minLength: 2,
332
- maxLength: 100,
333
- },
334
- conditional: {
335
- show: true,
336
- custom: function () {
337
- return true;
338
- },
339
- },
340
- },
341
- {
342
- name: "address2",
343
- label: "주소3",
344
- style: {
345
- //width: '200px',
346
- labelHide: false,
347
- position: 'left'
348
- },
349
- required: true,
350
- rule: {
351
- minLength: 2,
352
- maxLength: 100,
353
- },
354
- conditional: {
355
- show: true,
356
- field: "newAddress",
357
- eq: "Y",
358
- //custom?: OptionCallback
359
- },
360
- },
361
- {
362
- renderType: "text",
363
- label: "주소 하위1",
364
- //childLabelWidth: "",
365
- orientation: "horizontal", // 'vertical , horizontal, horizontal-row'
366
- style: {
367
- labelWidth: "200px",
368
- labelHide: false
369
- },
370
- conditional: {
371
- show: true,
372
- custom: function () {
373
- return true;
374
- },
375
- },
376
- children: [
377
- {
378
- name: "address22222",
379
- label: "주소1",
380
- labelWidth: "150px",
381
- },
382
- {
383
- name: "address222333322",
384
- label: "주소2",
385
- renderType: "text",
386
- },
387
- ],
388
- },
389
- {
390
- label: "버튼",
391
- hideLabel: true,
392
- renderType: "button",
393
- onClick: (arg) => {
394
- console.log(arg);
395
- },
396
- },
397
- ],
398
- },
399
-
400
- ],
401
- };
402
-
403
-
404
- var rowIdx = 0;
405
- var formBuilder;
406
- var formObj = {
407
- load: () => {
408
- // formBuilder = loginForm;
409
- formBuilder = Daracl.form.create(document.getElementById("formArea"), formInfo);
410
- },
411
- addItem: () => {
412
- rowIdx += 1;
413
- formBuilder.addField({
414
- name: `addItem${rowIdx}`,
415
- label: `추가컬럼${rowIdx}`,
416
- maxLength: 100,
417
- required: true,
418
- });
419
- },
420
- getValue: () => {
421
- let formValue = formBuilder.getValue();
422
- console.log('getValue : ', formValue, JSON.stringify(formValue))
423
- alert('파일은 콘솔 확인\n' + JSON.stringify(formValue));
424
- },
425
- getValuePromise: () => {
426
- formBuilder
427
- .getValue(true)
428
- .then((aa) => {
429
- console.log(aa);
430
-
431
- for (let [name, value] of aa.entries()) {
432
- console.log(`${name} : ${value}`);
433
- }
434
-
435
- alert("form data console 확인");
436
- })
437
- .catch((e) => {
438
- alert(e.message);
439
- });
440
- },
441
- setFieldItems: () => {
442
- formBuilder.setFieldItems("picture", [
443
- { fileId: "test1", fileName: "aaa.zip" },
444
- { fileId: "test2", fileName: "bbb.zip" },
445
- ]);
446
- formBuilder.setValue({ sex: "X" }, false);
447
- },
448
-
449
- setValue: () => {
450
- formBuilder.setValue(
451
- {
452
- "hiddenMode": "asdf",
453
- "이름222222": "이름222222",
454
- "tab": {
455
- "tab1": {
456
- "tabPicture": [{ fileId: "test1", fileName: "aaa.zip" }],
457
- "tabPictureRemoveIds": [],
458
- "grid": [
459
- { key: 'aaa', value: 'bbb', cre: 'credId' },
460
- { key: 'key임', value: 'value임', cre: 'credId' }
461
- ],
462
- "uname222": "uname222vvvv",
463
- "uname222333": "uname222333vvvv",
464
- "child tab": {
465
- "child-tab1": {
466
- "child-uname222": "child-uname222 uname222"
467
- },
468
- "child-uname2-tab2": {
469
- "child-uname333": "child-uname2-tab2 uname333"
470
- }
471
- }
472
- },
473
- "tab2": {
474
- "uname333": "tab2 uname333 value"
475
- }
476
- }
477
- }, false);
478
- },
479
- };
480
-
481
- formObj.load();
482
-
483
- window.formBuilder = formBuilder;
484
- window.formObj = formObj;
485
- </script>
@@ -1,9 +0,0 @@
1
- import DateTimePicker from "@daracl/datetimepicker";
2
- import Toast from "@daracl/toast";
3
-
4
- import "@daracl/datetimepicker/style/daracl.datetimepicker.scss";
5
- import "@daracl/toast/style/daracl.toast.scss";
6
-
7
- export const dateTimePicker = DateTimePicker;
8
-
9
- export const toast = Toast;
@@ -1,51 +0,0 @@
1
- import { FormField } from "@t/FormField";
2
- import Render from "./Render";
3
- import DaraForm from "src/DaraForm";
4
-
5
- export default class ButtonRender extends Render {
6
- constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {
7
- super(daraForm, field, rowElement);
8
- this.mounted();
9
- this.setDefaultOption();
10
- }
11
-
12
- mounted() {
13
- this.rowElement.querySelector(`#${this.field.$key}`)?.addEventListener("click", (evt) => {
14
- if (this.field.onClick) {
15
- this.field.onClick.call(null, this.field);
16
- }
17
- });
18
- }
19
-
20
- static isDataRender(): boolean {
21
- return false;
22
- }
23
-
24
- createField() {
25
- const field = this.field;
26
-
27
- const fieldContainerElement = this.rowElement.querySelector(".df-field-container") as HTMLElement;
28
-
29
- fieldContainerElement.innerHTML = `
30
- <button type="button" id="${field.$key}" class="df-btn">${field.label}</button> ${Render.getDescriptionTemplate(field)}
31
- `;
32
- }
33
-
34
- getValue() {
35
- return "";
36
- }
37
-
38
- setValue(value: any): void {}
39
-
40
- reset() {
41
- this.setDisabled(false);
42
- }
43
-
44
- getElement() {
45
- return null;
46
- }
47
-
48
- valid(): any {
49
- return true;
50
- }
51
- }