@daracl/form 0.0.16 → 0.0.18

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 (92) 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 +688 -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 +4477 -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 +1806 -519
  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 +4090 -3101
  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 +2910 -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 +59 -0
  54. package/style/base/_index.scss +1 -0
  55. package/style/components/_button.scss +16 -0
  56. package/style/components/_field-container.scss +41 -0
  57. package/style/components/_field-group.scss +16 -0
  58. package/style/components/_file-list.scss +33 -0
  59. package/style/components/_form-field.scss +47 -0
  60. package/style/components/_form-group.scss +90 -0
  61. package/style/components/_grid-field.scss +121 -0
  62. package/style/components/_icon.scss +16 -0
  63. package/style/components/_index.scss +11 -0
  64. package/style/components/_label.scss +59 -0
  65. package/style/components/_row.scss +88 -0
  66. package/style/components/_tab.scss +70 -0
  67. package/{dist/index.css → style/daracl.form.css} +19 -66
  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 +44 -691
  72. package/style/themes/_common.scss +13 -0
  73. package/style/themes/_dark.scss +20 -0
  74. package/style/themes/_index.scss +14 -0
  75. package/style/themes/_light.scss +20 -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/dist/types/DateTimePicker.d.ts +0 -5
  91. package/src/index.ts +0 -5
  92. /package/dist/util/{Lanauage.d.ts → Language.d.ts} +0 -0
