@owp/core 2.5.16 → 2.5.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.
- package/dist/components/OwpPicker/OwpTimePicker.js +186 -208
- package/dist/components/OwpPicker/OwpTimePicker.js.map +1 -1
- package/dist/components/OwpTreeGrid/OwpTreeGrid.js +298 -227
- package/dist/components/OwpTreeGrid/OwpTreeGrid.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/hooks/useOwpTreeGridDatePickerEditor.js +487 -0
- package/dist/components/OwpTreeGrid/internal/hooks/useOwpTreeGridDatePickerEditor.js.map +1 -0
- package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js +369 -248
- package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/treeGridTheme.js +201 -117
- package/dist/components/OwpTreeGrid/internal/treeGridTheme.js.map +1 -1
- package/dist/constants/gridTheme.js +7 -6
- package/dist/constants/gridTheme.js.map +1 -1
- package/dist/constants/treeGrid.js +27 -26
- package/dist/constants/treeGrid.js.map +1 -1
- package/dist/constants.js +23 -22
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/constants.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/constants.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/constants.js +1 -1
- package/dist/owp-app.css +1 -1
- package/dist/types/components/OwpPicker/OwpTimePicker.d.ts +3 -1
- package/dist/types/components/OwpTreeGrid/OwpTreeGrid.d.ts +14 -6
- package/dist/types/components/OwpTreeGrid/internal/hooks/useOwpTreeGridDatePickerEditor.d.ts +17 -0
- package/dist/types/components/OwpTreeGrid/internal/treeGridRuntime.d.ts +41 -7
- package/dist/types/components/OwpTreeGrid/internal/treeGridTheme.d.ts +1 -1
- package/dist/types/constants/gridTheme.d.ts +2 -0
- package/dist/types/constants/treeGrid.d.ts +2 -1
- package/dist/types/types/OwpGridThemeTypes.d.ts +1 -0
- package/dist/types/utils/index.d.ts +0 -1
- package/dist/types/utils/treeGridUtil.d.ts +27 -0
- package/dist/utils/treeGridUtil.js +172 -112
- package/dist/utils/treeGridUtil.js.map +1 -1
- package/dist/utils.js +85 -83
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
- package/dist/components/OwpTreeGrid/internal/treeGridColumnEditRules.js +0 -84
- package/dist/components/OwpTreeGrid/internal/treeGridColumnEditRules.js.map +0 -1
- package/dist/types/components/OwpTreeGrid/internal/treeGridColumnEditRules.d.ts +0 -60
- package/dist/types/utils/normalizeTimeToHourMinute.d.ts +0 -11
- package/dist/utils/normalizeTimeToHourMinute.js +0 -34
- package/dist/utils/normalizeTimeToHourMinute.js.map +0 -1
package/dist/utils.js
CHANGED
|
@@ -1,102 +1,104 @@
|
|
|
1
1
|
import { generateBarcodeUrl as o } from "./utils/barcodeUtil.js";
|
|
2
2
|
import { buildTreeGridEnumAttributesByCommonCodeList as d, transformCommonCodeBasedOnGroupId as i, transformGridEnumByCommonCodeList as a } from "./utils/commonCodeUtils.js";
|
|
3
|
-
import { createDateRangeSearchParams as
|
|
4
|
-
import { createFormDataBody as
|
|
3
|
+
import { createDateRangeSearchParams as l } from "./utils/createDateRangeSearchParams.js";
|
|
4
|
+
import { createFormDataBody as E, normalizeFormDataUploadParams as s } from "./utils/createFormDataBody.js";
|
|
5
5
|
import { createJsonBody as p } from "./utils/createJsonBody.js";
|
|
6
|
-
import { createJsonString as
|
|
7
|
-
import { exportExcelByBuffer as
|
|
8
|
-
import { fetchFile as
|
|
9
|
-
import { formatDateToYmd as
|
|
10
|
-
import { formatNumber as
|
|
11
|
-
import { getDisplayValue as
|
|
12
|
-
import { getEstimatedTextCellWidth as
|
|
13
|
-
import { getFormDefaultValues as
|
|
6
|
+
import { createJsonString as n } from "./utils/createJsonString.js";
|
|
7
|
+
import { exportExcelByBuffer as L, getIndexByLetters as _, getLettersByIndex as x, setCellValue as R, setMergeCells as f } from "./utils/excelUtil.js";
|
|
8
|
+
import { fetchFile as B } from "./utils/fetchFile.js";
|
|
9
|
+
import { formatDateToYmd as y, getTodayYmd as u } from "./utils/formatDateToYmd.js";
|
|
10
|
+
import { formatNumber as h } from "./utils/formatNumber.js";
|
|
11
|
+
import { getDisplayValue as H } from "./utils/getDisplayValue.js";
|
|
12
|
+
import { getEstimatedTextCellWidth as F } from "./utils/getEstimatedTextCellWidth.js";
|
|
13
|
+
import { getFormDefaultValues as V } from "./utils/getFormDefaultValues.js";
|
|
14
14
|
import { getStartPagePath as w } from "./utils/getStartPagePath.js";
|
|
15
15
|
import { getTrimmedValue as P } from "./utils/getTrimmedValue.js";
|
|
16
|
-
import { isEnterKeyEvent as
|
|
17
|
-
import { getApiLanguageCode as
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
28
|
-
import {
|
|
29
|
-
import { TREEGRID_CELL_HIGHLIGHT_CLASS as ze, TREEGRID_CELL_HIGHLIGHT_COLOR as Je, TREEGRID_INPUT_CELL_COLOR as Ze, TREEGRID_WARNING_CELL_COLOR as ke } from "./constants/treeGrid.js";
|
|
16
|
+
import { isEnterKeyEvent as W } from "./utils/isEnterKeyEvent.js";
|
|
17
|
+
import { getApiLanguageCode as M, getI18nextLanguageCode as v } from "./utils/language.js";
|
|
18
|
+
import { preloadOnIdle as J } from "./utils/preloadOnIdle.js";
|
|
19
|
+
import { generateQrCodeUrl as Z } from "./utils/qrCodeUtil.js";
|
|
20
|
+
import { rebuildValue as Q } from "./utils/rebuildValue.js";
|
|
21
|
+
import { sanitizePasswordValue as q, sanitizeUserIdValue as X } from "./utils/sanitizeAuthInputValue.js";
|
|
22
|
+
import { exportTreeGridExcel as ee } from "./utils/treeGridExportExcelUtil.js";
|
|
23
|
+
import { isTreeGridCheckedValue as oe, toTreeGridBoolValue as te, toTreeGridYnValue as de } from "./utils/treeGridYnUtils.js";
|
|
24
|
+
import { TREEGRID_ADDED_ROW_BASELINE_VALUES_KEY as ae, TREEGRID_ADDED_ROW_BY_ID_FLAG as me, TREEGRID_ADDED_ROW_HIGHLIGHT_COLUMNS_KEY as le, addTreeGridRowById as Te, appendTreeGridAddedRowHighlightColumn as Ee, clearTreeGridCellHighlightById as se, exportTreeGridToExcelById as Ge, getTreeGridAddedRowBaselineValue as pe, getTreeGridAddedRowHighlightColumns as Ie, getTreeGridById as ne, getTreeGridCellComparableValue as ge, getTreeGridDataRowsById as Le, getTreeGridRowChangesById as _e, getTreeGridSelectedRowsById as xe, highlightTreeGridCellById as Re, isTreeGridRowAddedById as fe, markTreeGridRowAddedById as Ce, reloadTreeGridBodyById as Be, removeTreeGridAddedRowHighlightColumn as De, resetTreeGridChangesById as ye, resetTreeGridChangesByIds as ue, resetTreeGridSelectionById as Ae, resetTreeGridSelectionsByIds as he, setTreeGridColumnEnumOptionsById as Oe, setTreeGridColumnVisibilityById as He } from "./utils/treeGridUtil.js";
|
|
25
|
+
import { readZipEntryJson as Fe, readZipEntryText as Ue, saveAsZipFile as Ve } from "./utils/zipUtil.js";
|
|
26
|
+
import { OwpUtils as we } from "./utils/common/OwpUtils.js";
|
|
27
|
+
import { DEFAULT_CELL_ALIGNMENT as Pe, DEFAULT_HEADER_FILL as be, DEFAULT_HEADER_FONT as We, DEFAULT_THIN_BORDER as Ye, DEFAULT_VALUE_FONT as Me, DEFAULT_WRAP_CELL_ALIGNMENT as ve } from "./constants/excel.js";
|
|
28
|
+
import { TREEGRID_CELL_HIGHLIGHT_CLASS as Je, TREEGRID_CELL_HIGHLIGHT_COLOR as Ke, TREEGRID_INPUT_CELL_COLOR as Ze, TREEGRID_WARNING_CELL_COLOR as ke } from "./constants/treeGrid.js";
|
|
30
29
|
export {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
Je as
|
|
30
|
+
Pe as DEFAULT_CELL_ALIGNMENT,
|
|
31
|
+
be as DEFAULT_HEADER_FILL,
|
|
32
|
+
We as DEFAULT_HEADER_FONT,
|
|
33
|
+
Ye as DEFAULT_THIN_BORDER,
|
|
34
|
+
Me as DEFAULT_VALUE_FONT,
|
|
35
|
+
ve as DEFAULT_WRAP_CELL_ALIGNMENT,
|
|
36
|
+
we as OwpUtils,
|
|
37
|
+
ae as TREEGRID_ADDED_ROW_BASELINE_VALUES_KEY,
|
|
38
|
+
me as TREEGRID_ADDED_ROW_BY_ID_FLAG,
|
|
39
|
+
le as TREEGRID_ADDED_ROW_HIGHLIGHT_COLUMNS_KEY,
|
|
40
|
+
Je as TREEGRID_CELL_HIGHLIGHT_CLASS,
|
|
41
|
+
Ke as TREEGRID_CELL_HIGHLIGHT_COLOR,
|
|
42
42
|
Ze as TREEGRID_INPUT_CELL_COLOR,
|
|
43
43
|
ke as TREEGRID_WARNING_CELL_COLOR,
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
Te as addTreeGridRowById,
|
|
45
|
+
Ee as appendTreeGridAddedRowHighlightColumn,
|
|
46
46
|
d as buildTreeGridEnumAttributesByCommonCodeList,
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
se as clearTreeGridCellHighlightById,
|
|
48
|
+
l as createDateRangeSearchParams,
|
|
49
|
+
E as createFormDataBody,
|
|
49
50
|
p as createJsonBody,
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
Z as formatTimeInputToHourMinute,
|
|
51
|
+
n as createJsonString,
|
|
52
|
+
L as exportExcelByBuffer,
|
|
53
|
+
ee as exportTreeGridExcel,
|
|
54
|
+
Ge as exportTreeGridToExcelById,
|
|
55
|
+
B as fetchFile,
|
|
56
|
+
y as formatDateToYmd,
|
|
57
|
+
h as formatNumber,
|
|
58
58
|
o as generateBarcodeUrl,
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
59
|
+
Z as generateQrCodeUrl,
|
|
60
|
+
M as getApiLanguageCode,
|
|
61
|
+
H as getDisplayValue,
|
|
62
|
+
F as getEstimatedTextCellWidth,
|
|
63
|
+
V as getFormDefaultValues,
|
|
64
|
+
v as getI18nextLanguageCode,
|
|
65
|
+
_ as getIndexByLetters,
|
|
66
|
+
x as getLettersByIndex,
|
|
67
67
|
w as getStartPagePath,
|
|
68
|
-
|
|
68
|
+
u as getTodayYmd,
|
|
69
|
+
pe as getTreeGridAddedRowBaselineValue,
|
|
69
70
|
Ie as getTreeGridAddedRowHighlightColumns,
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
71
|
+
ne as getTreeGridById,
|
|
72
|
+
ge as getTreeGridCellComparableValue,
|
|
73
|
+
Le as getTreeGridDataRowsById,
|
|
74
|
+
_e as getTreeGridRowChangesById,
|
|
75
|
+
xe as getTreeGridSelectedRowsById,
|
|
74
76
|
P as getTrimmedValue,
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
77
|
+
Re as highlightTreeGridCellById,
|
|
78
|
+
W as isEnterKeyEvent,
|
|
79
|
+
oe as isTreeGridCheckedValue,
|
|
80
|
+
fe as isTreeGridRowAddedById,
|
|
79
81
|
Ce as markTreeGridRowAddedById,
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
82
|
+
s as normalizeFormDataUploadParams,
|
|
83
|
+
J as preloadOnIdle,
|
|
84
|
+
Fe as readZipEntryJson,
|
|
85
|
+
Ue as readZipEntryText,
|
|
86
|
+
Q as rebuildValue,
|
|
87
|
+
Be as reloadTreeGridBodyById,
|
|
88
|
+
De as removeTreeGridAddedRowHighlightColumn,
|
|
89
|
+
ye as resetTreeGridChangesById,
|
|
90
|
+
ue as resetTreeGridChangesByIds,
|
|
91
|
+
Ae as resetTreeGridSelectionById,
|
|
92
|
+
he as resetTreeGridSelectionsByIds,
|
|
93
|
+
q as sanitizePasswordValue,
|
|
94
|
+
X as sanitizeUserIdValue,
|
|
95
|
+
Ve as saveAsZipFile,
|
|
96
|
+
R as setCellValue,
|
|
97
|
+
f as setMergeCells,
|
|
98
|
+
Oe as setTreeGridColumnEnumOptionsById,
|
|
97
99
|
He as setTreeGridColumnVisibilityById,
|
|
98
|
-
|
|
99
|
-
|
|
100
|
+
te as toTreeGridBoolValue,
|
|
101
|
+
de as toTreeGridYnValue,
|
|
100
102
|
i as transformCommonCodeBasedOnGroupId,
|
|
101
103
|
a as transformGridEnumByCommonCodeList
|
|
102
104
|
};
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/package.json
CHANGED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
var E = Object.defineProperty;
|
|
2
|
-
var o = (t, i) => E(t, "name", { value: i, configurable: !0 });
|
|
3
|
-
import { normalizeTimeToHourMinute as M, formatTimeInputToHourMinute as f } from "../../../utils/normalizeTimeToHourMinute.js";
|
|
4
|
-
const C = "^$|^[\\d:]*$", R = /* @__PURE__ */ o(function(t, i) {
|
|
5
|
-
var r, d;
|
|
6
|
-
const e = f(t, i);
|
|
7
|
-
!this.Tag || e === t || (this.Tag.value = e, (d = (r = this.Tag).setSelectionRange) == null || d.call(r, e.length, e.length));
|
|
8
|
-
}, "handleHourMinuteEditChange"), h = {
|
|
9
|
-
OnChange: R,
|
|
10
|
-
OnKeyDown: /* @__PURE__ */ o(() => {
|
|
11
|
-
}, "OnKeyDown"),
|
|
12
|
-
OnStartEdit: /* @__PURE__ */ o(() => {
|
|
13
|
-
}, "OnStartEdit")
|
|
14
|
-
}, g = /* @__PURE__ */ o((t) => M(`${t ?? ""}`), "normalizeHourMinuteColumnValue"), v = /* @__PURE__ */ o((t, i) => t === "hourMinute" ? {
|
|
15
|
-
edit: h,
|
|
16
|
-
editMask: C,
|
|
17
|
-
resultMask: "",
|
|
18
|
-
resultText: "",
|
|
19
|
-
normalize: g,
|
|
20
|
-
invalidText: i.hourMinuteInvalidText
|
|
21
|
-
} : {}, "getTreeGridColumnEditPresetDefinition"), m = /* @__PURE__ */ o(() => ({
|
|
22
|
-
appliedColumns: {},
|
|
23
|
-
originalAttributes: {}
|
|
24
|
-
}), "createTreeGridColumnEditRulesState"), A = /* @__PURE__ */ o((t) => {
|
|
25
|
-
t.appliedColumns = {}, t.originalAttributes = {};
|
|
26
|
-
}, "resetTreeGridColumnEditRulesState"), O = /* @__PURE__ */ o((t, i) => {
|
|
27
|
-
if (!(t != null && t.length))
|
|
28
|
-
return;
|
|
29
|
-
const e = {};
|
|
30
|
-
return t.forEach((r) => {
|
|
31
|
-
const d = v(r.preset, i);
|
|
32
|
-
r.columns.forEach((l) => {
|
|
33
|
-
l && (e[l] = d);
|
|
34
|
-
});
|
|
35
|
-
}), Object.keys(e).length > 0 ? e : void 0;
|
|
36
|
-
}, "resolveTreeGridColumnEditRuleLookup"), p = /* @__PURE__ */ o((t, i, e) => {
|
|
37
|
-
if (!t)
|
|
38
|
-
return;
|
|
39
|
-
const r = i ? Object.keys(i) : [], l = Object.keys(e.appliedColumns).filter((n) => !(i != null && i[n]));
|
|
40
|
-
l.length === 0 && r.length === 0 || (t.StartUpdate(), l.forEach((n) => {
|
|
41
|
-
var a;
|
|
42
|
-
const s = (a = t.Cols) == null ? void 0 : a[n], u = e.originalAttributes[n];
|
|
43
|
-
if (!s || !u) {
|
|
44
|
-
delete e.appliedColumns[n];
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
s.Edit = u.Edit, s.EditMask = u.EditMask, s.ResultMask = u.ResultMask, s.ResultText = u.ResultText, delete e.appliedColumns[n];
|
|
48
|
-
}), r.forEach((n) => {
|
|
49
|
-
var c, T;
|
|
50
|
-
const s = (c = t.Cols) == null ? void 0 : c[n], u = i == null ? void 0 : i[n];
|
|
51
|
-
if (!s || !u)
|
|
52
|
-
return;
|
|
53
|
-
(T = e.originalAttributes)[n] ?? (T[n] = {
|
|
54
|
-
Edit: s.Edit,
|
|
55
|
-
EditMask: s.EditMask,
|
|
56
|
-
ResultMask: s.ResultMask,
|
|
57
|
-
ResultText: s.ResultText
|
|
58
|
-
});
|
|
59
|
-
const a = e.originalAttributes[n];
|
|
60
|
-
s.Edit = u.edit ?? a.Edit, s.EditMask = u.editMask ?? a.EditMask, s.ResultMask = u.resultMask ?? a.ResultMask, s.ResultText = u.resultText ?? a.ResultText, e.appliedColumns[n] = !0;
|
|
61
|
-
}), t.EndUpdate());
|
|
62
|
-
}, "syncTreeGridColumnEditRules"), k = /* @__PURE__ */ o((t, i, e) => {
|
|
63
|
-
const r = t == null ? void 0 : t[i], d = r == null ? void 0 : r.normalize;
|
|
64
|
-
if (typeof d != "function")
|
|
65
|
-
return;
|
|
66
|
-
const l = d(e), n = `${e ?? ""}`;
|
|
67
|
-
if (l == null)
|
|
68
|
-
return n ? {
|
|
69
|
-
value: "",
|
|
70
|
-
invalidText: r == null ? void 0 : r.invalidText
|
|
71
|
-
} : void 0;
|
|
72
|
-
if (l !== n)
|
|
73
|
-
return {
|
|
74
|
-
value: l
|
|
75
|
-
};
|
|
76
|
-
}, "resolveTreeGridColumnEditValue");
|
|
77
|
-
export {
|
|
78
|
-
m as createTreeGridColumnEditRulesState,
|
|
79
|
-
A as resetTreeGridColumnEditRulesState,
|
|
80
|
-
O as resolveTreeGridColumnEditRuleLookup,
|
|
81
|
-
k as resolveTreeGridColumnEditValue,
|
|
82
|
-
p as syncTreeGridColumnEditRules
|
|
83
|
-
};
|
|
84
|
-
//# sourceMappingURL=treeGridColumnEditRules.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"treeGridColumnEditRules.js","sources":["../../../../src/components/OwpTreeGrid/internal/treeGridColumnEditRules.ts"],"sourcesContent":["import {\n formatTimeInputToHourMinute,\n normalizeTimeToHourMinute,\n} from '@/utils/normalizeTimeToHourMinute';\nimport type {\n OwpTreeGridColumnEditPreset,\n OwpTreeGridColumnEditRule,\n} from '../OwpTreeGrid';\n\nconst HOUR_MINUTE_EDIT_MASK = '^$|^[\\\\d:]*$';\n\ntype TreeGridColumnEditValue = TCol['Edit'] | TEdit;\ntype TreeGridColumnEditAttributeSnapshot = {\n Edit?: TreeGridColumnEditValue;\n EditMask?: TCol['EditMask'];\n ResultMask?: TCol['ResultMask'];\n ResultText?: TCol['ResultText'];\n};\ntype TreeGridColumnEditMutableColumn = Omit<TCol, 'Edit'> & TreeGridColumnEditAttributeSnapshot;\n\ntype TreeGridColumnEditPresetMessages = {\n hourMinuteInvalidText: string;\n};\n\ntype TreeGridColumnEditPresetDefinition = {\n edit?: TreeGridColumnEditValue;\n editMask?: string;\n resultMask?: string;\n resultText?: string;\n normalize?: (value: unknown) => string | null | undefined;\n invalidText?: string;\n};\n\ntype TreeGridColumnEditRuleLookup = Record<string, TreeGridColumnEditPresetDefinition>;\n\ntype TreeGridColumnEditRulesState = {\n appliedColumns: Record<string, true>;\n originalAttributes: Record<string, TreeGridColumnEditAttributeSnapshot>;\n};\n\ntype HourMinuteEdit = {\n Tag?: HTMLInputElement | HTMLTextAreaElement | null;\n};\n\n/**\n * HH:mm 편집 중 입력 보정\n * @param value 현재 입력값\n * @param oldValue 이전 입력값\n */\nconst handleHourMinuteEditChange = function (this: HourMinuteEdit, value: string, oldValue: string) {\n const formattedValue = formatTimeInputToHourMinute(value, oldValue);\n\n if (!this.Tag || formattedValue === value) {\n return;\n }\n\n this.Tag.value = formattedValue;\n this.Tag.setSelectionRange?.(formattedValue.length, formattedValue.length);\n};\n\nconst HOUR_MINUTE_EDIT: TEdit = {\n OnChange: handleHourMinuteEditChange,\n OnKeyDown: () => {},\n OnStartEdit: () => {},\n};\n\nconst normalizeHourMinuteColumnValue = (value: unknown) => {\n return normalizeTimeToHourMinute(`${value ?? ''}`);\n};\n\nconst getTreeGridColumnEditPresetDefinition = (\n preset: OwpTreeGridColumnEditPreset,\n messages: TreeGridColumnEditPresetMessages,\n): TreeGridColumnEditPresetDefinition => {\n if (preset === 'hourMinute') {\n return {\n edit: HOUR_MINUTE_EDIT,\n editMask: HOUR_MINUTE_EDIT_MASK,\n resultMask: '',\n resultText: '',\n normalize: normalizeHourMinuteColumnValue,\n invalidText: messages.hourMinuteInvalidText,\n };\n }\n\n return {};\n};\n\n/**\n * 컬럼 편집 규칙 상태 생성\n */\nexport const createTreeGridColumnEditRulesState = (): TreeGridColumnEditRulesState => {\n return {\n appliedColumns: {},\n originalAttributes: {},\n };\n};\n\n/**\n * 컬럼 편집 규칙 상태 초기화\n * @param state 컬럼 편집 규칙 상태\n */\nexport const resetTreeGridColumnEditRulesState = (state: TreeGridColumnEditRulesState) => {\n state.appliedColumns = {};\n state.originalAttributes = {};\n};\n\n/**\n * 컬럼 편집 규칙 lookup 생성\n * @param rules 컬럼 편집 규칙 목록\n * @param messages preset 메시지 집합\n */\nexport const resolveTreeGridColumnEditRuleLookup = (\n rules: readonly OwpTreeGridColumnEditRule[] | undefined,\n messages: TreeGridColumnEditPresetMessages,\n) => {\n if (!rules?.length) {\n return undefined;\n }\n\n const lookup: TreeGridColumnEditRuleLookup = {};\n\n rules.forEach((rule) => {\n const presetDefinition = getTreeGridColumnEditPresetDefinition(rule.preset, messages);\n\n rule.columns.forEach((column) => {\n if (column) {\n lookup[column] = presetDefinition;\n }\n });\n });\n\n return Object.keys(lookup).length > 0 ? lookup : undefined;\n};\n\n/**\n * 컬럼 편집 규칙 동기화\n * @param grid TreeGrid 인스턴스\n * @param lookup 컬럼 편집 규칙 lookup\n * @param state 컬럼 편집 규칙 상태\n */\nexport const syncTreeGridColumnEditRules = (\n grid: TGrid | null,\n lookup: TreeGridColumnEditRuleLookup | undefined,\n state: TreeGridColumnEditRulesState,\n) => {\n if (!grid) {\n return;\n }\n\n const nextColumns = lookup ? Object.keys(lookup) : [];\n const previousColumns = Object.keys(state.appliedColumns);\n const columnsToRestore = previousColumns.filter((column) => !lookup?.[column]);\n\n if (columnsToRestore.length === 0 && nextColumns.length === 0) {\n return;\n }\n\n grid.StartUpdate();\n\n columnsToRestore.forEach((columnName) => {\n const column = grid.Cols?.[columnName] as TreeGridColumnEditMutableColumn | undefined;\n const originalAttributes = state.originalAttributes[columnName];\n\n if (!column || !originalAttributes) {\n delete state.appliedColumns[columnName];\n return;\n }\n\n column.Edit = originalAttributes.Edit;\n column.EditMask = originalAttributes.EditMask;\n column.ResultMask = originalAttributes.ResultMask;\n column.ResultText = originalAttributes.ResultText;\n\n delete state.appliedColumns[columnName];\n });\n\n nextColumns.forEach((columnName) => {\n const column = grid.Cols?.[columnName] as TreeGridColumnEditMutableColumn | undefined;\n const presetDefinition = lookup?.[columnName];\n\n if (!column || !presetDefinition) {\n return;\n }\n\n state.originalAttributes[columnName] ??= {\n Edit: column.Edit,\n EditMask: column.EditMask,\n ResultMask: column.ResultMask,\n ResultText: column.ResultText,\n };\n\n const originalAttributes = state.originalAttributes[columnName];\n\n column.Edit = presetDefinition.edit ?? originalAttributes.Edit;\n column.EditMask = presetDefinition.editMask ?? originalAttributes.EditMask;\n column.ResultMask = presetDefinition.resultMask ?? originalAttributes.ResultMask;\n column.ResultText = presetDefinition.resultText ?? originalAttributes.ResultText;\n\n state.appliedColumns[columnName] = true;\n });\n\n grid.EndUpdate();\n};\n\n/**\n * 컬럼 편집 규칙 최종값 정규화\n * @param lookup 컬럼 편집 규칙 lookup\n * @param columnName 컬럼명\n * @param value 원본 값\n */\nexport const resolveTreeGridColumnEditValue = (\n lookup: TreeGridColumnEditRuleLookup | undefined,\n columnName: string,\n value: unknown,\n) => {\n const presetDefinition = lookup?.[columnName];\n const normalize = presetDefinition?.normalize;\n\n if (typeof normalize !== 'function') {\n return undefined;\n }\n\n const normalizedValue = normalize(value);\n const currentValue = `${value ?? ''}`;\n\n if (normalizedValue == null) {\n return currentValue\n ? {\n value: '',\n invalidText: presetDefinition?.invalidText,\n }\n : undefined;\n }\n\n if (normalizedValue === currentValue) {\n return undefined;\n }\n\n return {\n value: normalizedValue,\n };\n};\n\nexport type { TreeGridColumnEditRuleLookup, TreeGridColumnEditRulesState };\n"],"names":["HOUR_MINUTE_EDIT_MASK","handleHourMinuteEditChange","__name","value","oldValue","formattedValue","formatTimeInputToHourMinute","_b","_a","HOUR_MINUTE_EDIT","normalizeHourMinuteColumnValue","normalizeTimeToHourMinute","getTreeGridColumnEditPresetDefinition","preset","messages","createTreeGridColumnEditRulesState","resetTreeGridColumnEditRulesState","state","resolveTreeGridColumnEditRuleLookup","rules","lookup","rule","presetDefinition","column","syncTreeGridColumnEditRules","grid","nextColumns","columnsToRestore","columnName","originalAttributes","resolveTreeGridColumnEditValue","normalize","normalizedValue","currentValue"],"mappings":"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"}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import type { OwpTreeGridColumnEditRule } from '../OwpTreeGrid';
|
|
2
|
-
type TreeGridColumnEditValue = TCol['Edit'] | TEdit;
|
|
3
|
-
type TreeGridColumnEditAttributeSnapshot = {
|
|
4
|
-
Edit?: TreeGridColumnEditValue;
|
|
5
|
-
EditMask?: TCol['EditMask'];
|
|
6
|
-
ResultMask?: TCol['ResultMask'];
|
|
7
|
-
ResultText?: TCol['ResultText'];
|
|
8
|
-
};
|
|
9
|
-
type TreeGridColumnEditPresetMessages = {
|
|
10
|
-
hourMinuteInvalidText: string;
|
|
11
|
-
};
|
|
12
|
-
type TreeGridColumnEditPresetDefinition = {
|
|
13
|
-
edit?: TreeGridColumnEditValue;
|
|
14
|
-
editMask?: string;
|
|
15
|
-
resultMask?: string;
|
|
16
|
-
resultText?: string;
|
|
17
|
-
normalize?: (value: unknown) => string | null | undefined;
|
|
18
|
-
invalidText?: string;
|
|
19
|
-
};
|
|
20
|
-
type TreeGridColumnEditRuleLookup = Record<string, TreeGridColumnEditPresetDefinition>;
|
|
21
|
-
type TreeGridColumnEditRulesState = {
|
|
22
|
-
appliedColumns: Record<string, true>;
|
|
23
|
-
originalAttributes: Record<string, TreeGridColumnEditAttributeSnapshot>;
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* 컬럼 편집 규칙 상태 생성
|
|
27
|
-
*/
|
|
28
|
-
export declare const createTreeGridColumnEditRulesState: () => TreeGridColumnEditRulesState;
|
|
29
|
-
/**
|
|
30
|
-
* 컬럼 편집 규칙 상태 초기화
|
|
31
|
-
* @param state 컬럼 편집 규칙 상태
|
|
32
|
-
*/
|
|
33
|
-
export declare const resetTreeGridColumnEditRulesState: (state: TreeGridColumnEditRulesState) => void;
|
|
34
|
-
/**
|
|
35
|
-
* 컬럼 편집 규칙 lookup 생성
|
|
36
|
-
* @param rules 컬럼 편집 규칙 목록
|
|
37
|
-
* @param messages preset 메시지 집합
|
|
38
|
-
*/
|
|
39
|
-
export declare const resolveTreeGridColumnEditRuleLookup: (rules: readonly OwpTreeGridColumnEditRule[] | undefined, messages: TreeGridColumnEditPresetMessages) => TreeGridColumnEditRuleLookup;
|
|
40
|
-
/**
|
|
41
|
-
* 컬럼 편집 규칙 동기화
|
|
42
|
-
* @param grid TreeGrid 인스턴스
|
|
43
|
-
* @param lookup 컬럼 편집 규칙 lookup
|
|
44
|
-
* @param state 컬럼 편집 규칙 상태
|
|
45
|
-
*/
|
|
46
|
-
export declare const syncTreeGridColumnEditRules: (grid: TGrid | null, lookup: TreeGridColumnEditRuleLookup | undefined, state: TreeGridColumnEditRulesState) => void;
|
|
47
|
-
/**
|
|
48
|
-
* 컬럼 편집 규칙 최종값 정규화
|
|
49
|
-
* @param lookup 컬럼 편집 규칙 lookup
|
|
50
|
-
* @param columnName 컬럼명
|
|
51
|
-
* @param value 원본 값
|
|
52
|
-
*/
|
|
53
|
-
export declare const resolveTreeGridColumnEditValue: (lookup: TreeGridColumnEditRuleLookup | undefined, columnName: string, value: unknown) => {
|
|
54
|
-
value: string;
|
|
55
|
-
invalidText: string;
|
|
56
|
-
} | {
|
|
57
|
-
value: string;
|
|
58
|
-
invalidText?: undefined;
|
|
59
|
-
};
|
|
60
|
-
export type { TreeGridColumnEditRuleLookup, TreeGridColumnEditRulesState };
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 시간 입력 문자열을 편집 중 HH:mm 형태로 포맷
|
|
3
|
-
* @param value 현재 입력값
|
|
4
|
-
* @param oldValue 이전 입력값
|
|
5
|
-
*/
|
|
6
|
-
export declare const formatTimeInputToHourMinute: (value: string, oldValue?: string) => string;
|
|
7
|
-
/**
|
|
8
|
-
* 시간 문자열을 HH:mm 형식으로 정규화
|
|
9
|
-
* @param value 원본 시간 문자열
|
|
10
|
-
*/
|
|
11
|
-
export declare const normalizeTimeToHourMinute: (value?: string | null) => string;
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
var o = Object.defineProperty;
|
|
2
|
-
var r = (e, n) => o(e, "name", { value: n, configurable: !0 });
|
|
3
|
-
import { isString as l } from "../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/predicate/isString.js";
|
|
4
|
-
const m = /* @__PURE__ */ r((e) => {
|
|
5
|
-
const n = e.replace(/[^\d:]/g, "");
|
|
6
|
-
if (!n.includes(":"))
|
|
7
|
-
return n.slice(0, 4);
|
|
8
|
-
const [i = "", t = ""] = n.split(":");
|
|
9
|
-
return `${i.slice(0, 2)}:${t.replace(/:/g, "").slice(0, 3)}`;
|
|
10
|
-
}, "sanitizeTimeInputValue"), a = /* @__PURE__ */ r((e) => e.replace(/\D/g, "").slice(0, 4), "getTimeDigits"), f = /* @__PURE__ */ r((e, n = "") => {
|
|
11
|
-
const i = m(e);
|
|
12
|
-
if (!i)
|
|
13
|
-
return "";
|
|
14
|
-
if (e.length < n.length)
|
|
15
|
-
return i;
|
|
16
|
-
const t = a(e);
|
|
17
|
-
return t.length === 1 ? `${t}:` : t.length === 2 ? `${t}:` : t.length === 3 ? `${t.slice(0, 1)}:${t.slice(1)}` : `${t.slice(0, 2)}:${t.slice(2, 4)}`;
|
|
18
|
-
}, "formatTimeInputToHourMinute"), h = /* @__PURE__ */ r((e) => {
|
|
19
|
-
if (!l(e))
|
|
20
|
-
return null;
|
|
21
|
-
const n = f(e.trim());
|
|
22
|
-
if (!n)
|
|
23
|
-
return "";
|
|
24
|
-
const i = n.match(/^(\d{1,2}):(\d{2})$/);
|
|
25
|
-
if (!i)
|
|
26
|
-
return null;
|
|
27
|
-
const [, t = "", s = ""] = i, u = Number(t), c = Number(s);
|
|
28
|
-
return u < 0 || u > 23 || c < 0 || c > 59 ? null : `${u.toString().padStart(2, "0")}:${s}`;
|
|
29
|
-
}, "normalizeTimeToHourMinute");
|
|
30
|
-
export {
|
|
31
|
-
f as formatTimeInputToHourMinute,
|
|
32
|
-
h as normalizeTimeToHourMinute
|
|
33
|
-
};
|
|
34
|
-
//# sourceMappingURL=normalizeTimeToHourMinute.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"normalizeTimeToHourMinute.js","sources":["../../src/utils/normalizeTimeToHourMinute.ts"],"sourcesContent":["import { isString } from 'es-toolkit/compat';\n\nconst sanitizeTimeInputValue = (value: string) => {\n const sanitizedValue = value.replace(/[^\\d:]/g, '');\n\n if (!sanitizedValue.includes(':')) {\n return sanitizedValue.slice(0, 4);\n }\n\n const [hourText = '', minuteText = ''] = sanitizedValue.split(':');\n\n return `${hourText.slice(0, 2)}:${minuteText.replace(/:/g, '').slice(0, 3)}`;\n};\n\nconst getTimeDigits = (value: string) => value.replace(/\\D/g, '').slice(0, 4);\n\n/**\n * 시간 입력 문자열을 편집 중 HH:mm 형태로 포맷\n * @param value 현재 입력값\n * @param oldValue 이전 입력값\n */\nexport const formatTimeInputToHourMinute = (value: string, oldValue = '') => {\n const sanitizedValue = sanitizeTimeInputValue(value);\n\n if (!sanitizedValue) {\n return '';\n }\n\n if (value.length < oldValue.length) {\n return sanitizedValue;\n }\n\n const digits = getTimeDigits(value);\n\n if (digits.length === 1) {\n return `${digits}:`;\n }\n\n if (digits.length === 2) {\n return `${digits}:`;\n }\n\n if (digits.length === 3) {\n return `${digits.slice(0, 1)}:${digits.slice(1)}`;\n }\n\n return `${digits.slice(0, 2)}:${digits.slice(2, 4)}`;\n};\n\n/**\n * 시간 문자열을 HH:mm 형식으로 정규화\n * @param value 원본 시간 문자열\n */\nexport const normalizeTimeToHourMinute = (value?: string | null) => {\n if (!isString(value)) {\n return null;\n }\n\n const formattedValue = formatTimeInputToHourMinute(value.trim());\n\n if (!formattedValue) {\n return '';\n }\n\n const timeMatch = formattedValue.match(/^(\\d{1,2}):(\\d{2})$/);\n\n if (!timeMatch) {\n return null;\n }\n\n const [, hourText = '', minuteText = ''] = timeMatch;\n const hour = Number(hourText);\n const minute = Number(minuteText);\n\n if (hour < 0 || hour > 23 || minute < 0 || minute > 59) {\n return null;\n }\n\n return `${hour.toString().padStart(2, '0')}:${minuteText}`;\n};\n"],"names":["sanitizeTimeInputValue","__name","value","sanitizedValue","hourText","minuteText","getTimeDigits","formatTimeInputToHourMinute","oldValue","digits","normalizeTimeToHourMinute","isString","formattedValue","timeMatch","hour","minute"],"mappings":";;;AAEA,MAAMA,IAAyB,gBAAAC,EAAA,CAACC,MAAkB;AAChD,QAAMC,IAAiBD,EAAM,QAAQ,WAAW,EAAE;AAElD,MAAI,CAACC,EAAe,SAAS,GAAG;AAC9B,WAAOA,EAAe,MAAM,GAAG,CAAC;AAGlC,QAAM,CAACC,IAAW,IAAIC,IAAa,EAAE,IAAIF,EAAe,MAAM,GAAG;AAEjE,SAAO,GAAGC,EAAS,MAAM,GAAG,CAAC,CAAC,IAAIC,EAAW,QAAQ,MAAM,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC;AAC5E,GAV+B,2BAYzBC,IAAgB,gBAAAL,EAAA,CAACC,MAAkBA,EAAM,QAAQ,OAAO,EAAE,EAAE,MAAM,GAAG,CAAC,GAAtD,kBAOTK,IAA8B,gBAAAN,EAAA,CAACC,GAAeM,IAAW,OAAO;AAC3E,QAAML,IAAiBH,EAAuBE,CAAK;AAEnD,MAAI,CAACC;AACH,WAAO;AAGT,MAAID,EAAM,SAASM,EAAS;AAC1B,WAAOL;AAGT,QAAMM,IAASH,EAAcJ,CAAK;AAElC,SAAIO,EAAO,WAAW,IACb,GAAGA,CAAM,MAGdA,EAAO,WAAW,IACb,GAAGA,CAAM,MAGdA,EAAO,WAAW,IACb,GAAGA,EAAO,MAAM,GAAG,CAAC,CAAC,IAAIA,EAAO,MAAM,CAAC,CAAC,KAG1C,GAAGA,EAAO,MAAM,GAAG,CAAC,CAAC,IAAIA,EAAO,MAAM,GAAG,CAAC,CAAC;AACpD,GA1B2C,gCAgC9BC,IAA4B,gBAAAT,EAAA,CAACC,MAA0B;AAClE,MAAI,CAACS,EAAST,CAAK;AACjB,WAAO;AAGT,QAAMU,IAAiBL,EAA4BL,EAAM,KAAA,CAAM;AAE/D,MAAI,CAACU;AACH,WAAO;AAGT,QAAMC,IAAYD,EAAe,MAAM,qBAAqB;AAE5D,MAAI,CAACC;AACH,WAAO;AAGT,QAAM,CAAA,EAAGT,IAAW,IAAIC,IAAa,EAAE,IAAIQ,GACrCC,IAAO,OAAOV,CAAQ,GACtBW,IAAS,OAAOV,CAAU;AAEhC,SAAIS,IAAO,KAAKA,IAAO,MAAMC,IAAS,KAAKA,IAAS,KAC3C,OAGF,GAAGD,EAAK,WAAW,SAAS,GAAG,GAAG,CAAC,IAAIT,CAAU;AAC1D,GA1ByC;"}
|