package/dist/index.cjs CHANGED
@@ -1,36 +1,14 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __copyProps = (to, from, except, desc) => {
9
- if (from && typeof from === "object" || typeof from === "function") {
10
- for (let key of __getOwnPropNames(from))
11
- if (!__hasOwnProp.call(to, key) && key !== except)
12
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
13
- }
14
- return to;
15
- };
16
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
17
- // If the importer is in node compatibility mode or this is not an ESM
18
- // file that has been converted to a CommonJS file using a Babel-
19
- // compatible transform (i.e. "__esModule" has not been set), then set
20
- // "default" to the CommonJS "module.exports" for node compatibility.
21
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
- mod
23
- ));
24
-
25
- // src/util/utils.ts
26
- var xssFilter = {
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const core = require("@daracl/core");
4
+ const xssFilter = {
27
5
  "&": "&",
28
6
  "<": "&lt;",
29
7
  ">": "&gt;",
30
8
  '"': "&quot;",
31
9
  "'": "&#39;"
32
10
  };
33
- var replaceXss = (inputText) => {
11
+ const replaceXss = (inputText) => {
34
12
  let returnText = inputText;
35
13
  if (returnText) {
36
14
  Object.keys(xssFilter).forEach((key) => {
@@ -39,55 +17,51 @@ var replaceXss = (inputText) => {
39
17
  }
40
18
  return returnText;
41
19
  };
42
- var hasOwnProp = (obj, key) => {
20
+ const hasOwnProp = (obj, key) => {
43
21
  return obj.hasOwnProperty(key);
44
22
  };
45
- var isBlank = (value) => {
46
- if (value === null)
47
- return true;
48
- if (value === "")
49
- return true;
50
- if (typeof value === "undefined")
51
- return true;
52
- if (typeof value === "string" && (value === "" || value.replace(/\s/g, "") === ""))
53
- return true;
23
+ const isBlank = (value) => {
24
+ if (value === null) return true;
25
+ if (value === "") return true;
26
+ if (typeof value === "undefined") return true;
27
+ if (typeof value === "string" && (value === "" || value.replace(/\s/g, "") === "")) return true;
54
28
  return false;
55
29
  };
56
- var isUndefined = (value) => {
30
+ const isUndefined = (value) => {
57
31
  return typeof value === "undefined";
58
32
  };
59
- var isFunction = (value) => {
33
+ const isFunction = (value) => {
60
34
  return typeof value === "function";
61
35
  };
62
- var isString = (value) => {
36
+ const isString = (value) => {
63
37
  return typeof value === "string";
64
38
  };
65
- var isNumber = (value) => {
39
+ const isNumber = (value) => {
66
40
  if (isBlank(value)) {
67
41
  return false;
68
42
  }
69
43
  value = +value;
70
44
  return !isNaN(value);
71
45
  };
72
- var isArray = (value) => {
73
- return Array.isArray(value);
46
+ const isArray = (value) => {
47
+ return core.isArray(value);
74
48
  };
75
- var isEmpty = (value) => isUndefined(value) || value == null;
76
- var isTabType = (field) => {
49
+ const isEmpty = (value) => isUndefined(value) || value == null;
50
+ const isTabType = (field) => {
77
51
  return field && field.renderType === "tab";
78
52
  };
79
- var isGridType = (field) => {
53
+ const isGridType = (field) => {
80
54
  return field && field.renderType === "grid";
81
55
  };
82
- var replaceXssField = (field) => {
56
+ const replaceXssField = (field) => {
83
57
  field.$xssName = getXssFieldName(field);
84
58
  field.label = replaceXss(field.label);
85
59
  return field;
86
60
  };
87
- var ignoreValueField = (field) => {
61
+ const ignoreValueField = (field) => {
88
62
  return isGridType(field.$parent) || isTabType(field.$parent);
89
63
  };
90
- var getXssFieldName = (field) => {
64
+ const getXssFieldName = (field) => {
91
65
  if (isUndefined(field.$xssName)) {
92
66
  let returnText = field.name;
93
67
  if (returnText) {
@@ -99,10 +73,9 @@ var getXssFieldName = (field) => {
99
73
  }
100
74
  return field.$xssName;
101
75
  };
102
- var getHashCode = (str) => {
76
+ const getHashCode = (str) => {
103
77
  let hash = 0;
104
- if (str.length == 0)
105
- return hash;
78
+ if (str.length == 0) return hash;
106
79
  for (let i = 0; i < str.length; i++) {
107
80
  let tmpChar = str.charCodeAt(i);
108
81
  hash = (hash << 5) - hash + tmpChar;
@@ -110,13 +83,13 @@ var getHashCode = (str) => {
110
83
  }
111
84
  return String(hash).replaceAll(/-/g, "_");
112
85
  };
113
- var isHiddenField = (field) => {
86
+ const isHiddenField = (field) => {
114
87
  if (field.renderType === "hidden") {
115
88
  return true;
116
89
  }
117
90
  return false;
118
91
  };
119
- var templateToElement = (htmlTemplate) => {
92
+ const templateToElement = (htmlTemplate) => {
120
93
  const template = document.createElement("template");
121
94
  template.innerHTML = htmlTemplate;
122
95
  return template.content.firstElementChild;
@@ -132,12 +105,12 @@ function isPlainObject(obj) {
132
105
  return Object.getPrototypeOf(obj) === proto;
133
106
  }
134
107
  function isObject(value) {
135
- return typeof value === "object" && value !== null && !Array.isArray(value);
108
+ return typeof value === "object" && value !== null && !isArray(value);
136
109
  }
137
110
  function isDate(value) {
138
111
  return value instanceof Date && !isNaN(value.valueOf());
139
112
  }
140
- var merge = (...value) => {
113
+ const merge = (...value) => {
141
114
  let reval = value[0];
142
115
  if (!isPlainObject(reval) || isEmpty(reval)) {
143
116
  return reval;
@@ -206,17 +179,15 @@ function cloneArrayDeep(dst, src) {
206
179
  }
207
180
  return dst;
208
181
  }
209
-
210
- // src/renderer/Render.ts
211
- var Render = class _Render {
182
+ class Render {
212
183
  constructor(form, field, rowElement) {
184
+ var _a;
213
185
  this.enableView = true;
214
186
  this.daraForm = form;
215
187
  this.field = field;
216
188
  this.rowElement = rowElement;
217
189
  this.createField();
218
- if (field.tooltip)
219
- rowElement.querySelector(".df-tooltip")?.setAttribute("tooltip", field.tooltip);
190
+ if (field.tooltip) (_a = rowElement.querySelector(".df-tooltip")) == null ? void 0 : _a.setAttribute("tooltip", field.tooltip);
220
191
  }
221
192
  setDefaultInfo() {
222
193
  if (isUndefined(this.field.defaultValue)) {
@@ -235,7 +206,8 @@ var Render = class _Render {
235
206
  this.setDisabled(this.field.disabled ?? false);
236
207
  }
237
208
  addChildField(element) {
238
- this.rowElement.querySelector(".df-field-container")?.append(element);
209
+ var _a;
210
+ (_a = this.rowElement.querySelector(".df-field-container")) == null ? void 0 : _a.append(element);
239
211
  }
240
212
  static isDataRender() {
241
213
  return true;
@@ -249,9 +221,12 @@ var Render = class _Render {
249
221
  setValueItems(value) {
250
222
  }
251
223
  static getDescriptionTemplate(field) {
252
- return field.description ? `<div class="df-description">${field.description}</div>` : "";
224
+ const classNames = field.descriptionClass ? replaceXss(field.descriptionClass) : "";
225
+ const style = field.descriptionStyle ? 'style="' + replaceXss(field.descriptionStyle) + '"' : "";
226
+ return field.description ? `<div class="df-description ${classNames}" ${style}>${field.description}</div>` : "";
253
227
  }
254
228
  changeEventCall(field, e, rederInfo, fieldValue) {
229
+ var _a;
255
230
  if (field.onChange) {
256
231
  let changeInfo = {
257
232
  field,
@@ -259,9 +234,9 @@ var Render = class _Render {
259
234
  oldValue: field.$value,
260
235
  value: fieldValue
261
236
  };
262
- if (field.listItem?.list) {
237
+ if ((_a = field.listItem) == null ? void 0 : _a.list) {
263
238
  let valuesItem = [];
264
- const valueKey = _Render.valuesValueKey(field);
239
+ const valueKey = Render.valuesValueKey(field);
265
240
  for (let val of field.listItem.list) {
266
241
  let changeVal = val[valueKey];
267
242
  if (isString(fieldValue)) {
@@ -308,17 +283,17 @@ var Render = class _Render {
308
283
  * @param {string} desc
309
284
  */
310
285
  setDescription(desc) {
286
+ var _a;
311
287
  const descEle = this.rowElement.querySelector(".df-description");
312
288
  if (descEle) {
313
- descEle.innerHTML = desc;
289
+ descEle.textContent = desc;
314
290
  } else {
315
291
  const fieldEle = this.rowElement.querySelector(".df-field");
316
292
  if (fieldEle) {
317
- const parser = new DOMParser();
293
+ const parser2 = new DOMParser();
318
294
  this.field.description = desc;
319
- const descEle2 = parser.parseFromString(_Render.getDescriptionTemplate(this.field), "text/html").querySelector(".df-description");
320
- if (descEle2)
321
- fieldEle.parentNode?.insertBefore(descEle2, fieldEle.nextSibling);
295
+ const descEle2 = parser2.parseFromString(Render.getDescriptionTemplate(this.field), "text/html").querySelector(".df-description");
296
+ if (descEle2) (_a = fieldEle.parentNode) == null ? void 0 : _a.insertBefore(descEle2, fieldEle.nextSibling);
322
297
  }
323
298
  }
324
299
  }
@@ -337,10 +312,12 @@ var Render = class _Render {
337
312
  commonValidator() {
338
313
  }
339
314
  static valuesValueKey(field) {
340
- return field.listItem?.valueField ? field.listItem.valueField : "value";
315
+ var _a;
316
+ return ((_a = field.listItem) == null ? void 0 : _a.valueField) ? field.listItem.valueField : "value";
341
317
  }
342
318
  static valuesLabelKey(field) {
343
- return field.listItem?.labelField ? field.listItem.labelField : "label";
319
+ var _a;
320
+ return ((_a = field.listItem) == null ? void 0 : _a.labelField) ? field.listItem.labelField : "label";
344
321
  }
345
322
  static valuesLabelValue(label, val) {
346
323
  let replaceFlag = false;
@@ -353,10 +330,8 @@ var Render = class _Render {
353
330
  }
354
331
  return val[label] || "";
355
332
  }
356
- };
357
-
358
- // src/rule/regexpValidator.ts
359
- var regexp = {
333
+ }
334
+ const regexp = {
360
335
  mobile: /^\d{3}-\d{3,4}-\d{4}$/,
361
336
  email: /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/,
362
337
  url: /^(?:(?:https?|HTTPS?|ftp|FTP):\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-zA-Z\u00a1-\uffff0-9]-*)*[a-zA-Z\u00a1-\uffff0-9]+)(?:\.(?:[a-zA-Z\u00a1-\uffff0-9]-*)*[a-zA-Z\u00a1-\uffff0-9]+)*(?:\.(?:[a-zA-Z\u00a1-\uffff]{2,}))\.?)(?::\d{2,5})?(?:[/?#]\S*)?$/,
@@ -369,7 +344,7 @@ var regexp = {
369
344
  "upper-char-special": /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[#?!@$%^&*-])/,
370
345
  "upper-char-special-number": /^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]/
371
346
  };
372
- var regexpValidator = (value, field, result) => {
347
+ const regexpValidator = (value, field, result) => {
373
348
  if (!field.$instance.isEnableView()) {
374
349
  return { name: field.name, constraint: [] };
375
350
  }
@@ -385,9 +360,7 @@ var regexpValidator = (value, field, result) => {
385
360
  }
386
361
  return result;
387
362
  };
388
-
389
- // src/rule/validator.ts
390
- var validator = (value, field, result) => {
363
+ const validator = (value, field, result) => {
391
364
  if (field.validator) {
392
365
  result.validator = field.validator(field, value);
393
366
  if (typeof result.validator === "object") {
@@ -416,9 +389,7 @@ var validator = (value, field, result) => {
416
389
  }
417
390
  return true;
418
391
  };
419
-
420
- // src/rule/numberValidator.ts
421
- var numberValidator = (value, field) => {
392
+ const numberValidator = (value, field) => {
422
393
  if (!field.$instance.isEnableView()) {
423
394
  return true;
424
395
  }
@@ -483,15 +454,13 @@ var numberValidator = (value, field) => {
483
454
  }
484
455
  return true;
485
456
  };
486
-
487
- // src/util/validUtils.ts
488
- var invalidMessage = (field, rowElement, validResult) => {
457
+ const invalidMessage = (field, rowElement, validResult) => {
489
458
  if (validResult === true) {
490
459
  rowElement.classList.remove("invalid");
491
460
  if (!rowElement.classList.contains("valid")) {
492
461
  rowElement.classList.add("valid");
493
462
  }
494
- const helpMessageElement = rowElement.querySelector(".help-message");
463
+ const helpMessageElement = rowElement.querySelector(".df-help-message");
495
464
  if (helpMessageElement) {
496
465
  helpMessageElement.innerHTML = "";
497
466
  }
@@ -502,11 +471,11 @@ var invalidMessage = (field, rowElement, validResult) => {
502
471
  rowElement.classList.add("invalid");
503
472
  }
504
473
  if (validResult !== false) {
505
- const message2 = Lanauage_default.validMessage(field, validResult);
474
+ const message2 = Language3.validMessage(field, validResult);
506
475
  if (validResult.message) {
507
476
  message2.push(validResult.message);
508
477
  }
509
- const helpMessageElement = rowElement.querySelector(".help-message");
478
+ const helpMessageElement = rowElement.querySelector(".df-help-message");
510
479
  if (helpMessageElement && message2.length > 0) {
511
480
  const msgHtml = [];
512
481
  message2.forEach((item) => {
@@ -516,19 +485,17 @@ var invalidMessage = (field, rowElement, validResult) => {
516
485
  }
517
486
  }
518
487
  };
519
- var resetRowElementStyleClass = (rowElement) => {
488
+ const resetRowElementStyleClass = (rowElement) => {
520
489
  rowElement.classList.remove("invalid");
521
490
  rowElement.classList.remove("valid");
522
491
  };
523
-
524
- // src/event/renderEvents.ts
525
- var inputEvent = (field, element, renderInfo) => {
492
+ const inputEvent = (field, element, renderInfo) => {
526
493
  element.addEventListener("input", (e) => {
527
494
  customChangeEventCall(field, e, renderInfo, renderInfo.getValue());
528
495
  renderInfo.valid();
529
496
  });
530
497
  };
531
- var numberInputEvent = (field, element, renderInfo) => {
498
+ const numberInputEvent = (field, element, renderInfo) => {
532
499
  element.addEventListener("keyup", (e) => {
533
500
  const val = e.target.value;
534
501
  if (!isNumber(val)) {
@@ -539,18 +506,16 @@ var numberInputEvent = (field, element, renderInfo) => {
539
506
  renderInfo.valid();
540
507
  });
541
508
  };
542
- var dropdownChangeEvent = (field, element, renderInfo) => {
509
+ const dropdownChangeEvent = (field, element, renderInfo) => {
543
510
  element.addEventListener("change", (e) => {
544
511
  customChangeEventCall(field, e, renderInfo, renderInfo.getValue());
545
512
  renderInfo.valid();
546
513
  });
547
514
  };
548
- var customChangeEventCall = (field, e, renderInfo, value) => {
515
+ const customChangeEventCall = (field, e, renderInfo, value) => {
549
516
  renderInfo.changeEventCall(field, e, renderInfo, value);
550
517
  };
551
-
552
- // src/renderer/NumberRender.ts
553
- var NumberRender = class extends Render {
518
+ class NumberRender extends Render {
554
519
  constructor(field, rowElement, daraForm) {
555
520
  super(daraForm, field, rowElement);
556
521
  this.mounted();
@@ -565,10 +530,10 @@ var NumberRender = class extends Render {
565
530
  const fieldContainerElement = this.rowElement.querySelector(".df-field-container");
566
531
  fieldContainerElement.innerHTML = `
567
532
  <div class="df-field">
568
- <input type="text" name="${field.$xssName}" class="form-field number help-icon" />
533
+ <input type="text" name="${field.$xssName}" class="df-form-field df-number df-help-icon" />
569
534
  </div>
570
535
  ${Render.getDescriptionTemplate(field)}
571
- <div class="help-message"></div>
536
+ <div class="df-help-message"></div>
572
537
  `;
573
538
  this.element = fieldContainerElement.querySelector(`[name="${field.$xssName}"]`);
574
539
  }
@@ -596,10 +561,8 @@ var NumberRender = class extends Render {
596
561
  invalidMessage(this.field, this.rowElement, validResult);
597
562
  return validResult;
598
563
  }
599
- };
600
-
601
- // src/rule/stringValidator.ts
602
- var stringValidator = (value, field) => {
564
+ }
565
+ const stringValidator = (value, field) => {
603
566
  if (!field.$instance.isEnableView()) {
604
567
  return true;
605
568
  }
@@ -639,9 +602,7 @@ var stringValidator = (value, field) => {
639
602
  }
640
603
  return true;
641
604
  };
642
-
643
- // src/renderer/TextAreaRender.ts
644
- var TextAreaRender = class extends Render {
605
+ class TextAreaRender extends Render {
645
606
  constructor(field, rowElement, daraForm) {
646
607
  super(daraForm, field, rowElement);
647
608
  this.mounted();
@@ -652,16 +613,17 @@ var TextAreaRender = class extends Render {
652
613
  inputEvent(this.field, this.element, this);
653
614
  }
654
615
  createField() {
616
+ var _a;
655
617
  const field = this.field;
656
618
  const fieldContainerElement = this.rowElement.querySelector(".df-field-container");
657
- let rows = field.customOptions?.rows;
619
+ let rows = (_a = field.rendererOptions) == null ? void 0 : _a.rows;
658
620
  rows = +rows > 0 ? rows : 3;
659
621
  fieldContainerElement.innerHTML = `
660
622
  <div class="df-field">
661
- <textarea name="${field.$xssName}" rows="${rows}" class="form-field textarea help-icon"></textarea>
623
+ <textarea name="${field.$xssName}" rows="${rows}" class="df-form-field df-textarea df-help-icon"></textarea>
662
624
  </div>
663
625
  ${Render.getDescriptionTemplate(field)}
664
- <div class="help-message"></div>
626
+ <div class="df-help-message"></div>
665
627
  `;
666
628
  this.element = fieldContainerElement.querySelector(`[name="${field.$xssName}"]`);
667
629
  }
@@ -689,19 +651,18 @@ var TextAreaRender = class extends Render {
689
651
  invalidMessage(this.field, this.rowElement, validResult);
690
652
  return validResult;
691
653
  }
692
- };
693
-
694
- // src/renderer/DropdownRender.ts
695
- var DropdownRender = class _DropdownRender extends Render {
654
+ }
655
+ class DropdownRender extends Render {
696
656
  constructor(field, rowElement, daraForm) {
657
+ var _a, _b, _c, _d, _e;
697
658
  super(daraForm, field, rowElement);
698
659
  let initDefaultValue = "";
699
660
  if (!isUndefined(field.defaultValue)) {
700
661
  initDefaultValue = field.defaultValue;
701
662
  }
702
- const valueKey = _DropdownRender.valuesValueKey(field);
663
+ const valueKey = DropdownRender.valuesValueKey(field);
703
664
  let initDefaultValueFlag = false;
704
- this.field.listItem?.list?.forEach((item) => {
665
+ (_b = (_a = this.field.listItem) == null ? void 0 : _a.list) == null ? void 0 : _b.forEach((item) => {
705
666
  let itemValue = item[valueKey];
706
667
  if (item.selected) {
707
668
  this.defaultSelected = itemValue;
@@ -713,8 +674,8 @@ var DropdownRender = class _DropdownRender extends Render {
713
674
  if (initDefaultValueFlag) {
714
675
  this.defaultSelected = initDefaultValue;
715
676
  } else if (!this.defaultSelected) {
716
- if (field.customOptions?.disableDefaultOption === true) {
717
- this.defaultSelected = this.field.listItem?.list?.length > 0 ? this.field.listItem.list[0][valueKey] || "" : "";
677
+ if (((_c = field.rendererOptions) == null ? void 0 : _c.disableDefaultOption) === true) {
678
+ this.defaultSelected = ((_e = (_d = this.field.listItem) == null ? void 0 : _d.list) == null ? void 0 : _e.length) > 0 ? this.field.listItem.list[0][valueKey] || "" : "";
718
679
  }
719
680
  }
720
681
  if (isUndefined(this.defaultSelected)) {
@@ -730,11 +691,11 @@ var DropdownRender = class _DropdownRender extends Render {
730
691
  createField() {
731
692
  const field = this.field;
732
693
  const fieldContainerElement = this.rowElement.querySelector(".df-field-container");
733
- let template = ` <div class="df-field"><select name="${field.$xssName}" class="form-field dropdown">
694
+ let template = ` <div class="df-field"><select name="${field.$xssName}" class="df-form-field df-dropdown">
734
695
  ${this.dropdownValuesTemplate(field)}
735
- </select> <i class="help-icon"></i></div>
696
+ </select> <i class="df-help-icon"></i></div>
736
697
  ${Render.getDescriptionTemplate(field)}
737
- <div class="help-message"></div>
698
+ <div class="df-help-message"></div>
738
699
  `;
739
700
  fieldContainerElement.innerHTML = template;
740
701
  this.element = fieldContainerElement.querySelector(`[name="${field.$xssName}"]`);
@@ -786,13 +747,14 @@ var DropdownRender = class _DropdownRender extends Render {
786
747
  return validResult;
787
748
  }
788
749
  dropdownValuesTemplate(field) {
750
+ var _a, _b, _c;
789
751
  const labelKey = Render.valuesLabelKey(field);
790
752
  const valueKey = Render.valuesValueKey(field);
791
753
  let template = "";
792
- if (field.customOptions?.disableDefaultOption !== true) {
793
- template += `<option value="">${Lanauage_default.getMessage("selection")}</option>`;
754
+ if (((_a = field.rendererOptions) == null ? void 0 : _a.disableDefaultOption) !== true) {
755
+ template += `<option value="">${Language3.getMessage("selection")}</option>`;
794
756
  }
795
- field.listItem?.list?.forEach((val) => {
757
+ (_c = (_b = field.listItem) == null ? void 0 : _b.list) == null ? void 0 : _c.forEach((val) => {
796
758
  const attr = `${val.selected ? "selected" : ""} ${val.disabled ? "disabled" : ""}`;
797
759
  if (isUndefined(val[valueKey]) && val.label) {
798
760
  template += `<option value="${val.value || ""}" ${attr}>${val.label}</option>`;
@@ -802,10 +764,8 @@ var DropdownRender = class _DropdownRender extends Render {
802
764
  });
803
765
  return template;
804
766
  }
805
- };
806
-
807
- // src/renderer/TextRender.ts
808
- var TextRender = class extends Render {
767
+ }
768
+ class TextRender extends Render {
809
769
  constructor(field, rowElement, daraForm) {
810
770
  super(daraForm, field, rowElement);
811
771
  this.mounted();
@@ -820,10 +780,10 @@ var TextRender = class extends Render {
820
780
  const fieldContainerElement = this.rowElement.querySelector(".df-field-container");
821
781
  fieldContainerElement.innerHTML = `
822
782
  <div class="df-field">
823
- <input type="text" name="${field.$xssName}" class="form-field text help-icon" />
783
+ <input type="text" name="${field.$xssName}" class="df-form-field df-text df-help-icon" />
824
784
  </div>
825
785
  ${Render.getDescriptionTemplate(field)}
826
- <div class="help-message"></div>
786
+ <div class="df-help-message"></div>
827
787
  `;
828
788
  this.element = fieldContainerElement.querySelector(`[name="${field.$xssName}"]`);
829
789
  }
@@ -851,11 +811,74 @@ var TextRender = class extends Render {
851
811
  invalidMessage(this.field, this.rowElement, validResult);
852
812
  return validResult;
853
813
  }
854
- };
855
-
856
- // src/renderer/CheckboxRender.ts
857
- var CheckboxRender = class _CheckboxRender extends Render {
814
+ }
815
+ function resolveFieldStyle(formOptions, field, beforeField, isLabelHide) {
816
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i;
817
+ const fieldStyle = {
818
+ rowStyleClass: orientationClassName(field.orientation),
819
+ fieldClass: "",
820
+ fieldStyle: "",
821
+ labelClass: "",
822
+ labelStyle: "",
823
+ labelAlignClass: "",
824
+ valueClass: "",
825
+ valueStyle: "",
826
+ tabAlignClass: ""
827
+ };
828
+ const defaultLabelWidth = ((_a = beforeField == null ? void 0 : beforeField.style) == null ? void 0 : _a.labelWidth) ?? formOptions.style.labelWidth ?? "3";
829
+ let defaultValueWidth = ((_b = beforeField == null ? void 0 : beforeField.style) == null ? void 0 : _b.valueWidth) ?? formOptions.style.valueWidth ?? "9";
830
+ const position = ((_c = beforeField == null ? void 0 : beforeField.style) == null ? void 0 : _c.position) ?? formOptions.style.position;
831
+ const width = (_d = field.style) == null ? void 0 : _d.width;
832
+ const positionArr = FIELD_POSITION_STYLE[(_e = field.style) == null ? void 0 : _e.position] ?? FIELD_POSITION_STYLE[position] ?? FIELD_POSITION_STYLE.top;
833
+ fieldStyle.fieldClass = `${positionArr[0] ? "df-" + positionArr[0] : ""} ${((_f = field.style) == null ? void 0 : _f.customClass) || ""}`;
834
+ if (width) {
835
+ if (isNumber(width)) {
836
+ fieldStyle.fieldClass += isNumber(width) ? ` df-col-xs-${width}` : "";
837
+ } else {
838
+ fieldStyle.fieldStyle = isNumber(width) ? "" : `width:${width};`;
839
+ }
840
+ }
841
+ fieldStyle.tabAlignClass = "df-tab-al-" + (["right", "center"].includes((_g = field.style) == null ? void 0 : _g.tabAlign) ? field.style.tabAlign : "left");
842
+ const labelWidth = ((_h = field.style) == null ? void 0 : _h.labelWidth) || defaultLabelWidth;
843
+ fieldStyle.labelAlignClass = positionArr[1];
844
+ if (!isLabelHide && labelWidth && !["top", "bottom"].includes(positionArr[0])) {
845
+ if (isNumber(labelWidth)) {
846
+ const labelWidthValue = +labelWidth;
847
+ defaultValueWidth = 12 - labelWidthValue;
848
+ fieldStyle.labelClass = `df-col-xs-${labelWidthValue}`;
849
+ fieldStyle.valueClass = fieldStyle.labelStyle ? "df-col-full" : `df-col-xs-${defaultValueWidth}`;
850
+ } else {
851
+ fieldStyle.labelStyle = `width:${labelWidth};`;
852
+ }
853
+ }
854
+ const valueWidth = ((_i = field.style) == null ? void 0 : _i.valueWidth) || defaultValueWidth;
855
+ if (isLabelHide && !["left", "right"].includes(positionArr[0])) {
856
+ fieldStyle.valueClass = "df-col-full";
857
+ } else {
858
+ if (valueWidth && !["top", "bottom"].includes(positionArr[0])) {
859
+ if (isNumber(valueWidth)) {
860
+ fieldStyle.valueClass = fieldStyle.labelStyle ? "df-col-full" : `df-col-xs-${valueWidth}`;
861
+ } else {
862
+ fieldStyle.valueStyle = `width:${valueWidth};`;
863
+ }
864
+ } else {
865
+ fieldStyle.valueClass = fieldStyle.labelStyle ? "df-col-full" : "";
866
+ }
867
+ }
868
+ fieldStyle.fieldClass = spaceReplace(fieldStyle.fieldClass);
869
+ fieldStyle.labelClass = spaceReplace(fieldStyle.labelClass);
870
+ fieldStyle.valueClass = spaceReplace(fieldStyle.valueClass);
871
+ return fieldStyle;
872
+ }
873
+ function orientationClassName(orientation) {
874
+ return orientation === "horizontal" ? "df-horizontal" : "df-vertical";
875
+ }
876
+ function spaceReplace(str) {
877
+ return str.replace(/\s+/g, " ").trim();
878
+ }
879
+ class CheckboxRender extends Render {
858
880
  constructor(field, rowElement, daraForm) {
881
+ var _a, _b;
859
882
  super(daraForm, field, rowElement);
860
883
  this.defaultCheckValue = [];
861
884
  this.defaultCheckValue = [];
@@ -867,12 +890,12 @@ var CheckboxRender = class _CheckboxRender extends Render {
867
890
  initDefaultValue = [field.defaultValue];
868
891
  }
869
892
  }
870
- const valueKey = _CheckboxRender.valuesValueKey(field);
893
+ const valueKey = CheckboxRender.valuesValueKey(field);
871
894
  if (isUndefined(this.field.listItem)) {
872
895
  this.setValueItems([{ label: "", value: "Y" }]);
873
896
  }
874
897
  let initDefaultValueFlag = false;
875
- this.field.listItem?.list?.forEach((item) => {
898
+ (_b = (_a = this.field.listItem) == null ? void 0 : _a.list) == null ? void 0 : _b.forEach((item) => {
876
899
  let itemValue = item[valueKey];
877
900
  if (item.selected) {
878
901
  this.defaultCheckValue.push(itemValue ? itemValue : true);
@@ -902,25 +925,26 @@ var CheckboxRender = class _CheckboxRender extends Render {
902
925
  return `input[type="checkbox"][name="${this.field.$xssName}"]`;
903
926
  }
904
927
  createField() {
928
+ var _a, _b;
905
929
  const field = this.field;
906
930
  const fieldContainerElement = this.rowElement.querySelector(".df-field-container");
907
931
  const templates = [];
908
932
  const fieldName = field.$xssName;
909
933
  const labelKey = Render.valuesLabelKey(field);
910
934
  const valueKey = Render.valuesValueKey(field);
911
- templates.push(` <div class="df-field"><div class="field-group">`);
912
- field.listItem?.list?.forEach((val) => {
935
+ templates.push(` <div class="df-field"><div class="df-field-group">`);
936
+ (_b = (_a = field.listItem) == null ? void 0 : _a.list) == null ? void 0 : _b.forEach((val) => {
913
937
  const checkVal = val[valueKey];
914
938
  templates.push(`
915
- <span class="field ${field.listItem.orientation == "vertical" ? "vertical" : "horizontal"}">
939
+ <span class="df-field-item ${orientationClassName(field.listItem.orientation ?? OrientationMap.horizontal)}">
916
940
  <label>
917
- <input type="checkbox" name="${fieldName}" value="${checkVal ? replaceXss(checkVal) : ""}" class="form-field checkbox" ${val.selected ? "checked" : ""} ${val.disabled ? "disabled" : ""} />
941
+ <input type="checkbox" name="${fieldName}" value="${checkVal ? replaceXss(checkVal) : ""}" class="df-form-field df-checkbox" ${val.selected ? "checked" : ""} ${val.disabled ? "disabled" : ""} />
918
942
  ${Render.valuesLabelValue(labelKey, val)}
919
943
  </label>
920
944
  </span>
921
945
  `);
922
946
  });
923
- templates.push(`<i class="daracl-icon help-icon"></i></div></div> ${Render.getDescriptionTemplate(field)}<div class="help-message"></div>`);
947
+ templates.push(`<i class="df-form-icon df-help-icon"></i></div></div> ${Render.getDescriptionTemplate(field)}<div class="df-help-message"></div>`);
924
948
  fieldContainerElement.innerHTML = templates.join("");
925
949
  }
926
950
  setValueItems(items) {
@@ -954,7 +978,7 @@ var CheckboxRender = class _CheckboxRender extends Render {
954
978
  return checkValue;
955
979
  } else {
956
980
  const checkElement = this.rowElement.querySelector(`[name="${this.field.$xssName}"]`);
957
- if (checkElement?.checked) {
981
+ if (checkElement == null ? void 0 : checkElement.checked) {
958
982
  return checkElement.value ? checkElement.value : true;
959
983
  }
960
984
  return checkElement.value ? "" : false;
@@ -974,7 +998,7 @@ var CheckboxRender = class _CheckboxRender extends Render {
974
998
  return;
975
999
  }
976
1000
  let valueArr = [];
977
- if (Array.isArray(value)) {
1001
+ if (isArray(value)) {
978
1002
  valueArr = value;
979
1003
  } else {
980
1004
  valueArr.push(value);
@@ -985,12 +1009,12 @@ var CheckboxRender = class _CheckboxRender extends Render {
985
1009
  });
986
1010
  valueArr.forEach((val) => {
987
1011
  const ele = this.rowElement.querySelector(`[name="${this.field.$xssName}"][value="${val}"]`);
988
- if (ele)
989
- ele.checked = true;
1012
+ if (ele) ele.checked = true;
990
1013
  });
991
1014
  }
992
1015
  reset() {
993
- if (this.field.listItem?.list?.length == 1 && this.defaultCheckValue.length == 1) {
1016
+ var _a, _b;
1017
+ if (((_b = (_a = this.field.listItem) == null ? void 0 : _a.list) == null ? void 0 : _b.length) == 1 && this.defaultCheckValue.length == 1) {
994
1018
  this.setValue(true, false);
995
1019
  } else {
996
1020
  this.setValue(this.defaultCheckValue, false);
@@ -1019,20 +1043,19 @@ var CheckboxRender = class _CheckboxRender extends Render {
1019
1043
  invalidMessage(this.field, this.rowElement, validResult);
1020
1044
  return validResult;
1021
1045
  }
1022
- };
1023
-
1024
- // src/renderer/RadioRender.ts
1025
- var RadioRender = class _RadioRender extends Render {
1046
+ }
1047
+ class RadioRender extends Render {
1026
1048
  constructor(field, rowElement, daraForm) {
1049
+ var _a, _b, _c, _d, _e;
1027
1050
  super(daraForm, field, rowElement);
1028
1051
  this.defaultCheckValue = "";
1029
1052
  let initDefaultValue = [];
1030
1053
  if (!isUndefined(field.defaultValue)) {
1031
1054
  initDefaultValue = field.defaultValue;
1032
1055
  }
1033
- const valueKey = _RadioRender.valuesValueKey(field);
1056
+ const valueKey = RadioRender.valuesValueKey(field);
1034
1057
  let initDefaultValueFlag = false;
1035
- this.field.listItem?.list?.forEach((item) => {
1058
+ (_b = (_a = this.field.listItem) == null ? void 0 : _a.list) == null ? void 0 : _b.forEach((item) => {
1036
1059
  let itemValue = item[valueKey];
1037
1060
  if (item.selected) {
1038
1061
  this.defaultCheckValue = itemValue;
@@ -1044,7 +1067,7 @@ var RadioRender = class _RadioRender extends Render {
1044
1067
  if (initDefaultValueFlag) {
1045
1068
  this.defaultCheckValue = initDefaultValue;
1046
1069
  } else if (!this.defaultCheckValue) {
1047
- this.defaultCheckValue = this.field.listItem?.list?.length > 0 ? this.field.listItem?.list[0][valueKey] : "";
1070
+ this.defaultCheckValue = ((_d = (_c = this.field.listItem) == null ? void 0 : _c.list) == null ? void 0 : _d.length) > 0 ? (_e = this.field.listItem) == null ? void 0 : _e.list[0][valueKey] : "";
1048
1071
  }
1049
1072
  this.mounted();
1050
1073
  this.setDefaultOption();
@@ -1066,28 +1089,29 @@ var RadioRender = class _RadioRender extends Render {
1066
1089
  return `input[type="radio"][name="${this.field.$xssName}"]`;
1067
1090
  }
1068
1091
  createField() {
1092
+ var _a, _b;
1069
1093
  const field = this.field;
1070
1094
  const fieldContainerElement = this.rowElement.querySelector(".df-field-container");
1071
1095
  const templates = [];
1072
1096
  const fieldName = field.$xssName;
1073
1097
  const labelKey = Render.valuesLabelKey(field);
1074
1098
  const valueKey = Render.valuesValueKey(field);
1075
- templates.push(`<div class="df-field"><div class="field-group">`);
1076
- field.listItem?.list?.forEach((val) => {
1099
+ templates.push(`<div class="df-field"><div class="df-field-group">`);
1100
+ (_b = (_a = field.listItem) == null ? void 0 : _a.list) == null ? void 0 : _b.forEach((val) => {
1077
1101
  const radioVal = val[valueKey];
1078
1102
  templates.push(
1079
- `<span class="field ${field.orientation == "vertical" ? "vertical" : "horizontal"}">
1103
+ `<span class="df-field-item ${orientationClassName(field.orientation ?? OrientationMap.horizontal)}">
1080
1104
  <label>
1081
- <input type="radio" name="${fieldName}" value="${radioVal}" class="form-field radio" ${val.selected ? "checked" : ""} ${val.disabled ? "disabled" : ""}/>
1105
+ <input type="radio" name="${fieldName}" value="${radioVal}" class="df-form-field df-radio" ${val.selected ? "checked" : ""} ${val.disabled ? "disabled" : ""}/>
1082
1106
  ${Render.valuesLabelValue(labelKey, val)}
1083
1107
  </label>
1084
1108
  </span>
1085
1109
  `
1086
1110
  );
1087
1111
  });
1088
- templates.push(`<i class="daracl-icon help-icon"></i></div></div>
1112
+ templates.push(`<i class="df-form-icon df-help-icon"></i></div></div>
1089
1113
  ${Render.getDescriptionTemplate(field)}
1090
- <div class="help-message"></div>
1114
+ <div class="df-help-message"></div>
1091
1115
  `);
1092
1116
  fieldContainerElement.innerHTML = templates.join("");
1093
1117
  this.initEvent();
@@ -1111,7 +1135,8 @@ var RadioRender = class _RadioRender extends Render {
1111
1135
  }
1112
1136
  }
1113
1137
  getValue() {
1114
- return this.rowElement.querySelector(`[name="${this.field.$xssName}"]:checked`)?.value;
1138
+ var _a;
1139
+ return (_a = this.rowElement.querySelector(`[name="${this.field.$xssName}"]:checked`)) == null ? void 0 : _a.value;
1115
1140
  }
1116
1141
  setValue(value, changeCheckFlag) {
1117
1142
  if (changeCheckFlag !== false && this.changeEventCall(this.field, null, this, value) === false) {
@@ -1162,10 +1187,8 @@ var RadioRender = class _RadioRender extends Render {
1162
1187
  invalidMessage(this.field, this.rowElement, validResult);
1163
1188
  return validResult;
1164
1189
  }
1165
- };
1166
-
1167
- // src/renderer/PasswordRender.ts
1168
- var PasswordRender = class extends Render {
1190
+ }
1191
+ class PasswordRender extends Render {
1169
1192
  constructor(field, rowElement, daraForm) {
1170
1193
  super(daraForm, field, rowElement);
1171
1194
  this.mounted();
@@ -1180,10 +1203,10 @@ var PasswordRender = class extends Render {
1180
1203
  const fieldContainerElement = this.rowElement.querySelector(".df-field-container");
1181
1204
  fieldContainerElement.innerHTML = `
1182
1205
  <div class="df-field">
1183
- <input type="password" name="${field.$xssName}" class="form-field password help-icon" autocomplete="off" />
1206
+ <input type="password" name="${field.$xssName}" class="df-form-field df-password df-help-icon" autocomplete="off" />
1184
1207
  </div>
1185
1208
  ${Render.getDescriptionTemplate(field)}
1186
- <div class="help-message"></div>
1209
+ <div class="df-help-message"></div>
1187
1210
  `;
1188
1211
  this.element = fieldContainerElement.querySelector(`[name="${field.$xssName}"]`);
1189
1212
  }
@@ -1211,10 +1234,8 @@ var PasswordRender = class extends Render {
1211
1234
  invalidMessage(this.field, this.rowElement, validResult);
1212
1235
  return validResult;
1213
1236
  }
1214
- };
1215
-
1216
- // src/rule/fileValidator.ts
1217
- var fileValidator = (element, field, fileList) => {
1237
+ }
1238
+ const fileValidator = (element, field, fileList) => {
1218
1239
  const result = { name: field.name, constraint: [] };
1219
1240
  if (field.required && fileList.length < 1) {
1220
1241
  result.constraint.push(RULES.REQUIRED);
@@ -1225,23 +1246,23 @@ var fileValidator = (element, field, fileList) => {
1225
1246
  }
1226
1247
  return true;
1227
1248
  };
1228
-
1229
- // src/renderer/FileRender.ts
1230
- var FileRender = class extends Render {
1249
+ class FileRender extends Render {
1231
1250
  constructor(field, rowElement, daraForm) {
1251
+ var _a;
1232
1252
  super(daraForm, field, rowElement);
1233
1253
  this.removeIds = [];
1234
1254
  this.uploadFiles = {};
1235
1255
  this.fileList = [];
1236
1256
  this.fileSeq = 0;
1237
1257
  this.element = rowElement.querySelector(`[name="${field.$xssName}"]`);
1238
- this.fileList = field.listItem?.list || [];
1258
+ this.fileList = ((_a = field.listItem) == null ? void 0 : _a.list) || [];
1239
1259
  this.mounted();
1240
1260
  this.setDefaultOption();
1241
1261
  }
1242
1262
  mounted() {
1243
1263
  this.element.addEventListener("change", (e) => {
1244
- const files = e.target?.files;
1264
+ var _a;
1265
+ const files = (_a = e.target) == null ? void 0 : _a.files;
1245
1266
  if (files) {
1246
1267
  let fileList = [];
1247
1268
  for (let item of files) {
@@ -1262,17 +1283,17 @@ var FileRender = class extends Render {
1262
1283
  const fieldContainerElement = this.rowElement.querySelector(".df-field-container");
1263
1284
  fieldContainerElement.innerHTML = `
1264
1285
  <div class="df-field">
1265
- <span class="file-wrapper">
1266
- <label class="file-label">
1267
- <input type="file" name="${field.$xssName}" class="form-field file" multiple />
1268
- ${Lanauage_default.getMessage("fileButton")}
1286
+ <span class="df-file-wrapper">
1287
+ <label class="df-file-label">
1288
+ <input type="file" name="${field.$xssName}" class="df-form-field df-file" multiple />
1289
+ ${Language3.getMessage("fileButton")}
1269
1290
  </label>
1270
- <i class="daracl-icon help-icon"></i>
1291
+ <i class="df-form-icon df-help-icon"></i>
1271
1292
  </span>
1272
1293
  </div>
1273
1294
  ${Render.getDescriptionTemplate(field)}
1274
- <div class="daracl-file-list"></div>
1275
- <div class="help-message"></div>
1295
+ <div class="df-file-list"></div>
1296
+ <div class="df-help-message"></div>
1276
1297
  `;
1277
1298
  this.element = fieldContainerElement.querySelector(`[name="${field.$xssName}"]`);
1278
1299
  }
@@ -1281,8 +1302,7 @@ var FileRender = class extends Render {
1281
1302
  const newFiles = [];
1282
1303
  for (let item of files) {
1283
1304
  const fileCheckList = this.fileList.filter((fileItem) => fileItem.fileName == item.name && fileItem.fileSize == item.size && fileItem.lastModified == item.lastModified);
1284
- if (fileCheckList.length > 0)
1285
- continue;
1305
+ if (fileCheckList.length > 0) continue;
1286
1306
  this.fileSeq += 1;
1287
1307
  this.uploadFiles[this.fileSeq] = item;
1288
1308
  let newFileInfo = {
@@ -1300,7 +1320,7 @@ var FileRender = class extends Render {
1300
1320
  }
1301
1321
  }
1302
1322
  setFileList(fileList, initFlag) {
1303
- const fileListElement = this.rowElement.querySelector(".daracl-file-list");
1323
+ const fileListElement = this.rowElement.querySelector(".df-file-list");
1304
1324
  if (fileListElement) {
1305
1325
  if (initFlag === true) {
1306
1326
  fileListElement.innerHTML = "";
@@ -1308,9 +1328,9 @@ var FileRender = class extends Render {
1308
1328
  const fileTemplateHtml = [];
1309
1329
  fileList.forEach((file) => {
1310
1330
  fileTemplateHtml.push(`
1311
- <div class="file-item" data-seq="${file.$seq}">
1312
- ${file.fileId ? '<span class="file-icon download"></span>' : '<span class="file-icon"></span>'} <span class="file-icon remove"></span>
1313
- <span class="file-name">${file.fileName}</span >
1331
+ <div class="df-file-item" data-seq="${file.$seq}">
1332
+ ${file.fileId ? '<span class="df-file-icon df-file-download"></span>' : '<span class="df-file-icon"></span>'} <span class="df-file-icon df-file-remove"></span>
1333
+ <span class="df-file-name">${file.fileName}</span >
1314
1334
  </div>`);
1315
1335
  });
1316
1336
  fileListElement.insertAdjacentHTML("beforeend", fileTemplateHtml.join(""));
@@ -1327,10 +1347,10 @@ var FileRender = class extends Render {
1327
1347
  * @param fileListElement
1328
1348
  */
1329
1349
  downloadFileEvent(item, fileListElement) {
1330
- const ele = fileListElement.querySelector(`[data-seq="${item.$seq}"] .download`);
1350
+ const ele = fileListElement.querySelector(`[data-seq="${item.$seq}"] .df-file-download`);
1331
1351
  if (ele) {
1332
1352
  ele.addEventListener("click", (evt) => {
1333
- const fileItemElement = evt.target.closest(".file-item");
1353
+ const fileItemElement = evt.target.closest(".df-file-item");
1334
1354
  if (fileItemElement) {
1335
1355
  const attrSeq = fileItemElement.getAttribute("data-seq");
1336
1356
  if (attrSeq) {
@@ -1357,10 +1377,10 @@ var FileRender = class extends Render {
1357
1377
  * @param fileListElement
1358
1378
  */
1359
1379
  removeFileEvent(item, fileListElement) {
1360
- const ele = fileListElement.querySelector(`[data-seq="${item.$seq}"] .remove`);
1380
+ const ele = fileListElement.querySelector(`[data-seq="${item.$seq}"] .df-file-remove`);
1361
1381
  if (ele) {
1362
1382
  ele.addEventListener("click", (evt) => {
1363
- const fileItemElement = evt.target.closest(".file-item");
1383
+ const fileItemElement = evt.target.closest(".df-file-item");
1364
1384
  if (fileItemElement) {
1365
1385
  const attrSeq = fileItemElement.getAttribute("data-seq");
1366
1386
  if (attrSeq) {
@@ -1396,7 +1416,7 @@ var FileRender = class extends Render {
1396
1416
  this.setFileList(this.fileList, true);
1397
1417
  }
1398
1418
  setValue(value) {
1399
- if (isArray(value)) {
1419
+ if (core.isArray(value)) {
1400
1420
  this.setValueItems(value);
1401
1421
  }
1402
1422
  this.element.value = "";
@@ -1414,10 +1434,8 @@ var FileRender = class extends Render {
1414
1434
  invalidMessage(this.field, this.rowElement, validResult);
1415
1435
  return validResult;
1416
1436
  }
1417
- };
1418
-
1419
- // src/renderer/CustomRender.ts
1420
- var CustomRender = class extends Render {
1437
+ }
1438
+ class CustomRender extends Render {
1421
1439
  constructor(field, rowElement, daraForm) {
1422
1440
  super(daraForm, field, rowElement);
1423
1441
  if (field.renderer) {
@@ -1445,7 +1463,7 @@ var CustomRender = class extends Render {
1445
1463
  ${fieldTemplate}
1446
1464
  </div>
1447
1465
  ${Render.getDescriptionTemplate(field)}
1448
- <div class="help-message"></div>`;
1466
+ <div class="df-help-message"></div>`;
1449
1467
  }
1450
1468
  getValue() {
1451
1469
  if (this.customFunction.getValue) {
@@ -1490,10 +1508,8 @@ var CustomRender = class extends Render {
1490
1508
  this.customFunction.focus.call(this, this.field, this.rowElement);
1491
1509
  }
1492
1510
  }
1493
- };
1494
-
1495
- // src/renderer/GroupRender.ts
1496
- var GroupRender = class extends Render {
1511
+ }
1512
+ class GroupRender extends Render {
1497
1513
  constructor(field, rowElement, daraForm) {
1498
1514
  super(daraForm, field, rowElement);
1499
1515
  }
@@ -1528,10 +1544,8 @@ var GroupRender = class extends Render {
1528
1544
  }
1529
1545
  focus() {
1530
1546
  }
1531
- };
1532
-
1533
- // src/renderer/HiddenRender.ts
1534
- var HiddenRender = class extends Render {
1547
+ }
1548
+ class HiddenRender extends Render {
1535
1549
  constructor(field, rowElement, daraForm) {
1536
1550
  super(daraForm, field, rowElement);
1537
1551
  this.field.$value = field.defaultValue;
@@ -1556,17 +1570,16 @@ var HiddenRender = class extends Render {
1556
1570
  valid() {
1557
1571
  return true;
1558
1572
  }
1559
- };
1560
-
1561
- // src/renderer/ButtonRender.ts
1562
- var ButtonRender = class extends Render {
1573
+ }
1574
+ class ButtonRender extends Render {
1563
1575
  constructor(field, rowElement, daraForm) {
1564
1576
  super(daraForm, field, rowElement);
1565
1577
  this.mounted();
1566
1578
  this.setDefaultOption();
1567
1579
  }
1568
1580
  mounted() {
1569
- this.rowElement.querySelector(`#${this.field.$key}`)?.addEventListener("click", (evt) => {
1581
+ var _a;
1582
+ (_a = this.rowElement.querySelector(`#${this.field.$key}`)) == null ? void 0 : _a.addEventListener("click", (evt) => {
1570
1583
  if (this.field.onClick) {
1571
1584
  this.field.onClick.call(null, this.field);
1572
1585
  }
@@ -1596,13 +1609,11 @@ var ButtonRender = class extends Render {
1596
1609
  valid() {
1597
1610
  return true;
1598
1611
  }
1599
- };
1600
-
1601
- // src/renderer/RangeRender.ts
1602
- var RangeRender = class extends Render {
1612
+ }
1613
+ class RangeRender extends Render {
1603
1614
  constructor(field, rowElement, daraForm) {
1604
1615
  super(daraForm, field, rowElement);
1605
- this.rangeNumElement = rowElement.querySelector(".range-num");
1616
+ this.rangeNumElement = rowElement.querySelector(".df-range-num");
1606
1617
  this.mounted();
1607
1618
  this.setDefaultOption();
1608
1619
  this.setDefaultInfo();
@@ -1620,11 +1631,11 @@ var RangeRender = class extends Render {
1620
1631
  const fieldContainerElement = this.rowElement.querySelector(".df-field-container");
1621
1632
  fieldContainerElement.innerHTML = `
1622
1633
  <div class="df-field">
1623
- <span class="range-num">${field.defaultValue ? field.defaultValue : 0}</span>
1624
- <input type="range" name="${field.$xssName}" class="form-field range help-icon" min="${field.rule.minimum}" max="${field.rule.maximum}"/>
1634
+ <span class="df-range-num">${field.defaultValue ? field.defaultValue : 0}</span>
1635
+ <input type="range" name="${field.$xssName}" class="df-form-field df-range df-help-icon" min="${field.rule.minimum}" max="${field.rule.maximum}"/>
1625
1636
  </div>
1626
1637
  ${Render.getDescriptionTemplate(field)}
1627
- <div class="help-message"></div>
1638
+ <div class="df-help-message"></div>
1628
1639
  `;
1629
1640
  this.element = fieldContainerElement.querySelector(`[name="${field.$xssName}"]`);
1630
1641
  }
@@ -1652,11 +1663,1300 @@ var RangeRender = class extends Render {
1652
1663
  invalidMessage(this.field, this.rowElement, validResult);
1653
1664
  return validResult;
1654
1665
  }
1666
+ }
1667
+ let localeMessage$1 = {
1668
+ year: "Year",
1669
+ month: "Month",
1670
+ day: "Day",
1671
+ am: "AM",
1672
+ pm: "PM",
1673
+ today: "Today",
1674
+ ok: "Ok",
1675
+ months: {
1676
+ full: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
1677
+ abbr: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
1678
+ },
1679
+ weeks: {
1680
+ full: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
1681
+ abbr: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
1682
+ }
1683
+ };
1684
+ let Language$2 = class Language {
1685
+ constructor() {
1686
+ this.lang = localeMessage$1;
1687
+ }
1688
+ setDefaultMessage(lang) {
1689
+ localeMessage$1 = Object.assign(localeMessage$1, lang);
1690
+ }
1691
+ /**
1692
+ * 다국어 메시지 등록
1693
+ *
1694
+ * @public
1695
+ * @param {?Message} [lang] 둥록할 메시지
1696
+ */
1697
+ set(lang) {
1698
+ this.lang = Object.assign({}, localeMessage$1, lang);
1699
+ }
1700
+ /**
1701
+ * 메시지 얻기
1702
+ *
1703
+ * @public
1704
+ * @param {string} messageKey 메시지 키
1705
+ * @returns {*}
1706
+ */
1707
+ getMessage(messageKey) {
1708
+ return this.lang[messageKey];
1709
+ }
1710
+ getMonthsMessage(idx, mode = "abbr") {
1711
+ return this.lang.months[mode][idx] || "";
1712
+ }
1713
+ getWeeksMessage(idx, mode = "abbr") {
1714
+ return this.lang.weeks[mode][idx] || "";
1715
+ }
1716
+ getMonthsIdx(val, mode = "abbr") {
1717
+ return mode == "full" ? this.lang.months.full.indexOf(val) : this.lang.months.abbr.indexOf(val);
1718
+ }
1719
+ getWeeksIdx(val, mode = "abbr") {
1720
+ return mode == "full" ? this.lang.weeks.full.indexOf(val) : this.lang.weeks.abbr.indexOf(val);
1721
+ }
1722
+ };
1723
+ const Lanauage = new Language$2();
1724
+ const EXPRESSIONS_FORMAT = ["YY", "YYYY", "MMMM", "MMM", "MM", "M", "dddd", "ddd", "dd", "d", "DD", "D", "S", "HH", "H", "hh", "h", "mm", "m", "ss", "s", "SSS", "zzzz", "zzz", "zz", "z", "a", "A"];
1725
+ let MAX_CHAR_LENGTH = 0;
1726
+ let DEFAULT_FORMAT = {
1727
+ year: "YYYY",
1728
+ month: "YYYY-MM",
1729
+ date: "YYYY-MM-DD",
1730
+ time: "HH:mm",
1731
+ datetime: "YYYY-MM-DD HH:mm"
1732
+ };
1733
+ const DAY_STYLE_CLASS = ["ddtp-sun", "ddtp-mon", "ddtp-tue", "ddtp-wed", "ddtp-thu", "ddtp-fri", "ddtp-sat"];
1734
+ var DateViewMode = /* @__PURE__ */ ((DateViewMode2) => {
1735
+ DateViewMode2["year"] = "year";
1736
+ DateViewMode2["month"] = "month";
1737
+ DateViewMode2["date"] = "date";
1738
+ DateViewMode2["datetime"] = "datetime";
1739
+ DateViewMode2["time"] = "time";
1740
+ return DateViewMode2;
1741
+ })(DateViewMode || {});
1742
+ EXPRESSIONS_FORMAT.forEach((item) => {
1743
+ MAX_CHAR_LENGTH = Math.max(item.length, MAX_CHAR_LENGTH);
1744
+ });
1745
+ const format = (date, format2) => {
1746
+ format2 = format2 || "YYYY-MM-DD";
1747
+ const len = format2.length;
1748
+ let result = [];
1749
+ for (let i = 0; i < len; ) {
1750
+ let minLen = Math.min(MAX_CHAR_LENGTH, len - i);
1751
+ let j = minLen;
1752
+ for (; j > 0; j--) {
1753
+ const v = format2.substring(i, i + j);
1754
+ if (EXPRESSIONS_FORMAT.includes(v)) {
1755
+ try {
1756
+ result.push(expressionsFunction$1[v](date));
1757
+ } catch (e) {
1758
+ console.log(EXPRESSIONS_FORMAT.includes(v), v, e);
1759
+ }
1760
+ break;
1761
+ }
1762
+ }
1763
+ if (j < 1) {
1764
+ result.push(format2.substring(i, i + 1));
1765
+ i += 1;
1766
+ } else {
1767
+ i += j;
1768
+ }
1769
+ }
1770
+ return result.join("");
1655
1771
  };
1772
+ const expressionsFunction$1 = {
1773
+ YY: (date) => {
1774
+ return String(date.getFullYear()).slice(-2);
1775
+ },
1776
+ YYYY: (date) => {
1777
+ return String(date.getFullYear());
1778
+ },
1779
+ M: (date) => {
1780
+ return String(date.getMonth() + 1);
1781
+ },
1782
+ MM: (date) => {
1783
+ return core.leftPad(date.getMonth() + 1, 2);
1784
+ },
1785
+ MMM: (date) => {
1786
+ return Lanauage.getMonthsMessage(date.getMonth());
1787
+ },
1788
+ MMMM: (date) => {
1789
+ return Lanauage.getMonthsMessage(date.getMonth(), "full");
1790
+ },
1791
+ D: (date) => {
1792
+ return String(date.getDate());
1793
+ },
1794
+ DD: (date) => {
1795
+ return core.leftPad(date.getDate(), 2);
1796
+ },
1797
+ d: (date) => {
1798
+ return String(date.getDate());
1799
+ },
1800
+ dd: (date) => {
1801
+ return core.leftPad(date.getDate(), 2);
1802
+ },
1803
+ ddd: (date) => {
1804
+ return Lanauage.getWeeksMessage(date.getDay());
1805
+ },
1806
+ dddd: (date) => {
1807
+ return Lanauage.getWeeksMessage(date.getDay(), "full");
1808
+ },
1809
+ H: (date) => {
1810
+ return String(date.getHours());
1811
+ },
1812
+ HH: (date) => {
1813
+ return core.leftPad(date.getHours(), 2);
1814
+ },
1815
+ h: (date) => {
1816
+ return getH(date);
1817
+ },
1818
+ hh: (date) => {
1819
+ return core.leftPad(getH(date), 2);
1820
+ },
1821
+ a: (date) => {
1822
+ return String(date.getFullYear()).slice(-2);
1823
+ },
1824
+ A: (date) => {
1825
+ return getMeridiem(date);
1826
+ },
1827
+ m: (date) => {
1828
+ return String(date.getMinutes());
1829
+ },
1830
+ mm: (date) => {
1831
+ return core.leftPad(date.getMinutes(), 2);
1832
+ },
1833
+ s: (date) => {
1834
+ return String(date.getSeconds());
1835
+ },
1836
+ ss: (date) => {
1837
+ return core.leftPad(date.getSeconds(), 2);
1838
+ },
1839
+ SSS: (date) => {
1840
+ return core.leftPad(date.getMilliseconds(), 3);
1841
+ }
1842
+ };
1843
+ function getH(date) {
1844
+ let hour = date.getHours();
1845
+ if (hour > 12) {
1846
+ hour -= 12;
1847
+ } else if (hour < 1) {
1848
+ hour = 12;
1849
+ }
1850
+ return hour;
1851
+ }
1852
+ function getMeridiem(date, isUpper, isShort) {
1853
+ const hour = date.getHours();
1854
+ let m = hour < 12 ? "am" : "pm";
1855
+ m = Lanauage.getMessage(m);
1856
+ m = m.toUpperCase();
1857
+ return m;
1858
+ }
1859
+ const parser = (dateStr, format2) => {
1860
+ if (dateStr.length > 1e3) {
1861
+ return null;
1862
+ }
1863
+ format2 = format2 || DEFAULT_FORMAT.date;
1864
+ const dateInfo = {
1865
+ year: (/* @__PURE__ */ new Date()).getFullYear(),
1866
+ month: 0,
1867
+ day: 1,
1868
+ hour: 0,
1869
+ minute: 0,
1870
+ second: 0,
1871
+ millisecond: 0,
1872
+ isPm: false,
1873
+ isH: false,
1874
+ charIdx: 0
1875
+ };
1876
+ const len = format2.length;
1877
+ let startIdx = 0;
1878
+ for (let i = 0; i < len; ) {
1879
+ let minLen = Math.min(MAX_CHAR_LENGTH, len - i);
1880
+ let j = minLen;
1881
+ for (; j > 0; j--) {
1882
+ const v = format2.substring(i, i + j);
1883
+ if (EXPRESSIONS_FORMAT.includes(v)) {
1884
+ const expInfo = expressionsFunction[v];
1885
+ const val = matchFind(dateStr.substring(startIdx), expInfo[0]);
1886
+ expInfo[1](dateInfo, val);
1887
+ startIdx += val.length;
1888
+ break;
1889
+ }
1890
+ }
1891
+ if (j < 1) {
1892
+ i += 1;
1893
+ startIdx += 1;
1894
+ } else {
1895
+ i += j;
1896
+ }
1897
+ }
1898
+ if (dateInfo.hour != null && !dateInfo.isH) {
1899
+ if (dateInfo.isPm && +dateInfo.hour !== 12) {
1900
+ dateInfo.hour = +dateInfo.hour + 12;
1901
+ } else if (!dateInfo.isPm && +dateInfo.hour === 12) {
1902
+ dateInfo.hour = 0;
1903
+ }
1904
+ }
1905
+ let date;
1906
+ date = new Date(dateInfo.year, dateInfo.month, dateInfo.day, dateInfo.hour, dateInfo.minute, dateInfo.second, dateInfo.millisecond);
1907
+ return date;
1908
+ };
1909
+ const matchFind = (val, regexp2) => {
1910
+ const match = regexp2.exec(val);
1911
+ return match == null ? "" : match[0];
1912
+ };
1913
+ const digitsCheck = {
1914
+ twoOptional: /\d\d?/,
1915
+ two: /\d\d/,
1916
+ three: /\d{3}/,
1917
+ four: /\d{4}/
1918
+ };
1919
+ const word = /[^\s]+/;
1920
+ const expressionsFunction = {
1921
+ YY: [
1922
+ digitsCheck["two"],
1923
+ (dateInfo, val) => {
1924
+ dateInfo.year = +(("" + (/* @__PURE__ */ new Date()).getFullYear()).substring(0, 2) + val);
1925
+ return dateInfo;
1926
+ }
1927
+ ],
1928
+ YYYY: [
1929
+ digitsCheck["four"],
1930
+ (dateInfo, val) => {
1931
+ dateInfo.year = +val;
1932
+ return dateInfo;
1933
+ }
1934
+ ],
1935
+ M: [
1936
+ digitsCheck["twoOptional"],
1937
+ (dateInfo, val) => {
1938
+ dateInfo.month = +val - 1;
1939
+ return dateInfo;
1940
+ }
1941
+ ],
1942
+ MM: [
1943
+ digitsCheck["two"],
1944
+ (dateInfo, val) => {
1945
+ dateInfo.month = +val - 1;
1946
+ return dateInfo;
1947
+ }
1948
+ ],
1949
+ MMM: [
1950
+ word,
1951
+ (dateInfo, val) => {
1952
+ dateInfo.month = Lanauage.getMonthsIdx(val, "abbr");
1953
+ return dateInfo;
1954
+ }
1955
+ ],
1956
+ MMMM: [
1957
+ word,
1958
+ (dateInfo, val) => {
1959
+ dateInfo.month = Lanauage.getMonthsIdx(val, "full");
1960
+ return dateInfo;
1961
+ }
1962
+ ],
1963
+ D: [
1964
+ digitsCheck["twoOptional"],
1965
+ (dateInfo, val) => {
1966
+ dateInfo.day = +val;
1967
+ return dateInfo;
1968
+ }
1969
+ ],
1970
+ DD: [
1971
+ digitsCheck["two"],
1972
+ (dateInfo, val) => {
1973
+ dateInfo.day = +val;
1974
+ return dateInfo;
1975
+ }
1976
+ ],
1977
+ d: [
1978
+ digitsCheck["twoOptional"],
1979
+ (dateInfo, val) => {
1980
+ dateInfo.day = +val;
1981
+ return dateInfo;
1982
+ }
1983
+ ],
1984
+ dd: [
1985
+ digitsCheck["two"],
1986
+ (dateInfo, val) => {
1987
+ dateInfo.day = +val;
1988
+ return dateInfo;
1989
+ }
1990
+ ],
1991
+ ddd: [
1992
+ word,
1993
+ (dateInfo, val) => {
1994
+ return dateInfo;
1995
+ }
1996
+ ],
1997
+ dddd: [
1998
+ word,
1999
+ (dateInfo, val) => {
2000
+ return dateInfo;
2001
+ }
2002
+ ],
2003
+ H: [
2004
+ digitsCheck["twoOptional"],
2005
+ (dateInfo, val) => {
2006
+ dateInfo.hour = +val;
2007
+ dateInfo.isH = true;
2008
+ return dateInfo;
2009
+ }
2010
+ ],
2011
+ HH: [
2012
+ digitsCheck["two"],
2013
+ (dateInfo, val) => {
2014
+ dateInfo.hour = +val;
2015
+ dateInfo.isH = true;
2016
+ return dateInfo;
2017
+ }
2018
+ ],
2019
+ h: [
2020
+ digitsCheck["twoOptional"],
2021
+ (dateInfo, val) => {
2022
+ dateInfo.hour = +val;
2023
+ return dateInfo;
2024
+ }
2025
+ ],
2026
+ hh: [
2027
+ digitsCheck["two"],
2028
+ (dateInfo, val) => {
2029
+ dateInfo.hour = +val;
2030
+ return dateInfo;
2031
+ }
2032
+ ],
2033
+ a: [
2034
+ word,
2035
+ (dateInfo, val) => {
2036
+ if (Lanauage.getMessage("am") != val.toLowerCase()) {
2037
+ dateInfo.isPm = true;
2038
+ }
2039
+ return dateInfo;
2040
+ }
2041
+ ],
2042
+ A: [
2043
+ word,
2044
+ (dateInfo, val) => {
2045
+ if (Lanauage.getMessage("am") != val.toLowerCase()) {
2046
+ dateInfo.isPm = true;
2047
+ }
2048
+ return dateInfo;
2049
+ }
2050
+ ],
2051
+ m: [
2052
+ digitsCheck["twoOptional"],
2053
+ (dateInfo, val) => {
2054
+ dateInfo.minute = +val;
2055
+ return dateInfo;
2056
+ }
2057
+ ],
2058
+ mm: [
2059
+ digitsCheck["two"],
2060
+ (dateInfo, val) => {
2061
+ dateInfo.minute = +val;
2062
+ return dateInfo;
2063
+ }
2064
+ ],
2065
+ s: [
2066
+ digitsCheck["twoOptional"],
2067
+ (dateInfo, val) => {
2068
+ dateInfo.second = +val;
2069
+ return dateInfo;
2070
+ }
2071
+ ],
2072
+ ss: [
2073
+ digitsCheck["two"],
2074
+ (dateInfo, val) => {
2075
+ dateInfo.second = +val;
2076
+ return dateInfo;
2077
+ }
2078
+ ],
2079
+ SSS: [
2080
+ digitsCheck["three"],
2081
+ (dateInfo, val) => {
2082
+ dateInfo.millisecond = +val;
2083
+ return dateInfo;
2084
+ }
2085
+ ]
2086
+ };
2087
+ function closestElement(el, checkElement) {
2088
+ let currentEl = el;
2089
+ while (currentEl) {
2090
+ if (currentEl == checkElement) {
2091
+ return true;
2092
+ }
2093
+ currentEl = currentEl.parentElement;
2094
+ }
2095
+ return false;
2096
+ }
2097
+ class DaraDate {
2098
+ constructor(dt) {
2099
+ this.date = dt;
2100
+ }
2101
+ setYear(num) {
2102
+ this.date.setFullYear(num);
2103
+ return this;
2104
+ }
2105
+ addYear(num) {
2106
+ this.date.setFullYear(this.date.getFullYear() + num);
2107
+ return this;
2108
+ }
2109
+ addMonth(num) {
2110
+ this.date.setMonth(this.date.getMonth() + num);
2111
+ return this;
2112
+ }
2113
+ setMonth(num) {
2114
+ this.date.setMonth(num);
2115
+ return this;
2116
+ }
2117
+ setDate(num) {
2118
+ this.date.setDate(num);
2119
+ return this;
2120
+ }
2121
+ addDate(num) {
2122
+ this.date.setDate(this.date.getDate() + num);
2123
+ return this;
2124
+ }
2125
+ addWeek(num) {
2126
+ this.date.setDate(this.date.getDate() + num * 7);
2127
+ return this;
2128
+ }
2129
+ addHours(num) {
2130
+ this.date.setHours(this.date.getHours() + num);
2131
+ return this;
2132
+ }
2133
+ setHour(num) {
2134
+ this.date.setHours(num);
2135
+ return this;
2136
+ }
2137
+ addMinutes(num) {
2138
+ this.date.setMinutes(this.date.getMinutes() + num);
2139
+ return this;
2140
+ }
2141
+ setMinutes(num) {
2142
+ this.date.setMinutes(num);
2143
+ return this;
2144
+ }
2145
+ addSeconds(num) {
2146
+ this.date.setSeconds(this.date.getSeconds() + num);
2147
+ return this;
2148
+ }
2149
+ addMilliseconds(num) {
2150
+ this.date.setMilliseconds(this.date.getMilliseconds() + num);
2151
+ return this;
2152
+ }
2153
+ compare(date) {
2154
+ if (this.date.valueOf() < date.valueOf()) {
2155
+ return -1;
2156
+ } else if (this.date.valueOf() > date.valueOf()) {
2157
+ return 1;
2158
+ }
2159
+ return 0;
2160
+ }
2161
+ getYear() {
2162
+ return this.date.getFullYear();
2163
+ }
2164
+ getMonth() {
2165
+ return this.date.getMonth() + 1;
2166
+ }
2167
+ getDate() {
2168
+ return this.date.getDate();
2169
+ }
2170
+ getDay() {
2171
+ return this.date.getDay();
2172
+ }
2173
+ getTime() {
2174
+ return this.date.getTime();
2175
+ }
2176
+ format(format$1) {
2177
+ return format(this.date, format$1);
2178
+ }
2179
+ clone() {
2180
+ return new DaraDate(new Date(this.date.valueOf()));
2181
+ }
2182
+ }
2183
+ let DEFAULT_OPTIONS$1 = {
2184
+ inline: false,
2185
+ // layer or innerhtml
2186
+ weekStartDay: 0,
2187
+ initialDate: "",
2188
+ autoClose: true,
2189
+ isRTL: false,
2190
+ mode: DateViewMode.date,
2191
+ enableTodayBtn: false,
2192
+ showMonthAfterYear: false,
2193
+ isPositionFixed: false,
2194
+ format: "",
2195
+ zIndex: 1e3,
2196
+ minDate: "",
2197
+ maxDate: "",
2198
+ beforeDrawDate: (dt) => {
2199
+ return {
2200
+ check: false,
2201
+ style: "",
2202
+ tooltip: ""
2203
+ };
2204
+ }
2205
+ };
2206
+ function hiddenElement() {
2207
+ var _a;
2208
+ if (document.getElementById("hiddenDaraDatetimeElement") == null) {
2209
+ (_a = document.querySelector("body")) == null ? void 0 : _a.insertAdjacentHTML("beforeend", `<div id="hiddenDaraDatetimeElement" class="daracl-datetime-hidden"></div>`);
2210
+ }
2211
+ return document.getElementById("hiddenDaraDatetimeElement");
2212
+ }
2213
+ let daraDatetimeIdx = 0;
2214
+ const _DateTimePicker = class _DateTimePicker2 {
2215
+ constructor(selector, options, message2) {
2216
+ var _a;
2217
+ this.isInput = false;
2218
+ this.isVisible = false;
2219
+ this.minYear = -1;
2220
+ this.maxYear = -1;
2221
+ this.minMonth = -1;
2222
+ this.maxMonth = -1;
2223
+ this.dayOrder = [0, 1, 2, 3, 4, 5, 6];
2224
+ this._documentClickEvent = (e) => {
2225
+ if (this.isVisible && e.target != this.targetElement && !closestElement(e.target, this.datetimeElement)) {
2226
+ this.hide();
2227
+ }
2228
+ };
2229
+ this.options = Object.assign({}, DEFAULT_OPTIONS$1, options);
2230
+ daraDatetimeIdx += 1;
2231
+ let selectorElement;
2232
+ if (typeof selector === "string") {
2233
+ selectorElement = document.querySelector(selector);
2234
+ } else {
2235
+ selectorElement = selector;
2236
+ }
2237
+ if (!selectorElement) {
2238
+ throw new Error(`${selector} datetimepicker element not found`);
2239
+ }
2240
+ this._viewMode = Object.keys(DateViewMode).includes(this.options.mode) ? this.options.mode : DateViewMode.date;
2241
+ this.initMode = this._viewMode;
2242
+ Lanauage.set(message2);
2243
+ if (this.initMode == DateViewMode.year) {
2244
+ this.dateFormat = this.options.format || DEFAULT_FORMAT.year;
2245
+ } else if (this.initMode == DateViewMode.month) {
2246
+ this.dateFormat = this.options.format || DEFAULT_FORMAT.month;
2247
+ } else if (this.initMode == DateViewMode.time) {
2248
+ this.dateFormat = this.options.format || DEFAULT_FORMAT.time;
2249
+ } else if (this.initMode == DateViewMode.datetime) {
2250
+ this.dateFormat = this.options.format || DEFAULT_FORMAT.datetime;
2251
+ } else {
2252
+ this.dateFormat = this.options.format || DEFAULT_FORMAT.date;
2253
+ }
2254
+ let viewDate;
2255
+ if (this.options.initialDate) {
2256
+ if (typeof this.options.initialDate === "string") {
2257
+ viewDate = new DaraDate(parser(this.options.initialDate, this.dateFormat) || /* @__PURE__ */ new Date());
2258
+ } else {
2259
+ viewDate = new DaraDate(this.options.initialDate);
2260
+ }
2261
+ } else {
2262
+ viewDate = new DaraDate(/* @__PURE__ */ new Date());
2263
+ this.options.initialDate = viewDate.format(this.dateFormat);
2264
+ }
2265
+ this.setWeekDays();
2266
+ this.todayDate = viewDate.format(DEFAULT_FORMAT.date);
2267
+ this.currentDate = viewDate;
2268
+ this.targetElement = selectorElement;
2269
+ this.minDate = this._minDate();
2270
+ this.maxDate = this._maxDate();
2271
+ if (this.options.inline) {
2272
+ this.datetimeElement = selectorElement;
2273
+ this.datetimeElement.className = `daracl-datetime-wrapper ddtp-${daraDatetimeIdx} embed`;
2274
+ } else {
2275
+ this.isInput = true;
2276
+ this.targetElement.setAttribute("value", viewDate.format(this.dateFormat));
2277
+ const datetimeElement = document.createElement("div");
2278
+ datetimeElement.className = `daracl-datetime-wrapper ddtp-${daraDatetimeIdx} layer`;
2279
+ datetimeElement.setAttribute("style", `z-index:${this.options.zIndex};`);
2280
+ (_a = hiddenElement()) == null ? void 0 : _a.appendChild(datetimeElement);
2281
+ this.datetimeElement = datetimeElement;
2282
+ this.initTargetEvent();
2283
+ }
2284
+ this.createDatetimeTemplate();
2285
+ if (this.isTimeMode()) {
2286
+ this.hourInputEle = this.datetimeElement.querySelector(".ddtp-hour");
2287
+ this.minuteInputEle = this.datetimeElement.querySelector(".ddtp-minute");
2288
+ } else {
2289
+ this.hourInputEle = {};
2290
+ this.minuteInputEle = {};
2291
+ }
2292
+ this.changeViewMode(this._viewMode);
2293
+ this.initHeaderEvent();
2294
+ this.initDateEvent();
2295
+ this.initTimeEvent();
2296
+ }
2297
+ setWeekDays() {
2298
+ let weekStartDay = this.options.weekStartDay;
2299
+ if (weekStartDay == 0) return;
2300
+ if (weekStartDay < 0 || weekStartDay > 6) {
2301
+ weekStartDay = 0;
2302
+ }
2303
+ for (let i = 0; i < 7; i++) {
2304
+ let day = weekStartDay + i;
2305
+ this.dayOrder[i] = day < 7 ? day : day - 7;
2306
+ }
2307
+ }
2308
+ static create(selector, options, message2) {
2309
+ return new _DateTimePicker2(selector, options, message2);
2310
+ }
2311
+ /**
2312
+ * default date format setting
2313
+ * @example
2314
+ ```
2315
+ setDefaultFormat({
2316
+ year: "YYYY",
2317
+ month: "YYYY-MM",
2318
+ date: "YYYY-MM-DD",
2319
+ time: "HH:mm",
2320
+ datetime: "YYYY-MM-DD HH:mm",
2321
+ });
2322
+ ```
2323
+ * @public
2324
+ * @static
2325
+ * @param {*} dateFormat
2326
+ */
2327
+ static setDefaultFormat(dateFormat) {
2328
+ Object.assign(DEFAULT_FORMAT, dateFormat);
2329
+ }
2330
+ _minDate() {
2331
+ let minDate = this.options.minDate;
2332
+ if (minDate != "") {
2333
+ if (typeof minDate === "string") {
2334
+ const dt = parser(minDate, this.dateFormat);
2335
+ if (!dt) {
2336
+ return -1;
2337
+ }
2338
+ minDate = dt;
2339
+ }
2340
+ this.minYear = minDate.getFullYear();
2341
+ this.minMonth = +(this.minYear + core.leftPad(minDate.getMonth(), 2));
2342
+ return new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate(), 0, 0).getTime();
2343
+ }
2344
+ return -1;
2345
+ }
2346
+ _maxDate() {
2347
+ let maxDate = this.options.maxDate;
2348
+ if (maxDate != "") {
2349
+ if (typeof maxDate === "string") {
2350
+ const dt = parser(maxDate, this.dateFormat);
2351
+ if (!dt) {
2352
+ return -1;
2353
+ }
2354
+ maxDate = dt;
2355
+ }
2356
+ this.maxYear = maxDate.getFullYear();
2357
+ this.maxMonth = +(this.maxYear + core.leftPad(maxDate.getMonth(), 2));
2358
+ return new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate(), 23, 59).getTime();
2359
+ }
2360
+ return -1;
2361
+ }
2362
+ set viewMode(mode) {
2363
+ if (this._viewMode === mode) {
2364
+ return;
2365
+ }
2366
+ this._viewMode = mode;
2367
+ this.changeViewMode(mode);
2368
+ }
2369
+ get viewMode() {
2370
+ return this._viewMode;
2371
+ }
2372
+ /**
2373
+ * 모드 change
2374
+ * @param mode
2375
+ */
2376
+ changeViewMode(mode) {
2377
+ var _a;
2378
+ (_a = this.datetimeElement.querySelector(".ddtp-datetime")) == null ? void 0 : _a.setAttribute("view-mode", mode);
2379
+ if (mode === "year") {
2380
+ this.yearDraw();
2381
+ } else if (mode === "month") {
2382
+ this.monthDraw();
2383
+ } else {
2384
+ this.dayDraw();
2385
+ }
2386
+ }
2387
+ /**
2388
+ * init header event
2389
+ *
2390
+ * @public
2391
+ */
2392
+ initHeaderEvent() {
2393
+ var _a, _b, _c, _d;
2394
+ const isRTL = this.options.isRTL;
2395
+ (_a = this.datetimeElement.querySelector(".ddtp-move-btn.prev")) == null ? void 0 : _a.addEventListener("click", (e) => {
2396
+ this.moveDate(isRTL ? "next" : "prev", e);
2397
+ });
2398
+ (_b = this.datetimeElement.querySelector(".ddtp-move-btn.next")) == null ? void 0 : _b.addEventListener("click", (e) => {
2399
+ this.moveDate(isRTL ? "prev" : "next", e);
2400
+ });
2401
+ (_c = this.datetimeElement.querySelector(".ddtp-header-year")) == null ? void 0 : _c.addEventListener("click", (e) => {
2402
+ this.viewMode = DateViewMode.year;
2403
+ });
2404
+ (_d = this.datetimeElement.querySelector(".ddtp-header-month")) == null ? void 0 : _d.addEventListener("click", (e) => {
2405
+ this.viewMode = DateViewMode.month;
2406
+ });
2407
+ }
2408
+ /**
2409
+ * 날짜 달력 이벤트처리.
2410
+ */
2411
+ initDateEvent() {
2412
+ var _a, _b;
2413
+ (_a = this.datetimeElement.querySelector(".ddtp-day-body")) == null ? void 0 : _a.addEventListener("click", (e) => {
2414
+ var _a2;
2415
+ const targetEle = e.target;
2416
+ if (targetEle.classList.contains("ddtp-day") || targetEle.closest(".ddtp-day")) {
2417
+ const selectDate = targetEle.getAttribute("data-day") || "1";
2418
+ const mmDD = selectDate.split(",");
2419
+ this.currentDate.setMonth(+mmDD[0] - 1);
2420
+ this.currentDate.setDate(+mmDD[1]);
2421
+ if (this.isDayDisabled(this.currentDate)) {
2422
+ return;
2423
+ }
2424
+ (_a2 = this.datetimeElement.querySelector(".select")) == null ? void 0 : _a2.classList.remove("select");
2425
+ targetEle.classList.add("select");
2426
+ if (this.isTimeMode()) {
2427
+ this.currentDate.setHour(+this.hourInputEle.value);
2428
+ this.currentDate.setMinutes(+this.minuteInputEle.value);
2429
+ }
2430
+ this.dateChangeEvent(e);
2431
+ }
2432
+ });
2433
+ (_b = this.datetimeElement.querySelector(".ddtp-today")) == null ? void 0 : _b.addEventListener("click", (e) => {
2434
+ const initDate = new DaraDate(parser(this.todayDate, DEFAULT_FORMAT.date) || /* @__PURE__ */ new Date());
2435
+ this.currentDate.setYear(initDate.getYear());
2436
+ this.currentDate.setMonth(initDate.getMonth() - 1);
2437
+ this.currentDate.setDate(initDate.getDate());
2438
+ this.changeViewMode(this.initMode);
2439
+ });
2440
+ }
2441
+ isTimeMode() {
2442
+ return this._viewMode === DateViewMode.time || this._viewMode === DateViewMode.datetime;
2443
+ }
2444
+ getTimeNumberValue(val) {
2445
+ if (!core.isNumeric(val)) {
2446
+ return 0;
2447
+ }
2448
+ return parseInt(val, 10);
2449
+ }
2450
+ /**
2451
+ * 시간 분 설정 이벤트 처리.
2452
+ *
2453
+ * @public
2454
+ */
2455
+ initTimeEvent() {
2456
+ var _a;
2457
+ if (!this.isTimeMode()) return;
2458
+ let hh = this.currentDate.format("HH");
2459
+ const datetimeElement = this.datetimeElement;
2460
+ const hourInputEle = datetimeElement.querySelector(".ddtp-hour");
2461
+ const hourRangeEle = datetimeElement.querySelector(".ddtp-hour-range");
2462
+ hourInputEle.value = hh;
2463
+ hourRangeEle.value = hh;
2464
+ hourInputEle.addEventListener("input", (e) => {
2465
+ const targetElement = e.target;
2466
+ let val = this.getTimeNumberValue(targetElement.value);
2467
+ let addVal = core.leftPadClamp(val, 2, "0");
2468
+ if (parseInt(addVal, 10) > 23) {
2469
+ addVal = "23";
2470
+ }
2471
+ hourInputEle.value = addVal;
2472
+ hourRangeEle.value = addVal;
2473
+ });
2474
+ hourRangeEle.addEventListener("input", (e) => {
2475
+ const targetElement = e.target;
2476
+ hourInputEle.value = core.leftPadClamp(targetElement.value, 2, "0");
2477
+ });
2478
+ let mm = this.currentDate.format("mm");
2479
+ const minuteInputEle = datetimeElement.querySelector(".ddtp-minute");
2480
+ const minuteRangeEle = datetimeElement.querySelector(".ddtp-minute-range");
2481
+ minuteInputEle.value = mm;
2482
+ minuteRangeEle.value = mm;
2483
+ minuteInputEle.addEventListener("input", (e) => {
2484
+ const targetElement = e.target;
2485
+ let val = this.getTimeNumberValue(targetElement.value);
2486
+ let addVal = core.leftPadClamp(val, 2, "0");
2487
+ if (parseInt(addVal, 10) > 59) {
2488
+ addVal = "59";
2489
+ }
2490
+ minuteInputEle.value = addVal;
2491
+ minuteRangeEle.value = addVal;
2492
+ });
2493
+ minuteRangeEle.addEventListener("input", (e) => {
2494
+ const targetElement = e.target;
2495
+ minuteInputEle.value = core.leftPadClamp(targetElement.value, 2, "0");
2496
+ });
2497
+ (_a = datetimeElement.querySelector(".time-select")) == null ? void 0 : _a.addEventListener("click", (e) => {
2498
+ this.currentDate.setHour(+hourInputEle.value);
2499
+ this.currentDate.setMinutes(+minuteInputEle.value);
2500
+ this.dateChangeEvent(e);
2501
+ });
2502
+ }
2503
+ /**
2504
+ * 날짜 이동
2505
+ * @param moveMode // 앞뒤 이동 prev, next
2506
+ * @returns
2507
+ */
2508
+ moveDate(moveMode, e) {
2509
+ if (this._viewMode === DateViewMode.date || this._viewMode === DateViewMode.datetime) {
2510
+ this.currentDate.setDate(1);
2511
+ this.currentDate.addMonth("prev" === moveMode ? -1 : 1);
2512
+ this.dayDraw();
2513
+ return;
2514
+ }
2515
+ if (this._viewMode === DateViewMode.month) {
2516
+ this.currentDate.setDate(1);
2517
+ this.currentDate.addYear("prev" === moveMode ? -1 : 1);
2518
+ this.monthDraw();
2519
+ return;
2520
+ }
2521
+ if (this._viewMode === DateViewMode.year) {
2522
+ this.currentDate.setDate(1);
2523
+ this.currentDate.addYear("prev" === moveMode ? -16 : 16);
2524
+ this.yearDraw();
2525
+ }
2526
+ }
2527
+ /**
2528
+ * get date value
2529
+ *
2530
+ * @returns
2531
+ */
2532
+ getDateValue() {
2533
+ return this.currentDate.format(this.dateFormat);
2534
+ }
2535
+ /**
2536
+ * 옵션 셋팅
2537
+ * @static
2538
+ * @param {DateTimePickerOptions} options
2539
+ */
2540
+ static setOptions(options) {
2541
+ DEFAULT_OPTIONS$1 = Object.assign({}, DEFAULT_OPTIONS$1, options);
2542
+ }
2543
+ /**
2544
+ * 달력 보이기 처리.
2545
+ *
2546
+ * @returns
2547
+ */
2548
+ show() {
2549
+ if (this.isVisible) {
2550
+ return;
2551
+ }
2552
+ this.isVisible = true;
2553
+ const docSize = getDocSize();
2554
+ this.datetimeElement.classList.remove("hide");
2555
+ this.datetimeElement.classList.add("show");
2556
+ const rect = this.targetElement.getBoundingClientRect();
2557
+ const scrollTop = window.scrollY || document.documentElement.scrollTop;
2558
+ const scrollLeft = window.scrollX || document.documentElement.scrollLeft;
2559
+ const elementHeight = this.datetimeElement.offsetHeight;
2560
+ const targetElementHeight = this.targetElement.offsetHeight + 2;
2561
+ let left = rect.left + scrollLeft;
2562
+ let top = 0;
2563
+ if (this.options.isPositionFixed) {
2564
+ top = rect.top + targetElementHeight;
2565
+ left = rect.left;
2566
+ } else {
2567
+ if (rect.top + targetElementHeight + elementHeight > docSize.clientHeight && rect.top >= elementHeight) {
2568
+ top = scrollTop + rect.top - elementHeight - 2;
2569
+ } else {
2570
+ top = scrollTop + rect.top + targetElementHeight;
2571
+ }
2572
+ }
2573
+ this.datetimeElement.setAttribute("style", `${this.options.isPositionFixed ? "position:fixed;" : ""}top:${top}px;left:${left}px;z-index:${this.options.zIndex}`);
2574
+ document.addEventListener("click", this._documentClickEvent);
2575
+ }
2576
+ /**
2577
+ * 달력 숨기기
2578
+ */
2579
+ hide() {
2580
+ this.isVisible = false;
2581
+ if (this.options.onClose) {
2582
+ if (this.options.onClose() === false) {
2583
+ return;
2584
+ }
2585
+ }
2586
+ this.datetimeElement.classList.remove("show");
2587
+ this.datetimeElement.classList.add("hide");
2588
+ document.removeEventListener("click", this._documentClickEvent);
2589
+ }
2590
+ /**
2591
+ * 타켓 이벤트 처리.
2592
+ */
2593
+ initTargetEvent() {
2594
+ if (this.targetElement) {
2595
+ this.targetElement.addEventListener("click", (e) => {
2596
+ this.show();
2597
+ });
2598
+ }
2599
+ }
2600
+ /**
2601
+ * 날짜 변경후 이벤트
2602
+ */
2603
+ afterChangeDatepicker() {
2604
+ const formatValue = this.currentDate.format(this.dateFormat);
2605
+ if (this.options.afterChangeDatepicker && core.isFunction(this.options.afterChangeDatepicker)) {
2606
+ this.options.afterChangeDatepicker(formatValue, this.viewMode);
2607
+ }
2608
+ }
2609
+ /**
2610
+ * 날짜 변경 전 이벤트.
2611
+ * @returns void
2612
+ */
2613
+ beforeChangeDatepicker() {
2614
+ const formatValue = this.currentDate.format(this.dateFormat);
2615
+ if (this.options.beforeChangeDatepicker && core.isFunction(this.options.beforeChangeDatepicker)) {
2616
+ const reval = this.options.beforeChangeDatepicker(formatValue, (result) => {
2617
+ if (result === false) {
2618
+ return;
2619
+ }
2620
+ this.refresh(false);
2621
+ });
2622
+ if (reval === false) {
2623
+ return;
2624
+ }
2625
+ this.refresh(false);
2626
+ return;
2627
+ }
2628
+ this.refresh(false);
2629
+ }
2630
+ dateChangeEvent(e) {
2631
+ const formatValue = this.currentDate.format(this.dateFormat);
2632
+ if (this.options.onSelect) {
2633
+ if (this.options.onSelect(formatValue, this.viewMode, e) === false) {
2634
+ return;
2635
+ }
2636
+ }
2637
+ if (this.isInput) {
2638
+ this.targetElement.setAttribute("value", formatValue);
2639
+ }
2640
+ if (!this.options.inline && this.options.autoClose) {
2641
+ this.hide();
2642
+ }
2643
+ }
2644
+ /**
2645
+ * datepicker template 그리기
2646
+ */
2647
+ createDatetimeTemplate() {
2648
+ const showMonthAfterYear = this.options.showMonthAfterYear;
2649
+ let datetimeTemplate = `<div class="ddtp-datetime ${this.options.isRTL ? "rtl" : ""}" view-mode="${this._viewMode}">
2650
+ <div class="ddtp-header">
2651
+ <span class="${showMonthAfterYear ? "ddtp-header-year" : "ddtp-header-month"}"></span>
2652
+ <span class="${showMonthAfterYear ? "ddtp-header-month" : "ddtp-header-year"}"></span>
2653
+
2654
+ <span class="ddtp-date-move">
2655
+ <a href="javascript:;" class="ddtp-move-btn prev">
2656
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><path d="M0 0h24v24H0z" fill="none"/><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"/></svg>
2657
+ </a>
2658
+ <a href="javascript:;" class="ddtp-move-btn next">
2659
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><path d="M0 0h24v24H0z" fill="none"/><path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"/></svg>
2660
+ </a>
2661
+ </span>
2662
+ </div>
2663
+ <div class="ddtp-body">
2664
+ <table class="ddtp-days">
2665
+ <thead class="ddtp-day-header">
2666
+ <tr>
2667
+ <td class="ddtp-day-label ${DAY_STYLE_CLASS[this.dayOrder[0]]}">${Lanauage.getWeeksMessage(this.dayOrder[0])}</td>
2668
+ <td class="ddtp-day-label ${DAY_STYLE_CLASS[this.dayOrder[1]]}">${Lanauage.getWeeksMessage(this.dayOrder[1])}</td>
2669
+ <td class="ddtp-day-label ${DAY_STYLE_CLASS[this.dayOrder[2]]}">${Lanauage.getWeeksMessage(this.dayOrder[2])}</td>
2670
+ <td class="ddtp-day-label ${DAY_STYLE_CLASS[this.dayOrder[3]]}">${Lanauage.getWeeksMessage(this.dayOrder[3])}</td>
2671
+ <td class="ddtp-day-label ${DAY_STYLE_CLASS[this.dayOrder[4]]}">${Lanauage.getWeeksMessage(this.dayOrder[4])}</td>
2672
+ <td class="ddtp-day-label ${DAY_STYLE_CLASS[this.dayOrder[5]]}">${Lanauage.getWeeksMessage(this.dayOrder[5])}</td>
2673
+ <td class="ddtp-day-label ${DAY_STYLE_CLASS[this.dayOrder[6]]}">${Lanauage.getWeeksMessage(this.dayOrder[6])}</td>
2674
+ </tr>
2675
+ </thead>
2676
+ <tbody class="ddtp-day-body">
2677
+ </tbody>
2678
+
2679
+ <tfoot class="ddtp-day-footer">
2680
+ <td colspan="7">
2681
+ <div style="width:99%;text-align:center;margin-top: 5px;${this.options.enableTodayBtn ? "" : "display:none;"}"><button type="button" class="ddtp-today">${Lanauage.getMessage("today")}</button></div>
2682
+ <div class="footer-tooltip"></div>
2683
+ </td>
2684
+ </tfoot>
2685
+ </table>
2686
+
2687
+ <div class="ddtp-times">
2688
+ <div class="time-container">
2689
+ <div class="ddtp-time">
2690
+ <span>H: </span><input type="number" class="ddtp-hour" min="0" max="23" maxlength="2">
2691
+ <input type="range" min="0" max="23" class="ddtp-hour-range">
2692
+ </div>
2693
+ <div class="ddtp-time">
2694
+ <span>M: </span><input type="number" class="ddtp-minute" min="0" max="59" size="2" maxlength="2">
2695
+ <input type="range" min="0" max="59" class="ddtp-minute-range">
2696
+ </div>
2697
+ </div>
2698
+ <div class="ddtp-btn">
2699
+ <button type="button" class="time-select">${Lanauage.getMessage("ok")}</button>
2700
+ </div>
2701
+ </div>
1656
2702
 
1657
- // src/renderer/DateRender.ts
1658
- var import_datetimepicker = __toESM(require("@daracl/datetimepicker"));
1659
- var DateRender = class extends Render {
2703
+ <div class="ddtp-months">
2704
+ </div>
2705
+
2706
+ <div class="ddtp-years">
2707
+ </div>
2708
+ </div>
2709
+ </div>`;
2710
+ this.datetimeElement.innerHTML = datetimeTemplate;
2711
+ }
2712
+ refresh(beforeChangeDatepickerCheck) {
2713
+ if (this._viewMode === DateViewMode.date || this._viewMode === DateViewMode.datetime) {
2714
+ this.dayDraw(beforeChangeDatepickerCheck);
2715
+ return;
2716
+ }
2717
+ if (this._viewMode === DateViewMode.month) {
2718
+ this.monthDraw(beforeChangeDatepickerCheck);
2719
+ return;
2720
+ }
2721
+ if (this._viewMode === DateViewMode.year) {
2722
+ this.yearDraw(beforeChangeDatepickerCheck);
2723
+ }
2724
+ }
2725
+ /**
2726
+ * 년 달력 그리기
2727
+ */
2728
+ yearDraw(beforeChangeDatepickerCheck) {
2729
+ var _a;
2730
+ const currentYear = this.currentDate.format("YYYY");
2731
+ if (beforeChangeDatepickerCheck !== false && this.initMode == DateViewMode.year) {
2732
+ this.beforeChangeDatepicker();
2733
+ return;
2734
+ }
2735
+ const startYear = +currentYear - 8;
2736
+ this.datetimeElement.querySelector(".ddtp-header-year").textContent = `${startYear} ~ ${startYear + 15}`;
2737
+ const beforeDrawDateFlag = core.isFunction(this.options.beforeDrawDate);
2738
+ const beforeDrawDateFn = beforeDrawDateFlag ? this.options.beforeDrawDate : false;
2739
+ const calHTML = [];
2740
+ for (let i = 0; i < 16; i++) {
2741
+ const year = startYear + i;
2742
+ const disabled = this.isYearDisabled(year);
2743
+ let addStylceClass = disabled ? " disabled" : "";
2744
+ let tooltip = "";
2745
+ if (beforeDrawDateFlag && beforeDrawDateFn) {
2746
+ const reval = beforeDrawDateFn({ mode: this._viewMode, date: year });
2747
+ addStylceClass += reval.style ? " " + reval.style : "";
2748
+ tooltip = reval.tooltip;
2749
+ tooltip = tooltip ? `title="${tooltip}"` : "";
2750
+ }
2751
+ calHTML.push(`<div class="ddtp-year ${addStylceClass}" data-year="${year}" ${tooltip}>${year}</div>`);
2752
+ }
2753
+ this.datetimeElement.querySelector(".ddtp-years").innerHTML = calHTML.join("");
2754
+ if (this.initMode == DateViewMode.year) {
2755
+ this.afterChangeDatepicker();
2756
+ }
2757
+ (_a = this.datetimeElement.querySelectorAll(".ddtp-year")) == null ? void 0 : _a.forEach((yearEle) => {
2758
+ yearEle.addEventListener("click", (e) => {
2759
+ const targetEle = e.target;
2760
+ if (targetEle) {
2761
+ const year = targetEle.getAttribute("data-year");
2762
+ if (year) {
2763
+ const numYear = +year;
2764
+ if (this.isYearDisabled(numYear)) {
2765
+ return;
2766
+ }
2767
+ if (this.initMode == DateViewMode.year) {
2768
+ if (this.isYearDisabled(numYear)) {
2769
+ return;
2770
+ }
2771
+ this.currentDate.setYear(numYear);
2772
+ this.dateChangeEvent(e);
2773
+ return;
2774
+ }
2775
+ this.currentDate.setYear(numYear);
2776
+ this.viewMode = this.initMode;
2777
+ }
2778
+ }
2779
+ });
2780
+ });
2781
+ }
2782
+ /**
2783
+ * 월 달력 그리기
2784
+ */
2785
+ monthDraw(beforeChangeDatepickerCheck) {
2786
+ var _a;
2787
+ if (beforeChangeDatepickerCheck !== false && this.initMode == DateViewMode.month) {
2788
+ this.beforeChangeDatepicker();
2789
+ return;
2790
+ }
2791
+ const year = this.currentDate.format("YYYY");
2792
+ this.datetimeElement.querySelector(".ddtp-header-year").textContent = `${year}`;
2793
+ const monthElements = this.datetimeElement.querySelectorAll(".ddtp-months > .ddtp-month");
2794
+ if (monthElements.length > 0) {
2795
+ if (this.isYearDisabled(+year)) {
2796
+ monthElements.forEach((monthEle) => {
2797
+ if (!monthEle.classList.contains("disabled")) {
2798
+ monthEle.classList.add("disabled");
2799
+ }
2800
+ });
2801
+ return;
2802
+ }
2803
+ monthElements.forEach((monthEle, idx) => {
2804
+ if (this.isMonthDisabled(+year, idx)) {
2805
+ if (!monthEle.classList.contains("disabled")) {
2806
+ monthEle.classList.add("disabled");
2807
+ }
2808
+ } else {
2809
+ monthEle.classList.remove("disabled");
2810
+ }
2811
+ });
2812
+ if (this.initMode == DateViewMode.month) {
2813
+ this.afterChangeDatepicker();
2814
+ }
2815
+ return;
2816
+ }
2817
+ this.datetimeElement.querySelector(".ddtp-header-month").textContent = this.currentDate.format("MMMM");
2818
+ const beforeDrawDateFlag = core.isFunction(this.options.beforeDrawDate);
2819
+ const beforeDrawDateFn = beforeDrawDateFlag ? this.options.beforeDrawDate : false;
2820
+ const calHTML = [];
2821
+ for (let i = 0; i < 12; i++) {
2822
+ const disabled = this.isMonthDisabled(+year, i);
2823
+ let addStylceClass = disabled ? " disabled" : "";
2824
+ let tooltip = "";
2825
+ if (beforeDrawDateFlag && beforeDrawDateFn) {
2826
+ const reval = beforeDrawDateFn({ mode: this._viewMode, date: year + "/" + (i + 1) });
2827
+ addStylceClass += reval.style ? " " + reval.style : "";
2828
+ tooltip = reval.tooltip;
2829
+ tooltip = tooltip ? `title="${tooltip}"` : "";
2830
+ }
2831
+ calHTML.push(`<div class="ddtp-month ${addStylceClass}" data-month="${i}" ${tooltip}>${Lanauage.getMonthsMessage(i, "abbr")}</div>`);
2832
+ }
2833
+ this.datetimeElement.querySelector(".ddtp-months").innerHTML = calHTML.join("");
2834
+ if (this.initMode == DateViewMode.month) {
2835
+ this.afterChangeDatepicker();
2836
+ }
2837
+ (_a = this.datetimeElement.querySelectorAll(".ddtp-month")) == null ? void 0 : _a.forEach((monthEle) => {
2838
+ monthEle.addEventListener("click", (e) => {
2839
+ const targetEle = e.target;
2840
+ if (targetEle) {
2841
+ const month = targetEle.getAttribute("data-month");
2842
+ if (month) {
2843
+ if (this.isMonthDisabled(this.currentDate.getYear(), +month)) {
2844
+ return false;
2845
+ }
2846
+ if (this.initMode == DateViewMode.month) {
2847
+ this.currentDate.setMonth(+month);
2848
+ this.dateChangeEvent(e);
2849
+ return;
2850
+ }
2851
+ this.currentDate.setMonth(+month);
2852
+ this.viewMode = this.initMode;
2853
+ this.dayDraw();
2854
+ }
2855
+ }
2856
+ });
2857
+ });
2858
+ }
2859
+ /**
2860
+ * 날짜 그리기
2861
+ */
2862
+ dayDraw(beforeChangeDatepickerCheck) {
2863
+ if (beforeChangeDatepickerCheck !== false && (this.initMode == DateViewMode.date || this.initMode == DateViewMode.datetime)) {
2864
+ this.beforeChangeDatepicker();
2865
+ return;
2866
+ }
2867
+ let monthFirstDate = this.currentDate.clone();
2868
+ const currentMonth = monthFirstDate.getMonth();
2869
+ monthFirstDate.setDate(1);
2870
+ this.datetimeElement.querySelector(".ddtp-header-year").textContent = monthFirstDate.format("YYYY");
2871
+ this.datetimeElement.querySelector(".ddtp-header-month").textContent = monthFirstDate.format("MMMM");
2872
+ let day = monthFirstDate.getDay();
2873
+ day = day - this.dayOrder[0];
2874
+ if (day >= 0) {
2875
+ monthFirstDate.addDate(-day);
2876
+ } else {
2877
+ monthFirstDate.addDate(-(7 + day));
2878
+ }
2879
+ const beforeDrawDateFlag = core.isFunction(this.options.beforeDrawDate);
2880
+ const beforeDrawDateFn = beforeDrawDateFlag ? this.options.beforeDrawDate : false;
2881
+ const calHTML = [];
2882
+ for (let i = 0; i < 42; i++) {
2883
+ let dateItem;
2884
+ if (i == 0) {
2885
+ dateItem = monthFirstDate;
2886
+ } else {
2887
+ dateItem = monthFirstDate.clone().addDate(i);
2888
+ }
2889
+ const dateItemFormat = dateItem.format(DEFAULT_FORMAT.date);
2890
+ if (i % 7 == 0) {
2891
+ calHTML.push((i == 0 ? "" : "</tr>") + "<tr>");
2892
+ }
2893
+ let disabled = this.isDayDisabled(dateItem);
2894
+ let addStylceClass = DAY_STYLE_CLASS[this.dayOrder[i % 7]];
2895
+ const dateItemMonth = dateItem.getMonth();
2896
+ if (dateItemMonth != currentMonth) {
2897
+ if (dateItemMonth < currentMonth) {
2898
+ addStylceClass += dateItemMonth == 1 ? " new" : " old";
2899
+ } else {
2900
+ addStylceClass += currentMonth == 1 && dateItemMonth == 12 ? " old" : " new";
2901
+ }
2902
+ }
2903
+ addStylceClass += this.todayDate == dateItemFormat ? " ddtp-today" : "";
2904
+ addStylceClass += disabled ? " disabled" : "";
2905
+ let tooltip = "";
2906
+ if (beforeDrawDateFlag && beforeDrawDateFn) {
2907
+ const reval = beforeDrawDateFn({ mode: this._viewMode, item: dateItem, date: dateItem.format(this.dateFormat) });
2908
+ addStylceClass += reval.style ? " " + reval.style : "";
2909
+ addStylceClass += reval.check ? " ddtp-event" : "";
2910
+ tooltip = reval.tooltip;
2911
+ tooltip = tooltip ? `title="${tooltip}"` : "";
2912
+ }
2913
+ calHTML.push(`<td class="ddtp-day ${addStylceClass}" data-day="${dateItem.format("M,D")}" ${tooltip}>`);
2914
+ calHTML.push(`<span>${dateItem.format("d")}</span>`);
2915
+ calHTML.push("</td>");
2916
+ }
2917
+ calHTML.push("</tr>");
2918
+ this.datetimeElement.querySelector(".ddtp-day-body").innerHTML = calHTML.join("");
2919
+ if (this.initMode == DateViewMode.date || this.initMode == DateViewMode.datetime) {
2920
+ this.afterChangeDatepicker();
2921
+ }
2922
+ }
2923
+ isDayDisabled(dateItem) {
2924
+ if (this.minDate != -1 && this.minDate > dateItem.getTime() || this.maxDate != -1 && this.maxDate < dateItem.getTime()) {
2925
+ return true;
2926
+ }
2927
+ return false;
2928
+ }
2929
+ isYearDisabled(year) {
2930
+ if (this.minYear != -1 && this.minYear > year || this.maxYear != -1 && this.maxYear < year) {
2931
+ return true;
2932
+ }
2933
+ return false;
2934
+ }
2935
+ isMonthDisabled(year, month) {
2936
+ if (this.isYearDisabled(year)) {
2937
+ return true;
2938
+ }
2939
+ let yearMonth = +(year + core.leftPad(month, 2));
2940
+ if (this.minMonth != -1 && this.minMonth > yearMonth || this.maxMonth != -1 && this.maxMonth < yearMonth) {
2941
+ return true;
2942
+ }
2943
+ return false;
2944
+ }
2945
+ static setMessage(message2) {
2946
+ Lanauage.setDefaultMessage(message2);
2947
+ }
2948
+ };
2949
+ _DateTimePicker.VERSION = `${"0.0.13"}`;
2950
+ _DateTimePicker.format = format;
2951
+ _DateTimePicker.parser = parser;
2952
+ let DateTimePicker = _DateTimePicker;
2953
+ function getDocSize() {
2954
+ return {
2955
+ clientHeight: Math.max(document.documentElement.clientHeight, window.innerHeight || 0),
2956
+ clientWidth: Math.max(document.documentElement.clientWidth, window.innerWidth || 0)
2957
+ };
2958
+ }
2959
+ class DateRender extends Render {
1660
2960
  constructor(field, rowElement, daraForm) {
1661
2961
  super(daraForm, field, rowElement);
1662
2962
  this.mounted();
@@ -1665,39 +2965,35 @@ var DateRender = class extends Render {
1665
2965
  }
1666
2966
  mounted() {
1667
2967
  let dateOnSelectEvent;
1668
- this.field.customOptions = Object.assign({}, this.field.customOptions);
1669
- if (typeof this.field.customOptions.onSelect !== "undefined") {
1670
- dateOnSelectEvent = typeof this.field.customOptions.onSelect;
2968
+ this.field.rendererOptions = Object.assign({}, this.field.rendererOptions);
2969
+ if (typeof this.field.rendererOptions.onSelect !== "undefined") {
2970
+ dateOnSelectEvent = typeof this.field.rendererOptions.onSelect;
1671
2971
  }
1672
- if (isUndefined(this.field.customOptions.mode)) {
2972
+ if (isUndefined(this.field.rendererOptions.mode)) {
1673
2973
  if (this.field.renderType == "datemonth" || this.field.renderType == "datehour") {
1674
- this.field.customOptions.mode = this.field.renderType.replace("date", "");
2974
+ this.field.rendererOptions.mode = this.field.renderType.replace("date", "");
1675
2975
  } else {
1676
- this.field.customOptions.mode = this.field.renderType;
2976
+ this.field.rendererOptions.mode = this.field.renderType;
1677
2977
  }
1678
2978
  }
1679
- this.field.customOptions.onSelect = (dt, e) => {
2979
+ this.field.rendererOptions.onSelect = (dt, e) => {
1680
2980
  if (dateOnSelectEvent) {
1681
2981
  dateOnSelectEvent(dt, e);
1682
2982
  }
1683
2983
  this.setValue(dt);
1684
2984
  this.valid();
1685
2985
  };
1686
- this.dateObj = new import_datetimepicker.default(this.element, this.field.customOptions, {});
2986
+ this.dateObj = new DateTimePicker(this.element, this.field.rendererOptions, {});
1687
2987
  }
1688
- // async loadDate() {
1689
- // const DateTimePicker = await import("@daracl/datetimepicker");
1690
- // this.dateObj = new DateTimePicker.default(this.element, this.field.customOptions, {} as any);
1691
- // }
1692
2988
  createField() {
1693
2989
  const field = this.field;
1694
2990
  const fieldContainerElement = this.rowElement.querySelector(".df-field-container");
1695
2991
  fieldContainerElement.innerHTML = `
1696
2992
  <div class="df-field">
1697
- <input type="text" name="${field.$xssName}" class="form-field text help-icon" autocomplete="off" readonly/>
2993
+ <input type="text" name="${field.$xssName}" class="df-form-field df-text df-help-icon" autocomplete="off" readonly/>
1698
2994
  </div>
1699
2995
  ${Render.getDescriptionTemplate(field)}
1700
- <div class="help-message"></div>
2996
+ <div class="df-help-message"></div>
1701
2997
  `;
1702
2998
  this.element = fieldContainerElement.querySelector(`[name="${field.$xssName}"]`);
1703
2999
  }
@@ -1725,82 +3021,8 @@ var DateRender = class extends Render {
1725
3021
  invalidMessage(this.field, this.rowElement, validResult);
1726
3022
  return validResult;
1727
3023
  }
1728
- };
1729
-
1730
- // src/util/styleUtils.ts
1731
- var styleUtils_default = {
1732
- /**
1733
- * field style 처리
1734
- *
1735
- * @param formOptions FormOptions
1736
- * @param field FormField
1737
- * @param beforeField FormField
1738
- * @returns FieldStyle
1739
- */
1740
- fieldStyle(formOptions, field, beforeField, isLabelHide) {
1741
- const fieldStyle = {
1742
- rowStyleClass: field.orientation === "horizontal" ? "horizontal" : "vertical",
1743
- fieldClass: "",
1744
- fieldStyle: "",
1745
- labelClass: "",
1746
- labelStyle: "",
1747
- labelAlignClass: "",
1748
- valueClass: "",
1749
- valueStyle: "",
1750
- tabAlignClass: ""
1751
- };
1752
- const defaultLabelWidth = beforeField?.style?.labelWidth ?? formOptions.style.labelWidth ?? "3";
1753
- let defaultValueWidth = beforeField?.style?.valueWidth ?? formOptions.style.valueWidth ?? "9";
1754
- const position = beforeField?.style?.position ?? formOptions.style.position;
1755
- const width = field.style?.width;
1756
- const positionArr = FIELD_POSITION_STYLE[field.style?.position] ?? FIELD_POSITION_STYLE[position] ?? FIELD_POSITION_STYLE.top;
1757
- fieldStyle.fieldClass = `${positionArr[0]} ${field.style?.customClass || ""}`;
1758
- if (width) {
1759
- if (isNumber(width)) {
1760
- fieldStyle.fieldClass += isNumber(width) ? ` col-xs-${width}` : "";
1761
- } else {
1762
- fieldStyle.fieldStyle = isNumber(width) ? "" : `width:${width};`;
1763
- }
1764
- }
1765
- fieldStyle.tabAlignClass = "tab-al-" + (["right", "center"].includes(field.style?.tabAlign) ? field.style.tabAlign : "left");
1766
- const labelWidth = field.style?.labelWidth || defaultLabelWidth;
1767
- fieldStyle.labelAlignClass = positionArr[1];
1768
- if (!isLabelHide && labelWidth && !["top", "bottom"].includes(positionArr[0])) {
1769
- if (isNumber(labelWidth)) {
1770
- const labelWidthValue = +labelWidth;
1771
- defaultValueWidth = 12 - labelWidthValue;
1772
- fieldStyle.labelClass = `col-xs-${labelWidthValue}`;
1773
- fieldStyle.valueClass = fieldStyle.labelStyle ? "col-full" : `col-xs-${defaultValueWidth}`;
1774
- } else {
1775
- fieldStyle.labelStyle = `width:${labelWidth};`;
1776
- }
1777
- }
1778
- const valueWidth = field.style?.valueWidth || defaultValueWidth;
1779
- if (isLabelHide && !["left", "right"].includes(positionArr[0])) {
1780
- fieldStyle.valueClass = "col-full";
1781
- } else {
1782
- if (valueWidth && !["top", "bottom"].includes(positionArr[0])) {
1783
- if (isNumber(valueWidth)) {
1784
- fieldStyle.valueClass = fieldStyle.labelStyle ? "col-full" : `col-xs-${valueWidth}`;
1785
- } else {
1786
- fieldStyle.valueStyle = `width:${valueWidth};`;
1787
- }
1788
- } else {
1789
- fieldStyle.valueClass = fieldStyle.labelStyle ? "col-full" : "";
1790
- }
1791
- }
1792
- fieldStyle.fieldClass = spaceReplace(fieldStyle.fieldClass);
1793
- fieldStyle.labelClass = spaceReplace(fieldStyle.labelClass);
1794
- fieldStyle.valueClass = spaceReplace(fieldStyle.valueClass);
1795
- return fieldStyle;
1796
- }
1797
- };
1798
- function spaceReplace(str) {
1799
- return str.replace(/\s+/g, " ").trim();
1800
3024
  }
1801
-
1802
- // src/renderer/TabRender.ts
1803
- var TabRender = class extends Render {
3025
+ class TabRender extends Render {
1804
3026
  constructor(field, rowElement, daraForm) {
1805
3027
  super(daraForm, field, rowElement);
1806
3028
  if (field.renderer) {
@@ -1814,7 +3036,7 @@ var TabRender = class extends Render {
1814
3036
  if (this.customFunction.mounted) {
1815
3037
  this.customFunction.mounted.call(this, this.field, this.rowElement);
1816
3038
  }
1817
- this.tabContainerElement.querySelectorAll(".tab-item").forEach((tabItem) => {
3039
+ this.tabContainerElement.querySelectorAll(".df-tab-item").forEach((tabItem) => {
1818
3040
  tabItem.addEventListener("click", (e) => {
1819
3041
  this.clickEventHandler(tabItem, e);
1820
3042
  });
@@ -1830,21 +3052,21 @@ var TabRender = class extends Render {
1830
3052
  this.setActive(tabItem.getAttribute("data-tab-id") ?? "");
1831
3053
  }
1832
3054
  setActive(tabId) {
3055
+ var _a, _b;
1833
3056
  const tabItem = this.tabContainerElement.querySelector(`[data-tab-id="${tabId}"]`);
1834
- if (!tabItem)
1835
- return;
3057
+ if (!tabItem) return;
1836
3058
  if (!tabItem.classList.contains("active")) {
1837
- for (let item of tabItem?.parentElement?.children ?? []) {
3059
+ for (let item of ((_a = tabItem == null ? void 0 : tabItem.parentElement) == null ? void 0 : _a.children) ?? []) {
1838
3060
  item.classList.remove("active");
1839
3061
  }
1840
3062
  tabItem.classList.add("active");
1841
3063
  }
1842
3064
  const tabPanel = this.rowElement.querySelector(`[tab-panel-id="${tabId}"]`);
1843
- if (!tabPanel?.classList.contains("active")) {
1844
- for (let item of tabPanel?.parentElement?.children ?? []) {
3065
+ if (!(tabPanel == null ? void 0 : tabPanel.classList.contains("active"))) {
3066
+ for (let item of ((_b = tabPanel == null ? void 0 : tabPanel.parentElement) == null ? void 0 : _b.children) ?? []) {
1845
3067
  item.classList.remove("active");
1846
3068
  }
1847
- tabPanel?.classList.add("active");
3069
+ tabPanel == null ? void 0 : tabPanel.classList.add("active");
1848
3070
  }
1849
3071
  }
1850
3072
  static isDataRender() {
@@ -1862,37 +3084,38 @@ var TabRender = class extends Render {
1862
3084
  * @returns {string} template string
1863
3085
  */
1864
3086
  createField() {
3087
+ var _a, _b;
1865
3088
  const field = this.field;
1866
3089
  const formTemplate = this.daraForm.formTemplate;
1867
3090
  const options = this.daraForm.getOptions();
1868
3091
  const fieldContainerElement = this.rowElement.querySelector(".df-field-container");
1869
- let fieldStyle = styleUtils_default.fieldStyle(options, field);
3092
+ let fieldStyle = resolveFieldStyle(options, field);
1870
3093
  fieldContainerElement.innerHTML = `
1871
3094
  <div class="df-field ">
1872
- <div class="tab-header ${fieldStyle.tabAlignClass}"></div>
3095
+ <div class="df-tab-header ${fieldStyle.tabAlignClass}"></div>
1873
3096
  </div>
1874
3097
  <div class="df-tab-body"></div>
1875
3098
  `;
1876
3099
  if (field.children) {
1877
3100
  let firstFlag = true;
1878
3101
  const formOptions = this.getForm().getOptions();
1879
- let fieldStyle2 = styleUtils_default.fieldStyle(formOptions, field, null, formTemplate.isLabelHide(field));
3102
+ let fieldStyle2 = resolveFieldStyle(formOptions, field, null, formTemplate.isLabelHide(field));
1880
3103
  for (const childField of field.children) {
1881
3104
  childField.$parent = field;
1882
3105
  formTemplate.addRowFieldInfo(childField);
1883
3106
  let id = childField.$key;
1884
- let tabTemplate = `<span class="tab-item ${firstFlag ? "active" : ""}" data-tab-id="${id}"><a href="javascript:;">${childField.label}</a></span>`;
1885
- let tabBodyTemplate = `<div class="tab-panel ${firstFlag ? "active" : ""}" tab-panel-id="${id}">${Render.getDescriptionTemplate(childField)}
1886
- <div class="tab-group"></div>
3107
+ let tabTemplate = `<span class="df-tab-item ${firstFlag ? "active" : ""}" data-tab-id="${id}"><a href="javascript:;">${childField.label}</a></span>`;
3108
+ let tabBodyTemplate = `<div class="df-tab-panel ${firstFlag ? "active" : ""}" tab-panel-id="${id}">${Render.getDescriptionTemplate(childField)}
3109
+ <div class="df-tab-group"></div>
1887
3110
  </div>`;
1888
3111
  const tabElement = templateToElement(tabTemplate);
1889
3112
  const tabBodyElement = templateToElement(tabBodyTemplate);
1890
3113
  firstFlag = false;
1891
3114
  if (tabElement) {
1892
- fieldContainerElement.querySelector(".tab-header")?.appendChild(tabElement);
3115
+ (_a = fieldContainerElement.querySelector(".df-tab-header")) == null ? void 0 : _a.appendChild(tabElement);
1893
3116
  }
1894
3117
  if (tabBodyElement) {
1895
- fieldContainerElement.querySelector(".df-tab-body")?.appendChild(tabBodyElement);
3118
+ (_b = fieldContainerElement.querySelector(".df-tab-body")) == null ? void 0 : _b.appendChild(tabBodyElement);
1896
3119
  if (childField.children) {
1897
3120
  let tabFormOptions = {
1898
3121
  style: {
@@ -1907,7 +3130,7 @@ var TabRender = class extends Render {
1907
3130
  fields: []
1908
3131
  };
1909
3132
  childField.$tabForm = new DaraForm(document.createElement("div"), tabFormOptions);
1910
- childField.$instance = new childField.$renderType(childField, tabBodyElement?.querySelector(".tab-group"), childField.$tabForm);
3133
+ childField.$instance = new childField.$renderType(childField, tabBodyElement == null ? void 0 : tabBodyElement.querySelector(".df-tab-group"), childField.$tabForm);
1911
3134
  childField.$tabForm.formTemplate.childTemplate(childField, fieldStyle2);
1912
3135
  }
1913
3136
  }
@@ -1916,13 +3139,14 @@ var TabRender = class extends Render {
1916
3139
  }
1917
3140
  }
1918
3141
  getValue() {
3142
+ var _a;
1919
3143
  if (this.customFunction.getValue) {
1920
3144
  return this.customFunction.getValue.call(this, this.field, this.rowElement);
1921
3145
  }
1922
3146
  let allTabValue = {};
1923
3147
  let useTypeValue = this.getForm().getOptions().useTypeValue;
1924
3148
  for (const childField of this.field.children) {
1925
- const childFieldValue = childField.$tabForm?.getValue(false);
3149
+ const childFieldValue = (_a = childField.$tabForm) == null ? void 0 : _a.getValue(false);
1926
3150
  if (useTypeValue) {
1927
3151
  allTabValue[childField.$validName] = childFieldValue;
1928
3152
  } else {
@@ -1934,10 +3158,11 @@ var TabRender = class extends Render {
1934
3158
  return allTabValue;
1935
3159
  }
1936
3160
  setValue(value) {
3161
+ var _a;
1937
3162
  for (const childField of this.field.children) {
1938
3163
  let tabChildValue = value[childField.$validName];
1939
3164
  if (tabChildValue) {
1940
- childField.$tabForm?.setValue(tabChildValue);
3165
+ (_a = childField.$tabForm) == null ? void 0 : _a.setValue(tabChildValue);
1941
3166
  }
1942
3167
  }
1943
3168
  }
@@ -1947,6 +3172,7 @@ var TabRender = class extends Render {
1947
3172
  return this.rowElement;
1948
3173
  }
1949
3174
  valid() {
3175
+ var _a;
1950
3176
  if (this.customFunction.valid) {
1951
3177
  const validResult = this.customFunction.valid.call(this, this.field, this.rowElement);
1952
3178
  invalidMessage(this.field, this.rowElement, validResult);
@@ -1954,7 +3180,7 @@ var TabRender = class extends Render {
1954
3180
  }
1955
3181
  const field = this.field;
1956
3182
  for (const childField of field.children) {
1957
- const validResult = childField.$tabForm?.validForm();
3183
+ const validResult = (_a = childField.$tabForm) == null ? void 0 : _a.validForm();
1958
3184
  if (validResult && validResult.length > 0) {
1959
3185
  const firstItem = validResult[0];
1960
3186
  if (firstItem.message) {
@@ -1967,11 +3193,9 @@ var TabRender = class extends Render {
1967
3193
  }
1968
3194
  focus() {
1969
3195
  }
1970
- };
1971
-
1972
- // src/renderer/GridRender.ts
1973
- var $$idx = 0;
1974
- var GridRender = class extends Render {
3196
+ }
3197
+ let $$idx = 0;
3198
+ class GridRender extends Render {
1975
3199
  constructor(field, rowElement, daraForm) {
1976
3200
  super(daraForm, field, rowElement);
1977
3201
  this.allAddRowInfo = {};
@@ -1997,11 +3221,12 @@ var GridRender = class extends Render {
1997
3221
  this.setDefaultInfo();
1998
3222
  }
1999
3223
  mounted() {
3224
+ var _a;
2000
3225
  this.addRow();
2001
3226
  if (this.customFunction.mounted) {
2002
3227
  this.customFunction.mounted.call(this, this.field, this.rowElement);
2003
3228
  }
2004
- this.rowElement.querySelector(".df-grid-add-row-btn")?.addEventListener("click", (evt) => {
3229
+ (_a = this.rowElement.querySelector(".df-grid-add-row-btn")) == null ? void 0 : _a.addEventListener("click", (evt) => {
2005
3230
  this.addRow();
2006
3231
  });
2007
3232
  }
@@ -2012,6 +3237,7 @@ var GridRender = class extends Render {
2012
3237
  return false;
2013
3238
  }
2014
3239
  createField() {
3240
+ var _a, _b, _c, _d;
2015
3241
  const field = this.field;
2016
3242
  const fieldContainerElement = this.rowElement.querySelector(".df-field-container");
2017
3243
  let theadTemplate = [];
@@ -2023,12 +3249,12 @@ var GridRender = class extends Render {
2023
3249
  theadTemplate.push("<tr>");
2024
3250
  colgroupTemplate.push(`<col style="width:38px">`);
2025
3251
  theadTemplate.push("<th>");
2026
- if (field.gridOptions?.disableAddButton !== true) {
3252
+ if (((_a = field.rendererOptions) == null ? void 0 : _a.disableAddButton) !== true) {
2027
3253
  theadTemplate.push(`<button type="button" class="df-btn df-grid-add-row-btn" title="Add"><i class="df-icon df-add-icon"></i></button>`);
2028
3254
  }
2029
3255
  theadTemplate.push("</th>");
2030
3256
  for (const childField of field.children) {
2031
- colgroupTemplate.push(`<col style="width:${childField.style?.width ?? "*"}">`);
3257
+ colgroupTemplate.push(`<col style="width:${((_b = childField.style) == null ? void 0 : _b.width) ?? "*"}">`);
2032
3258
  theadTemplate.push(`<th class="df-grid-header">${childField.label}</th>`);
2033
3259
  }
2034
3260
  colgroupTemplate.push("</colgroup>");
@@ -2037,7 +3263,7 @@ var GridRender = class extends Render {
2037
3263
  fieldContainerElement.innerHTML = `
2038
3264
  <div class="df-grid-field">
2039
3265
  ${addBtnTemplate.join("")}
2040
- <div class="df-grid-container ${field.style?.position ?? ""}" style="height:${field.gridOptions?.height ?? "auto"};">
3266
+ <div class="df-grid-container ${((_c = field.style) == null ? void 0 : _c.position) ?? ""}" style="height:${((_d = field.rendererOptions) == null ? void 0 : _d.height) ?? "auto"};">
2041
3267
  <table class="df-grid">${colgroupTemplate.join("")}<thead>${theadTemplate.join("")}</thead><tbody></tbody></table>
2042
3268
  </div>
2043
3269
  </div>
@@ -2047,20 +3273,21 @@ var GridRender = class extends Render {
2047
3273
  * add row
2048
3274
  */
2049
3275
  addRow(valueItem) {
3276
+ var _a, _b, _c;
2050
3277
  let rowTemplate = [];
2051
3278
  const options = this.daraForm.getOptions();
2052
3279
  const formTemplate = this.gridForm.formTemplate;
2053
3280
  const parentName = this.field.$xssName;
2054
3281
  ++$$idx;
2055
3282
  let addColumns = [];
2056
- rowTemplate.push(`<tr class="grid-row">`);
3283
+ rowTemplate.push(`<tr class="df-grid-row">`);
2057
3284
  rowTemplate.push("<td>");
2058
- if (this.field.gridOptions?.disableRemoveButton !== true) {
3285
+ if (((_a = this.field.rendererOptions) == null ? void 0 : _a.disableRemoveButton) !== true) {
2059
3286
  rowTemplate.push(`<button type="button" data-row-idx="${$$idx}" class="df-btn df-grid-row-remove"><i class="df-icon df-remove-icon"></i></button>`);
2060
3287
  }
2061
3288
  rowTemplate.push("</td>");
2062
3289
  for (const childField of this.field.children) {
2063
- let fieldStyle = styleUtils_default.fieldStyle(options, childField, null, true);
3290
+ let fieldStyle = resolveFieldStyle(options, childField, null, true);
2064
3291
  let columnField = merge({}, childField);
2065
3292
  addColumns.push(columnField);
2066
3293
  columnField.$orgin = childField;
@@ -2073,14 +3300,14 @@ var GridRender = class extends Render {
2073
3300
  this.allAddRowInfo[$$idx] = addColumns;
2074
3301
  const addRowElement = templateToElement(rowTemplate.join(""));
2075
3302
  if (addRowElement) {
2076
- this.rowElement.querySelector("tbody")?.append(addRowElement);
2077
- addRowElement.querySelector(".df-grid-row-remove")?.addEventListener("click", (evt) => {
3303
+ (_b = this.rowElement.querySelector("tbody")) == null ? void 0 : _b.append(addRowElement);
3304
+ (_c = addRowElement.querySelector(".df-grid-row-remove")) == null ? void 0 : _c.addEventListener("click", (evt) => {
2078
3305
  this.removeRow(evt);
2079
3306
  });
2080
3307
  }
2081
3308
  valueItem = valueItem ?? {};
2082
3309
  for (let columnField of addColumns) {
2083
- columnField.$instance = new columnField.$renderType(columnField, addRowElement?.querySelector(`#${columnField.$xssName}`), this.gridForm);
3310
+ columnField.$instance = new columnField.$renderType(columnField, addRowElement == null ? void 0 : addRowElement.querySelector(`#${columnField.$xssName}`), this.gridForm);
2084
3311
  if (valueItem[columnField.$orgin.name]) {
2085
3312
  columnField.$instance.setValue(valueItem[columnField.$orgin.name]);
2086
3313
  }
@@ -2092,12 +3319,12 @@ var GridRender = class extends Render {
2092
3319
  * @param evt event
2093
3320
  */
2094
3321
  removeRow(evt) {
3322
+ var _a, _b;
2095
3323
  const target = evt.target;
2096
3324
  const rowElement = target.closest("tr");
2097
3325
  if (rowElement) {
2098
- if (rowElement.parentElement?.childElementCount == 1)
2099
- return;
2100
- let rowIdx = evt.currentTarget?.getAttribute("data-row-idx") || "-1";
3326
+ if (((_a = rowElement.parentElement) == null ? void 0 : _a.childElementCount) == 1) return;
3327
+ let rowIdx = ((_b = evt.currentTarget) == null ? void 0 : _b.getAttribute("data-row-idx")) || "-1";
2101
3328
  this.removeFieldInfo(rowIdx);
2102
3329
  rowElement.remove();
2103
3330
  }
@@ -2123,7 +3350,8 @@ var GridRender = class extends Render {
2123
3350
  }
2124
3351
  }
2125
3352
  allRemoveRow() {
2126
- this.rowElement.querySelector("tbody")?.replaceChildren();
3353
+ var _a;
3354
+ (_a = this.rowElement.querySelector("tbody")) == null ? void 0 : _a.replaceChildren();
2127
3355
  this.removeFieldInfo();
2128
3356
  }
2129
3357
  getValue() {
@@ -2147,7 +3375,7 @@ var GridRender = class extends Render {
2147
3375
  setValue(value) {
2148
3376
  this.field.$value = value;
2149
3377
  let valueArr = [];
2150
- if (Array.isArray(value)) {
3378
+ if (isArray(value)) {
2151
3379
  valueArr = value;
2152
3380
  } else {
2153
3381
  if (isPlainObject(value)) {
@@ -2187,10 +3415,8 @@ var GridRender = class extends Render {
2187
3415
  }
2188
3416
  focus() {
2189
3417
  }
2190
- };
2191
-
2192
- // src/constants.ts
2193
- var RULES = {
3418
+ }
3419
+ const RULES = {
2194
3420
  NAN: "nan",
2195
3421
  MIN: "minimum",
2196
3422
  EXCLUSIVE_MIN: "exclusiveMinimum",
@@ -2202,12 +3428,10 @@ var RULES = {
2202
3428
  BETWEEN_EXCLUSIVE_MIN: "betweenExclusiveMin",
2203
3429
  BETWEEN_EXCLUSIVE_MAX: "betweenExclusiveMax",
2204
3430
  BETWEEN_EXCLUSIVE_MINMAX: "betweenExclusiveMinMax",
2205
- REGEXP: "regexp",
2206
- REQUIRED: "required",
2207
- VALIDATOR: "validator"
3431
+ REQUIRED: "required"
2208
3432
  };
2209
- var FIELD_PREFIX = "dff";
2210
- var RENDER_TEMPLATE = {
3433
+ const FIELD_PREFIX = "dff";
3434
+ const RENDER_TEMPLATE = {
2211
3435
  number: NumberRender,
2212
3436
  textarea: TextAreaRender,
2213
3437
  dropdown: DropdownRender,
@@ -2228,61 +3452,62 @@ var RENDER_TEMPLATE = {
2228
3452
  tab: TabRender,
2229
3453
  grid: GridRender
2230
3454
  };
2231
- var FIELD_POSITION_STYLE = {
2232
- "top-left": ["top", "txt-left"],
2233
- "top-center": ["top", "txt-center"],
2234
- "top-right": ["top", "txt-right"],
2235
- "left-left": ["", "txt-left"],
2236
- "left-center": ["", "txt-center"],
2237
- "left-right": ["", "txt-right"],
2238
- "right-right": ["right", "txt-right"],
2239
- "right-center": ["right", "txt-center"],
2240
- "right-left": ["right", "txt-left"],
2241
- "bottom-left": ["bottom", "txt-left"],
2242
- "bottom-center": ["bottom", "txt-center"],
2243
- "bottom-right": ["bottom", "txt-right"]
3455
+ const OrientationMap = {
3456
+ horizontal: "horizontal"
3457
+ };
3458
+ const FIELD_POSITION_STYLE = {
3459
+ "top-left": ["top", "df-txt-left"],
3460
+ "top-center": ["top", "df-txt-center"],
3461
+ "top-right": ["top", "df-txt-right"],
3462
+ "left-left": ["", "df-txt-left"],
3463
+ "left-center": ["", "df-txt-center"],
3464
+ "left-right": ["", "df-txt-right"],
3465
+ "right-right": ["right", "df-txt-right"],
3466
+ "right-center": ["right", "df-txt-center"],
3467
+ "right-left": ["right", "df-txt-left"],
3468
+ "bottom-left": ["bottom", "df-txt-left"],
3469
+ "bottom-center": ["bottom", "df-txt-center"],
3470
+ "bottom-right": ["bottom", "df-txt-right"]
2244
3471
  };
2245
3472
  FIELD_POSITION_STYLE["top"] = FIELD_POSITION_STYLE["top-left"];
2246
3473
  FIELD_POSITION_STYLE["right"] = FIELD_POSITION_STYLE["right-right"];
2247
3474
  FIELD_POSITION_STYLE["left"] = FIELD_POSITION_STYLE["left-left"];
2248
3475
  FIELD_POSITION_STYLE["bottom"] = FIELD_POSITION_STYLE["bottom-left"];
2249
-
2250
- // src/util/Lanauage.ts
2251
- var localeMessage = {
2252
- required: "{label} \uD544\uC218 \uC785\uB825\uC0AC\uD56D\uC785\uB2C8\uB2E4.",
2253
- fileButton: "\uD30C\uC77C\uCC3E\uAE30",
2254
- selection: "\uC120\uD0DD",
3476
+ let localeMessage = {
3477
+ required: "{label} 필수 입력사항입니다.",
3478
+ fileButton: "파일찾기",
3479
+ selection: "선택",
2255
3480
  string: {
2256
- minLength: "{minLength} \uAE00\uC790 \uC774\uC0C1\uC73C\uB85C \uC785\uB825\uD558\uC138\uC694.",
2257
- maxLength: "{maxLength} \uAE00\uC790 \uC774\uD558\uB85C \uC785\uB825\uD558\uC138\uC694.",
2258
- between: "{minLength} ~ {maxLength} \uC0AC\uC774\uC758 \uAE00\uC790\uB97C \uC785\uB825\uD558\uC138\uC694."
3481
+ minLength: "{minLength} 글자 이상으로 입력하세요.",
3482
+ maxLength: "{maxLength} 글자 이하로 입력하세요.",
3483
+ between: "{minLength} ~ {maxLength} 사이의 글자를 입력하세요."
2259
3484
  },
2260
3485
  number: {
2261
- nan: "\uC22B\uC790\uB9CC \uC785\uB825 \uAC00\uB2A5 \uD569\uB2C8\uB2E4.",
2262
- minimum: "{minimum} \uAC12\uACFC \uAC19\uAC70\uB098 \uCEE4\uC57C \uD569\uB2C8\uB2E4",
2263
- exclusiveMinimum: "{minimum} \uBCF4\uB2E4 \uCEE4\uC57C \uD569\uB2C8\uB2E4",
2264
- maximum: "{maximum} \uAC12\uACFC \uAC19\uAC70\uB098 \uC791\uC544\uC57C \uD569\uB2C8\uB2E4",
2265
- exclusiveMaximum: "{maximum} \uBCF4\uB2E4 \uC791\uC544\uC57C \uD569\uB2C8\uB2E4.",
2266
- between: "{minimum}~{maximum} \uC0AC\uC774\uC758 \uAC12\uC744 \uC785\uB825\uD558\uC138\uC694.",
2267
- betweenExclusiveMin: "{minimum} \uBCF4\uB2E4 \uD06C\uACE0 {maximum} \uBCF4\uB2E4 \uAC19\uAC70\uB098 \uC791\uC544\uC57C \uD569\uB2C8\uB2E4",
2268
- betweenExclusiveMax: "{minimum} \uBCF4\uB2E4 \uAC19\uAC70\uB098 \uD06C\uACE0 {maximum} \uBCF4\uB2E4 \uC791\uC544\uC57C \uD569\uB2C8\uB2E4",
2269
- betweenExclusiveMinMax: "{minimum} \uBCF4\uB2E4 \uD06C\uACE0 {maximum} \uBCF4\uB2E4 \uC791\uC544\uC57C \uD569\uB2C8\uB2E4"
3486
+ nan: "숫자만 입력 가능 합니다.",
3487
+ minimum: "{minimum} 값과 같거나 커야 합니다",
3488
+ exclusiveMinimum: "{minimum} 보다 커야 합니다",
3489
+ maximum: "{maximum} 값과 같거나 작아야 합니다",
3490
+ exclusiveMaximum: "{maximum} 보다 작아야 합니다.",
3491
+ between: "{minimum}~{maximum} 사이의 값을 입력하세요.",
3492
+ betweenExclusiveMin: "{minimum} 보다 크고 {maximum} 보다 같거나 작아야 합니다",
3493
+ betweenExclusiveMax: "{minimum} 보다 같거나 크고 {maximum} 보다 작아야 합니다",
3494
+ betweenExclusiveMinMax: "{minimum} 보다 크고 {maximum} 보다 작아야 합니다"
2270
3495
  },
2271
3496
  regexp: {
2272
- mobile: "\uD578\uB4DC\uD3F0 \uBC88\uD638\uAC00 \uC720\uD6A8\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.",
2273
- email: "\uC774\uBA54\uC77C\uC774 \uC720\uD6A8\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.",
2274
- url: "URL\uC774 \uC720\uD6A8\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.",
2275
- alpha: "\uC601\uBB38\uB9CC \uC785\uB825 \uAC00\uB2A5 \uD569\uB2C8\uB2E4.",
2276
- "alpha-num": "\uC601\uBB38\uACFC \uC22B\uC790\uB9CC \uC785\uB825 \uAC00\uB2A5 \uD569\uB2C8\uB2E4.",
2277
- number: "\uC22B\uC790\uB9CC \uC785\uB825 \uAC00\uB2A5 \uD569\uB2C8\uB2E4.",
2278
- variable: "\uAC12\uC774 \uC720\uD6A8\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.",
2279
- "number-char": "\uC22B\uC790, \uBB38\uC790 \uAC01\uAC01 \uD558\uB098 \uC774\uC0C1 \uD3EC\uD568 \uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.",
2280
- "upper-char": "\uB300\uBB38\uC790\uAC00 \uD558\uB098 \uC774\uC0C1 \uD3EC\uD568 \uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.",
2281
- "upper-char-special": "\uB300\uBB38\uC790,\uC18C\uBB38\uC790,\uD2B9\uC218\uBB38\uC790 \uAC01\uAC01 \uD558\uB098 \uC774\uC0C1 \uD3EC\uD568 \uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.",
2282
- "upper-char-special-number": "\uB300\uBB38\uC790,\uC18C\uBB38\uC790,\uD2B9\uC218\uBB38\uC790,\uC22B\uC790 \uAC01\uAC01 \uD558\uB098 \uC774\uC0C1 \uD3EC\uD568 \uB418\uC5B4\uC57C\uD569\uB2C8\uB2E4."
3497
+ mobile: "핸드폰 번호가 유효하지 않습니다.",
3498
+ email: "이메일이 유효하지 않습니다.",
3499
+ url: "URL이 유효하지 않습니다.",
3500
+ alpha: "영문만 입력 가능 합니다.",
3501
+ "alpha-num": "영문과 숫자만 입력 가능 합니다.",
3502
+ number: "숫자만 입력 가능 합니다.",
3503
+ variable: "값이 유효하지 않습니다.",
3504
+ "number-char": "숫자, 문자 각각 하나 이상 포함 되어야 합니다.",
3505
+ "upper-char": "대문자가 하나 이상 포함 되어야 합니다.",
3506
+ "upper-char-special": "대문자,소문자,특수문자 각각 하나 이상 포함 되어야 합니다.",
3507
+ "upper-char-special-number": "대문자,소문자,특수문자,숫자 각각 하나 이상 포함 되어야합니다."
2283
3508
  }
2284
3509
  };
2285
- var Language = class {
3510
+ let Language$1 = class Language2 {
2286
3511
  constructor() {
2287
3512
  this.lang = localeMessage;
2288
3513
  }
@@ -2351,10 +3576,8 @@ function message(msgFormat, msgParam) {
2351
3576
  return typeof msgParam[key] !== "undefined" ? msgParam[key] : match;
2352
3577
  });
2353
3578
  }
2354
- var Lanauage_default = new Language();
2355
-
2356
- // src/util/renderFactory.ts
2357
- var getRenderer = (field) => {
3579
+ const Language3 = new Language$1();
3580
+ const getRenderer = (field) => {
2358
3581
  let render;
2359
3582
  if (field.renderType) {
2360
3583
  render = RENDER_TEMPLATE[field.renderType];
@@ -2371,9 +3594,7 @@ var getRenderer = (field) => {
2371
3594
  }
2372
3595
  return RENDER_TEMPLATE["text"];
2373
3596
  };
2374
-
2375
- // src/FieldInfoMap.ts
2376
- var FieldInfoMap = class {
3597
+ class FieldInfoMap {
2377
3598
  constructor(selector, form) {
2378
3599
  this.fieldIdx = 0;
2379
3600
  this.allFieldInfo = {};
@@ -2449,7 +3670,24 @@ var FieldInfoMap = class {
2449
3670
  * @param {string} fieldName
2450
3671
  */
2451
3672
  removeFieldInfo(fieldName) {
2452
- delete this.allFieldInfo[this.keyNameMap[fieldName]];
3673
+ const fieldKey = this.keyNameMap[fieldName];
3674
+ if (isUndefined(fieldKey)) return;
3675
+ this.removeFieldInfoByKey(fieldKey);
3676
+ delete this.keyNameMap[fieldName];
3677
+ }
3678
+ /**
3679
+ * 필드 키로 필드 정보 맵에서 지우기
3680
+ *
3681
+ * @public
3682
+ * @param {string} fieldKey
3683
+ */
3684
+ removeFieldInfoByKey(fieldKey) {
3685
+ const fieldInfo = this.allFieldInfo[fieldKey];
3686
+ if (fieldInfo && this.keyNameMap[fieldInfo.$validName] === fieldKey) {
3687
+ delete this.keyNameMap[fieldInfo.$validName];
3688
+ }
3689
+ delete this.allFieldInfo[fieldKey];
3690
+ this.conditionFields = this.conditionFields.filter((key) => key !== fieldKey);
2453
3691
  }
2454
3692
  /**
2455
3693
  * 모든 필드값 구하기
@@ -2580,18 +3818,17 @@ var FieldInfoMap = class {
2580
3818
  }
2581
3819
  const renderInfo = fieldInfo.$instance;
2582
3820
  let fieldValid = renderInfo.valid();
2583
- if (fieldValid === true)
2584
- return true;
3821
+ if (fieldValid === true) return true;
2585
3822
  if (focusFlag) {
2586
3823
  renderInfo.focus();
2587
3824
  }
2588
3825
  fieldValid = fieldValid;
2589
3826
  if (isUndefined(fieldValid.message)) {
2590
- fieldValid.message = Lanauage_default.validMessage(fieldInfo, fieldValid)[0];
3827
+ fieldValid.message = Language3.validMessage(fieldInfo, fieldValid)[0];
2591
3828
  }
2592
3829
  return fieldValid;
2593
3830
  }
2594
- };
3831
+ }
2595
3832
  function addFormValue(formData, fieldInfo, useTypeValue) {
2596
3833
  if (ignoreValueField(fieldInfo)) {
2597
3834
  return formData;
@@ -2647,9 +3884,7 @@ function addFieldFormData(formData, fieldInfo, useTypeValue) {
2647
3884
  }
2648
3885
  return formData;
2649
3886
  }
2650
-
2651
- // src/FormTemplate.ts
2652
- var FormTemplate = class {
3887
+ class FormTemplate {
2653
3888
  constructor(daraform, formElement, fieldInfoMap) {
2654
3889
  this.addRowFields = [];
2655
3890
  this.daraform = daraform;
@@ -2677,10 +3912,10 @@ var FormTemplate = class {
2677
3912
  */
2678
3913
  addRowTemplate(field) {
2679
3914
  let labelHideFlag = this.isLabelHide(field);
2680
- let fieldStyle = styleUtils_default.fieldStyle(this.options, field, null, labelHideFlag);
3915
+ let fieldStyle = resolveFieldStyle(this.options, field, null, labelHideFlag);
2681
3916
  this.addRowFieldInfo(field);
2682
3917
  const rowElement = templateToElement(`
2683
- <div class="df-row form-group ${fieldStyle.fieldClass}" id="${field.$key}">
3918
+ <div class="df-row df-form-group ${fieldStyle.fieldClass}" id="${field.$key}">
2684
3919
  ${labelHideFlag ? "" : `<div class="df-label ${fieldStyle.labelClass} ${fieldStyle.labelAlignClass}" title="${field.label ?? ""}" style="${fieldStyle.labelStyle}">${this.getLabelTemplate(field)}</div>`}
2685
3920
 
2686
3921
  <div class="df-field-container ${fieldStyle.valueClass} ${field.required ? "required" : ""}" style="${fieldStyle.valueStyle}"></div>
@@ -2731,13 +3966,13 @@ var FormTemplate = class {
2731
3966
  let childFieldStyle;
2732
3967
  let labelTemplate = "";
2733
3968
  if (labelHideFlag) {
2734
- childFieldStyle = styleUtils_default.fieldStyle(this.options, childField, beforeField, !isEmptyLabel);
2735
- labelTemplate = isEmptyLabel ? `<span class="df-label empty ${childFieldStyle.labelClass}" style="${childFieldStyle.labelStyle}"></span>` : "";
3969
+ childFieldStyle = resolveFieldStyle(this.options, childField, beforeField, !isEmptyLabel);
3970
+ labelTemplate = isEmptyLabel ? `<span class="df-label df-empty ${childFieldStyle.labelClass}" style="${childFieldStyle.labelStyle}"></span>` : "";
2736
3971
  } else {
2737
- childFieldStyle = styleUtils_default.fieldStyle(this.options, childField, beforeField, false);
3972
+ childFieldStyle = resolveFieldStyle(this.options, childField, beforeField, false);
2738
3973
  labelTemplate = `<span class="df-label ${childFieldStyle.labelClass} ${childFieldStyle.labelAlignClass}" title="${childField.label ?? ""}" style="${childFieldStyle.labelStyle}">${this.getLabelTemplate(childField)}</span>`;
2739
3974
  }
2740
- const groupElement = templateToElement(`<div class="form-group ${childFieldStyle.fieldClass}" style="${childFieldStyle.fieldStyle}" id="${childField.$key}">
3975
+ const groupElement = templateToElement(`<div class="df-form-group ${childFieldStyle.fieldClass}" style="${childFieldStyle.fieldStyle}" id="${childField.$key}">
2741
3976
  ${labelTemplate}
2742
3977
  <span class="df-field-container ${childFieldStyle.valueClass} ${childField.required ? "required" : ""}" style="${childFieldStyle.valueStyle}"></span>
2743
3978
  </div>`);
@@ -2763,7 +3998,7 @@ var FormTemplate = class {
2763
3998
  */
2764
3999
  getLabelTemplate(field) {
2765
4000
  const requiredTemplate = field.required ? `<span class="required"></span>` : "";
2766
- const tooltipTemplate = isBlank(field.tooltip) ? "" : `<span class="df-tooltip">?<span class="tooltip">${field.tooltip}</span></span>`;
4001
+ const tooltipTemplate = isBlank(field.tooltip) ? "" : `<span class="df-tooltip">?<span class="df-tooltip-text">${field.tooltip}</span></span>`;
2767
4002
  return `${field.label ?? ""} ${tooltipTemplate} ${requiredTemplate}`;
2768
4003
  }
2769
4004
  /**
@@ -2773,7 +4008,8 @@ var FormTemplate = class {
2773
4008
  * @returns
2774
4009
  */
2775
4010
  isLabelHide(field) {
2776
- return field.style?.labelHide || isUndefined(field.label);
4011
+ var _a;
4012
+ return ((_a = field.style) == null ? void 0 : _a.labelHide) || isUndefined(field.label);
2777
4013
  }
2778
4014
  checkHiddenField(field) {
2779
4015
  if (isHiddenField(field)) {
@@ -2795,10 +4031,15 @@ var FormTemplate = class {
2795
4031
  this.fieldInfoMap.addField(field);
2796
4032
  this.addRowFields.push(field.$key);
2797
4033
  }
2798
- };
2799
-
2800
- // src/DaraForm.ts
2801
- var defaultOptions = {
4034
+ }
4035
+ function initFormOptions(options) {
4036
+ const opts = merge({}, DEFAULT_OPTIONS, options);
4037
+ return opts;
4038
+ }
4039
+ function setDefaultOptions(options) {
4040
+ DEFAULT_OPTIONS = merge({}, DEFAULT_OPTIONS, options);
4041
+ }
4042
+ let DEFAULT_OPTIONS = {
2802
4043
  style: {
2803
4044
  width: "100%",
2804
4045
  labelWidth: 3,
@@ -2811,24 +4052,17 @@ var defaultOptions = {
2811
4052
  notValidMessage: "This form is not valid.",
2812
4053
  fields: []
2813
4054
  };
2814
- var allInstance = {};
2815
- var SEQ_ATTR_KEY = "data-form-uid";
2816
- var DARA_FORM_SEQ = 0;
2817
- var DaraForm = class _DaraForm {
4055
+ const allInstance = {};
4056
+ const SEQ_ATTR_KEY = "data-form-uid";
4057
+ let DARA_FORM_SEQ = 0;
4058
+ const _DaraForm = class _DaraForm {
2818
4059
  constructor(formElement, options, message2) {
2819
4060
  this.formValue = {};
2820
- /**
2821
- * change mode
2822
- *
2823
- * @param mode form_mode default new
2824
- */
4061
+ this.changeListeners = [];
2825
4062
  this.changeMode = (mode) => {
2826
4063
  this.options.mode = mode;
2827
4064
  this.formElement.setAttribute("data-df-mode", mode);
2828
4065
  };
2829
- /**
2830
- * 폼 데이터 reset
2831
- */
2832
4066
  this.resetForm = () => {
2833
4067
  const fieldMap = this.fieldInfoMap.getAllFieldInfo();
2834
4068
  for (const seq in fieldMap) {
@@ -2841,21 +4075,11 @@ var DaraForm = class _DaraForm {
2841
4075
  this.formValue = {};
2842
4076
  this.conditionCheck();
2843
4077
  };
2844
- /**
2845
- * field 값 reset
2846
- * @param fieldName 필드명
2847
- */
2848
4078
  this.resetField = (fieldName) => {
2849
4079
  this.fieldInfoMap.getFieldName(fieldName).$instance.reset();
2850
4080
  this.formValue[fieldName] = "";
2851
4081
  this.conditionCheck();
2852
4082
  };
2853
- /**
2854
- * field 값 얻기
2855
- *
2856
- * @param fieldName 필드명
2857
- * @returns
2858
- */
2859
4083
  this.getFieldValue = (fieldName) => {
2860
4084
  const field = this.fieldInfoMap.getFieldName(fieldName);
2861
4085
  if (field) {
@@ -2863,21 +4087,12 @@ var DaraForm = class _DaraForm {
2863
4087
  }
2864
4088
  return null;
2865
4089
  };
2866
- /**
2867
- * 폼 필드 값 얻기
2868
- * @param isValid 폼 유효성 검사 여부 default:false|undefined true일경우 검사.
2869
- * @returns
2870
- */
2871
4090
  this.getValue = (isValid) => {
2872
4091
  return this.fieldInfoMap.getAllFieldValue(this.formValue, isValid);
2873
4092
  };
2874
4093
  this.getFormDataValue = (isValid) => {
2875
4094
  return this.fieldInfoMap.getFormDataValue(this.formValue, isValid);
2876
4095
  };
2877
- /**
2878
- * 폼 필드 value 셋팅
2879
- * @param values
2880
- */
2881
4096
  this.setValue = (values, dataClear) => {
2882
4097
  if (dataClear !== false) {
2883
4098
  this.resetForm();
@@ -2897,42 +4112,29 @@ var DaraForm = class _DaraForm {
2897
4112
  return field.$instance.setValueItems(values);
2898
4113
  }
2899
4114
  };
2900
- /**
2901
- * field 추가
2902
- *
2903
- * @param {FormField} field
2904
- */
2905
4115
  this.addField = (field) => {
2906
4116
  this.options.fields.push(field);
2907
4117
  this.formTemplate.addRow(field);
2908
4118
  this.conditionCheck();
2909
4119
  };
2910
- /**
2911
- * field 제거
2912
- *
2913
- * @param {string} fieldName
2914
- */
2915
4120
  this.removeField = (fieldName) => {
2916
- const element = this.getFieldElement(fieldName);
2917
- if (element != null) {
2918
- element.closest(".df-row")?.remove();
2919
- }
2920
- this.fieldInfoMap.removeFieldInfo(fieldName);
4121
+ const fieldInfo = this.fieldInfoMap.getFieldName(fieldName);
4122
+ if (!fieldInfo) return;
4123
+ const removeFields = this.getRemoveFields(fieldInfo);
4124
+ removeFields.forEach((removeField) => {
4125
+ this.removeFormValue(removeField);
4126
+ });
4127
+ this.removeFieldElement(fieldInfo);
4128
+ this.removeParentChildField(fieldInfo);
4129
+ removeFields.forEach((removeField) => {
4130
+ this.fieldInfoMap.removeFieldInfoByKey(removeField.$key);
4131
+ });
4132
+ this.conditionCheck();
2921
4133
  };
2922
- /**
2923
- * 폼 유효성 검증 여부
2924
- *
2925
- * @returns {boolean}
2926
- */
2927
4134
  this.isValidForm = () => {
2928
4135
  const result = this.validForm();
2929
4136
  return result.length < 1;
2930
4137
  };
2931
- /**
2932
- * 유효성 검증 폼 검증여부 리턴
2933
- *
2934
- * @returns {any[]}
2935
- */
2936
4138
  this.validForm = () => {
2937
4139
  let validResult = [];
2938
4140
  let autoFocusFlag = this.options.autoFocus !== false;
@@ -2967,12 +4169,15 @@ var DaraForm = class _DaraForm {
2967
4169
  }
2968
4170
  return true;
2969
4171
  };
2970
- /**
2971
- * 설정 옵션 얻기
2972
- */
2973
4172
  this.getOptions = () => {
2974
4173
  return this.options;
2975
4174
  };
4175
+ this.subscribe = (listener) => {
4176
+ this.changeListeners.push(listener);
4177
+ return () => {
4178
+ this.changeListeners = this.changeListeners.filter((l) => l !== listener);
4179
+ };
4180
+ };
2976
4181
  this.destroy = () => {
2977
4182
  this.formElement.className = this.orginFormStyleClass;
2978
4183
  this.formElement.replaceChildren();
@@ -2983,22 +4188,15 @@ var DaraForm = class _DaraForm {
2983
4188
  }
2984
4189
  }
2985
4190
  };
2986
- /**
2987
- * 모든 field 얻기
2988
- */
2989
4191
  this.getFields = () => {
2990
4192
  return this.options.fields;
2991
4193
  };
2992
- /**
2993
- * field setting
2994
- * @param fields
2995
- */
2996
4194
  this.setFields = (fields) => {
2997
4195
  this.options.fields = fields;
2998
4196
  this.createForm(fields);
2999
4197
  };
3000
- this.options = merge({}, defaultOptions, options);
3001
- Lanauage_default.set(message2);
4198
+ this.options = initFormOptions(options);
4199
+ Language3.set(message2);
3002
4200
  if (formElement) {
3003
4201
  this.orginFormStyleClass = formElement.className;
3004
4202
  formElement.classList.add("daracl-form");
@@ -3018,14 +4216,17 @@ var DaraForm = class _DaraForm {
3018
4216
  throw new Error(`${formElement} form selector not found`);
3019
4217
  }
3020
4218
  }
3021
- static {
3022
- this.VERSION = `${APP_VERSION}`;
3023
- }
3024
4219
  static create(formElement, options, message2) {
3025
4220
  return new _DaraForm(formElement, options, message2);
3026
4221
  }
3027
4222
  static setMessage(message2) {
3028
- Lanauage_default.set(message2);
4223
+ Language3.set(message2);
4224
+ }
4225
+ static setDefaultOptions(options, message2) {
4226
+ setDefaultOptions(options);
4227
+ if (message2) {
4228
+ Language3.set(message2);
4229
+ }
3029
4230
  }
3030
4231
  createForm(fields) {
3031
4232
  this.fieldInfoMap = new FieldInfoMap(this.selector, this);
@@ -3049,7 +4250,7 @@ var DaraForm = class _DaraForm {
3049
4250
  */
3050
4251
  getFieldElement(fieldName) {
3051
4252
  const field = this.fieldInfoMap.getFieldName(fieldName);
3052
- if (field?.$instance) {
4253
+ if (field == null ? void 0 : field.$instance) {
3053
4254
  return field.$instance.getElement();
3054
4255
  }
3055
4256
  return null;
@@ -3064,6 +4265,88 @@ var DaraForm = class _DaraForm {
3064
4265
  fieldInfo.$instance.setValue(value);
3065
4266
  }
3066
4267
  }
4268
+ /**
4269
+ * 제거할 필드와 같은 fieldInfoMap에 등록된 하위 필드(group 하위 필드, tab 패널) 목록
4270
+ * grid 컬럼, tab 패널 내부 필드는 별도 form에 등록되므로 제외됨.
4271
+ *
4272
+ * @param {FormField} fieldInfo
4273
+ * @param {FormField[]} result
4274
+ * @returns {FormField[]}
4275
+ */
4276
+ getRemoveFields(fieldInfo, result = []) {
4277
+ var _a;
4278
+ result.push(fieldInfo);
4279
+ (_a = fieldInfo.children) == null ? void 0 : _a.forEach((childField) => {
4280
+ if (childField && this.fieldInfoMap.get(childField.$key) === childField) {
4281
+ this.getRemoveFields(childField, result);
4282
+ }
4283
+ });
4284
+ return result;
4285
+ }
4286
+ /**
4287
+ * field element 제거
4288
+ *
4289
+ * @param {FormField} fieldInfo
4290
+ */
4291
+ removeFieldElement(fieldInfo) {
4292
+ var _a, _b;
4293
+ const parentField = fieldInfo.$parent;
4294
+ if (parentField && isTabType(parentField)) {
4295
+ const tabElement = parentField.$instance.getElement();
4296
+ const tabItem = tabElement.querySelector(`[data-tab-id="${fieldInfo.$key}"]`);
4297
+ const activeFlag = tabItem == null ? void 0 : tabItem.classList.contains("active");
4298
+ tabItem == null ? void 0 : tabItem.remove();
4299
+ (_a = tabElement.querySelector(`[tab-panel-id="${fieldInfo.$key}"]`)) == null ? void 0 : _a.remove();
4300
+ const firstTabItem = tabElement.querySelector(".df-tab-header .df-tab-item");
4301
+ if (activeFlag && firstTabItem) {
4302
+ parentField.$instance.setActive(firstTabItem.getAttribute("data-tab-id") ?? "");
4303
+ }
4304
+ return;
4305
+ }
4306
+ const rowSelector = `[id="${fieldInfo.$key}"]`;
4307
+ let element = (_b = fieldInfo.$instance) == null ? void 0 : _b.getElement();
4308
+ if (element instanceof NodeList || element instanceof HTMLCollection) {
4309
+ element = element[0] ?? null;
4310
+ }
4311
+ const rowElement = (element instanceof Element ? element.closest(rowSelector) : null) ?? this.formElement.querySelector(rowSelector);
4312
+ const containerElement = rowElement == null ? void 0 : rowElement.parentElement;
4313
+ rowElement == null ? void 0 : rowElement.remove();
4314
+ if (parentField && (containerElement == null ? void 0 : containerElement.classList.contains("df-row")) && containerElement.childElementCount < 1) {
4315
+ containerElement.remove();
4316
+ }
4317
+ }
4318
+ /**
4319
+ * 부모 children(최상위는 options.fields)에서 필드 제거
4320
+ * tab 은 children 기준으로 값/유효성 체크를 하므로 제거해야 함.
4321
+ *
4322
+ * @param {FormField} fieldInfo
4323
+ */
4324
+ removeParentChildField(fieldInfo) {
4325
+ const fields = fieldInfo.$parent ? fieldInfo.$parent.children : this.options.fields;
4326
+ const idx = fields ? fields.indexOf(fieldInfo) : -1;
4327
+ if (idx > -1) {
4328
+ fields == null ? void 0 : fields.splice(idx, 1);
4329
+ }
4330
+ }
4331
+ /**
4332
+ * getValue() 시 formValue에 누적된 field 값 제거
4333
+ *
4334
+ * @param {FormField} fieldInfo
4335
+ */
4336
+ removeFormValue(fieldInfo) {
4337
+ const keys = [fieldInfo.name, fieldInfo.$validName];
4338
+ if (fieldInfo.renderType === "file") {
4339
+ keys.push(fieldInfo.$validName + "RemoveIds");
4340
+ } else if (isTabType(fieldInfo)) {
4341
+ keys.push(...Object.keys(fieldInfo.$instance.getValue() ?? {}));
4342
+ }
4343
+ if (fieldInfo.$tabForm) {
4344
+ keys.push(...Object.keys(fieldInfo.$tabForm.getValue(false) ?? {}));
4345
+ }
4346
+ keys.forEach((key) => {
4347
+ if (!isBlank(key)) delete this.formValue[key];
4348
+ });
4349
+ }
3067
4350
  validTabCheck(fieldInfo) {
3068
4351
  if (fieldInfo.$parent) {
3069
4352
  if (fieldInfo.$parent.renderType == "tab") {
@@ -3074,6 +4357,12 @@ var DaraForm = class _DaraForm {
3074
4357
  }
3075
4358
  conditionCheck() {
3076
4359
  this.fieldInfoMap.conditionCheck();
4360
+ this.notifyChange();
4361
+ }
4362
+ notifyChange() {
4363
+ if (this.changeListeners.length < 1) return;
4364
+ const event = { form: this };
4365
+ this.changeListeners.forEach((listener) => listener(event));
3077
4366
  }
3078
4367
  setFieldDisabled(fieldName, flag) {
3079
4368
  const fieldInfo = this.fieldInfoMap.getFieldName(fieldName);
@@ -3090,20 +4379,6 @@ var DaraForm = class _DaraForm {
3090
4379
  const fieldInfo = this.fieldInfoMap.getFieldName(fieldName);
3091
4380
  fieldInfo.$instance.setDescription(desc);
3092
4381
  }
3093
- static {
3094
- this.validator = {
3095
- string: (value, field) => {
3096
- return stringValidator(value, field);
3097
- },
3098
- number: (value, field) => {
3099
- return numberValidator(value, field);
3100
- },
3101
- regexp: (value, field) => {
3102
- let result = { name: field.name, constraint: [] };
3103
- return regexpValidator(value, field, result);
3104
- }
3105
- };
3106
- }
3107
4382
  static instance(ele) {
3108
4383
  let element;
3109
4384
  if (isString(ele)) {
@@ -3126,7 +4401,19 @@ var DaraForm = class _DaraForm {
3126
4401
  return this.fieldInfoMap;
3127
4402
  }
3128
4403
  };
3129
-
3130
- // src/index.ts
3131
- module.exports = DaraForm;
4404
+ _DaraForm.VERSION = `${"0.0.18"}`;
4405
+ _DaraForm.validator = {
4406
+ string: (value, field) => {
4407
+ return stringValidator(value, field);
4408
+ },
4409
+ number: (value, field) => {
4410
+ return numberValidator(value, field);
4411
+ },
4412
+ regexp: (value, field) => {
4413
+ let result = { name: field.name, constraint: [] };
4414
+ return regexpValidator(value, field, result);
4415
+ }
4416
+ };
4417
+ let DaraForm = _DaraForm;
4418
+ exports.DaraForm = DaraForm;
3132
4419
  //# sourceMappingURL=index.cjs.map