@wipco/sdui 0.30.0 → 0.32.0

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.
@@ -0,0 +1,21 @@
1
+ import { S as SduiBoxProps } from '../layout-B1QrIBm6.js';
2
+ import React__default from 'react';
3
+ import { OptionField } from './OptionSchemaEditor.js';
4
+
5
+ interface OptionValueFieldsProps {
6
+ /** 장비의 옵션 서식 (assets.config.options) */
7
+ schema?: OptionField[];
8
+ /** 유닛의 옵션 값 (asset_units.config) */
9
+ value?: Record<string, unknown> | null;
10
+ onChange?: (value: Record<string, unknown>) => void;
11
+ disabled?: boolean;
12
+ /**
13
+ * 입력 대신 읽기 표시 — 상세 화면용. 값이 있는 칸만 라벨·값 줄로 세운다.
14
+ * 잠긴 입력칸으로 대신하지 않는 이유: 회색 입력칸은 "고칠 수 있는데 지금은 막혔다"로
15
+ * 읽히고, 빈 칸이 줄줄이 서면 값이 없다는 사실만 크게 보인다.
16
+ */
17
+ readOnly?: boolean;
18
+ }
19
+ declare const OptionValueFields: React__default.FC<OptionValueFieldsProps & SduiBoxProps>;
20
+
21
+ export { OptionValueFields, type OptionValueFieldsProps };
@@ -0,0 +1,4 @@
1
+ export { OptionValueFields } from '../chunk-CTSVZTIT.js';
2
+ import '../chunk-QO6UJAQN.js';
3
+ import '../chunk-WIDDHR7L.js';
4
+ import '../chunk-SAN4IX6N.js';
@@ -0,0 +1,45 @@
1
+ import * as React from 'react';
2
+ import { S as SduiBoxProps } from '../layout-B1QrIBm6.js';
3
+
4
+ /**
5
+ * StagePeriodEditor — 평가 단계(회차 소속 세션)의 기간 4필드 편집기.
6
+ *
7
+ * v2 evaluation-campaign-management.tsx의 StagePeriodDialog 본문 이식이다.
8
+ * 스펙만으로는 안 되는 두 가지가 이 계층의 존재 이유다:
9
+ * 1. **빈값 → null 정규화** — 서버 PATCH /evaluation-sessions/{id}는 빈 문자열을
10
+ * 400("YYYY-MM-DD/HH:MM 형식")으로 거부하고 null만 "기간 없음"으로 받는다.
11
+ * 스펙($calc)에는 ""→null 변환 연산이 없다.
12
+ * 2. **서버 validate_period의 클라이언트 미러** — 종료일<시작일, 같은 날
13
+ * 종료시간≤시작시간. 날짜 문자열 비교 연산이 스펙에 없다.
14
+ *
15
+ * 프롭 계약:
16
+ * - value: 저장된 기간(서버 stages[]의 startDate/endDate/startTime/endTime —
17
+ * 시각은 'HH:MM:SS'도 허용, 'HH:MM'으로 정규화해 읽는다). **시딩 전용** —
18
+ * resetKey가 바뀔 때만 다시 읽는다(편집 중 재조회가 입력을 덮지 않게, v2와
19
+ * 같은 마운트 1회 초기화 의미론).
20
+ * - onChange: { startDate, endDate, startTime, endTime, error } 봉투.
21
+ * 4필드는 항상 null 또는 유효값이라 그대로 PATCH body에 바인딩할 수 있고,
22
+ * error가 있으면 스펙은 저장 버튼을 잠근다. 마운트 직후에도 한 번 흘린다.
23
+ * - 저장은 스펙이 한다(PATCH camel 4필드). 시간을 날짜 없이 두는 조합은 입력
24
+ * 단계에서 막는다(날짜를 지우면 시각도 함께 비움 — v2 동일).
25
+ */
26
+ /** onChange 봉투 — 4필드는 null 또는 유효값, error가 있으면 저장 금지. */
27
+ interface StagePeriodValue {
28
+ startDate: string | null;
29
+ endDate: string | null;
30
+ startTime: string | null;
31
+ endTime: string | null;
32
+ error: string | null;
33
+ }
34
+ interface StagePeriodEditorProps {
35
+ /** 저장된 기간(서버 응답 그대로). 시딩 전용 — resetKey가 바뀔 때 다시 읽는다. */
36
+ value?: unknown;
37
+ onChange?: (value: StagePeriodValue) => void;
38
+ /** 단계 id — 바뀌면 value로 폼을 다시 시딩한다(다이얼로그 재사용 대비). */
39
+ resetKey?: string;
40
+ disabled?: boolean;
41
+ }
42
+ /** 바깥 style·className을 뿌리에 얹는다 — 자기 축(폭·여백) 통로. */
43
+ declare const StagePeriodEditor: React.FC<StagePeriodEditorProps & SduiBoxProps>;
44
+
45
+ export { StagePeriodEditor, type StagePeriodEditorProps, type StagePeriodValue };
@@ -0,0 +1,6 @@
1
+ export { StagePeriodEditor } from '../chunk-KVFHPBAY.js';
2
+ import '../chunk-SNRKPEWT.js';
3
+ import '../chunk-EFMKWPZ3.js';
4
+ import '../chunk-XQPTSEJC.js';
5
+ import '../chunk-WIDDHR7L.js';
6
+ import '../chunk-SAN4IX6N.js';
@@ -10,6 +10,8 @@ import { SummaryTableProps } from './SummaryTable.js';
10
10
  export { SummaryTable, SummaryTableColumn } from './SummaryTable.js';
11
11
  import { StripProps } from './Strip.js';
12
12
  export { Strip } from './Strip.js';
13
+ import { StagePeriodEditorProps } from './StagePeriodEditor.js';
14
+ export { StagePeriodEditor } from './StagePeriodEditor.js';
13
15
  import { StackedMeterProps } from './StackedMeter.js';
14
16
  export { StackedMeter, StackedMeterSegment } from './StackedMeter.js';
15
17
  import { SecureScreenProps } from './SecureScreen.js';
@@ -32,6 +34,10 @@ import { OrgChartBoardProps } from './OrgChartBoard.js';
32
34
  export { OrgChartBoard } from './OrgChartBoard.js';
33
35
  import { OrgChartProps } from './OrgChart.js';
34
36
  export { OrgChart, OrgNode } from './OrgChart.js';
37
+ import { OptionValueFieldsProps } from './OptionValueFields.js';
38
+ export { OptionValueFields } from './OptionValueFields.js';
39
+ import { OptionSchemaEditorProps } from './OptionSchemaEditor.js';
40
+ export { OptionSchemaEditor } from './OptionSchemaEditor.js';
35
41
  import { LiveClockProps } from './LiveClock.js';
36
42
  export { LiveClock } from './LiveClock.js';
37
43
  import { JsonFieldProps } from './JsonField.js';
@@ -78,6 +84,8 @@ declare const widgetComponents: {
78
84
  InlineEdit: React.FC<InlineEditProps & SduiBoxProps>;
79
85
  JsonField: React.FC<JsonFieldProps & SduiBoxProps>;
80
86
  LiveClock: React.FC<LiveClockProps & SduiBoxProps>;
87
+ OptionSchemaEditor: React.FC<OptionSchemaEditorProps & SduiBoxProps>;
88
+ OptionValueFields: React.FC<OptionValueFieldsProps & SduiBoxProps>;
81
89
  OrgChart: React.FC<OrgChartProps & SduiBoxProps>;
82
90
  OrgChartBoard: React.FC<OrgChartBoardProps & SduiBoxProps>;
83
91
  PermissionMatrixEditor: React.FC<PermissionMatrixEditorProps & SduiBoxProps>;
@@ -89,6 +97,7 @@ declare const widgetComponents: {
89
97
  SearchableMultiPicker: React.FC<SearchableMultiPickerProps & SduiBoxProps>;
90
98
  SecureScreen: React.FC<SecureScreenProps & SduiBoxProps>;
91
99
  StackedMeter: React.FC<StackedMeterProps & SduiBoxProps>;
100
+ StagePeriodEditor: React.FC<StagePeriodEditorProps & SduiBoxProps>;
92
101
  Strip: React.FC<StripProps & SduiBoxProps>;
93
102
  SummaryTable: React.FC<SummaryTableProps & SduiBoxProps>;
94
103
  TagMultiSelect: React.FC<TagMultiSelectProps & SduiBoxProps>;
@@ -99,4 +108,4 @@ declare const widgetComponents: {
99
108
  /** 위젯 어휘의 컴포넌트 이름 union — 메타데이터 대조에 쓴다(`@wipco/sdui/meta`). */
100
109
  type SduiWidgetComponentName = keyof typeof widgetComponents;
101
110
 
102
- export { ApprovalLineEditorProps, ApprovalOverridesEditorProps, ApprovalStepperProps, ColumnBoardProps, DiffViewProps, DisclosureProps, EventCalendarProps, ImageLightboxProps, InlineEditProps, JsonFieldProps, LiveClockProps, OrgChartBoardProps, OrgChartProps, PeriodFilterProps, PermissionMatrixEditorProps, PrintSheetProps, RankBoardProps, RecordSheetProps, RoleMemberPickerProps, type SduiWidgetComponentName, SearchableMultiPickerProps, SecureScreenProps, StackedMeterProps, StripProps, SummaryTableProps, TagMultiSelectProps, TimelineProps, TreePickerProps, TreeViewProps, widgetComponents };
111
+ export { ApprovalLineEditorProps, ApprovalOverridesEditorProps, ApprovalStepperProps, ColumnBoardProps, DiffViewProps, DisclosureProps, EventCalendarProps, ImageLightboxProps, InlineEditProps, JsonFieldProps, LiveClockProps, OptionSchemaEditorProps, OptionValueFieldsProps, OrgChartBoardProps, OrgChartProps, PeriodFilterProps, PermissionMatrixEditorProps, PrintSheetProps, RankBoardProps, RecordSheetProps, RoleMemberPickerProps, type SduiWidgetComponentName, SearchableMultiPickerProps, SecureScreenProps, StackedMeterProps, StagePeriodEditorProps, StripProps, SummaryTableProps, TagMultiSelectProps, TimelineProps, TreePickerProps, TreeViewProps, widgetComponents };
@@ -1,7 +1,19 @@
1
+ import { Strip } from '../chunk-ZH5MLOZS.js';
2
+ export { Strip } from '../chunk-ZH5MLOZS.js';
3
+ import { SummaryTable } from '../chunk-O4U7Y3XL.js';
4
+ export { SummaryTable } from '../chunk-O4U7Y3XL.js';
5
+ import { Timeline } from '../chunk-EFYEOT47.js';
6
+ export { Timeline } from '../chunk-EFYEOT47.js';
1
7
  import { TreePicker } from '../chunk-U3HYQCFA.js';
2
8
  export { TreePicker } from '../chunk-U3HYQCFA.js';
3
9
  import { TreeView } from '../chunk-X5R2HHEN.js';
4
10
  export { TreeView, buildTreeNodes } from '../chunk-X5R2HHEN.js';
11
+ import { PrintSheet } from '../chunk-MYJ2KEIP.js';
12
+ export { PrintSheet } from '../chunk-MYJ2KEIP.js';
13
+ import { RankBoard } from '../chunk-U6H7YN4I.js';
14
+ export { RankBoard } from '../chunk-U6H7YN4I.js';
15
+ import { RecordSheet } from '../chunk-K3JBSWFI.js';
16
+ export { RecordSheet } from '../chunk-K3JBSWFI.js';
5
17
  import { RoleMemberPicker } from '../chunk-WXZDYDXG.js';
6
18
  export { RoleMemberPicker } from '../chunk-WXZDYDXG.js';
7
19
  import { SearchableMultiPicker } from '../chunk-C53NGSA3.js';
@@ -10,14 +22,16 @@ import { SecureScreen } from '../chunk-IIRENCDS.js';
10
22
  export { SecureScreen } from '../chunk-IIRENCDS.js';
11
23
  import { StackedMeter } from '../chunk-BMZKZGJF.js';
12
24
  export { StackedMeter } from '../chunk-BMZKZGJF.js';
13
- import { Strip } from '../chunk-ZH5MLOZS.js';
14
- export { Strip } from '../chunk-ZH5MLOZS.js';
15
- import { SummaryTable } from '../chunk-O4U7Y3XL.js';
16
- export { SummaryTable } from '../chunk-O4U7Y3XL.js';
17
- import { Timeline } from '../chunk-EFYEOT47.js';
18
- export { Timeline } from '../chunk-EFYEOT47.js';
25
+ import { StagePeriodEditor } from '../chunk-KVFHPBAY.js';
26
+ export { StagePeriodEditor } from '../chunk-KVFHPBAY.js';
27
+ import { JsonField } from '../chunk-JVBZRDC2.js';
28
+ export { JsonField } from '../chunk-JVBZRDC2.js';
19
29
  import { LiveClock } from '../chunk-Z3WGIFJP.js';
20
30
  export { LiveClock } from '../chunk-Z3WGIFJP.js';
31
+ import { OptionSchemaEditor } from '../chunk-TIY4A223.js';
32
+ export { OptionSchemaEditor } from '../chunk-TIY4A223.js';
33
+ import { OptionValueFields } from '../chunk-CTSVZTIT.js';
34
+ export { OptionValueFields } from '../chunk-CTSVZTIT.js';
21
35
  import { OrgChart } from '../chunk-QWJ3OBBL.js';
22
36
  export { OrgChart } from '../chunk-QWJ3OBBL.js';
23
37
  import { OrgChartBoard } from '../chunk-NGZI4V3O.js';
@@ -26,12 +40,7 @@ import { PermissionMatrixEditor } from '../chunk-N24VF6KI.js';
26
40
  export { PermissionMatrixEditor } from '../chunk-N24VF6KI.js';
27
41
  import { PeriodFilter } from '../chunk-INWASR2G.js';
28
42
  export { PeriodFilter } from '../chunk-INWASR2G.js';
29
- import { PrintSheet } from '../chunk-MYJ2KEIP.js';
30
- export { PrintSheet } from '../chunk-MYJ2KEIP.js';
31
- import { RankBoard } from '../chunk-U6H7YN4I.js';
32
- export { RankBoard } from '../chunk-U6H7YN4I.js';
33
- import { RecordSheet } from '../chunk-K3JBSWFI.js';
34
- export { RecordSheet } from '../chunk-K3JBSWFI.js';
43
+ export { AutocompleteField, toAutocompleteOptions } from '../chunk-CVCP52OD.js';
35
44
  import { ColumnBoard } from '../chunk-C4JRSZGS.js';
36
45
  export { ColumnBoard } from '../chunk-C4JRSZGS.js';
37
46
  import { DiffView } from '../chunk-LDJ2CFFH.js';
@@ -45,23 +54,22 @@ import { ImageLightbox } from '../chunk-XPBZMECW.js';
45
54
  export { ImageLightbox } from '../chunk-XPBZMECW.js';
46
55
  import { InlineEdit } from '../chunk-KT3ZVBLN.js';
47
56
  export { InlineEdit } from '../chunk-KT3ZVBLN.js';
48
- import { JsonField } from '../chunk-JVBZRDC2.js';
49
- export { JsonField } from '../chunk-JVBZRDC2.js';
50
57
  import '../chunk-QU7YVMFA.js';
58
+ import '../chunk-QO6UJAQN.js';
51
59
  import '../chunk-THEP3VWY.js';
60
+ import '../chunk-SNRKPEWT.js';
52
61
  import { ApprovalOverridesEditor } from '../chunk-OR27SRKL.js';
53
62
  export { ApprovalOverridesEditor } from '../chunk-OR27SRKL.js';
54
63
  import { TagMultiSelect } from '../chunk-QDEZXA34.js';
55
64
  export { TagMultiSelect } from '../chunk-QDEZXA34.js';
56
65
  import { ApprovalLineEditor } from '../chunk-S4LOH2TU.js';
57
66
  export { ApprovalLineEditor } from '../chunk-S4LOH2TU.js';
58
- import { ApprovalStepper } from '../chunk-ZTQEP3TR.js';
59
- export { ApprovalStepper } from '../chunk-ZTQEP3TR.js';
60
- export { AutocompleteField, toAutocompleteOptions } from '../chunk-CVCP52OD.js';
61
67
  import '../chunk-BD75U73S.js';
62
68
  import '../chunk-EFMKWPZ3.js';
63
69
  import '../chunk-XQPTSEJC.js';
64
70
  import '../chunk-DKPNFEVU.js';
71
+ import { ApprovalStepper } from '../chunk-ZTQEP3TR.js';
72
+ export { ApprovalStepper } from '../chunk-ZTQEP3TR.js';
65
73
  import '../chunk-WIDDHR7L.js';
66
74
  import '../chunk-SAN4IX6N.js';
67
75
 
@@ -78,6 +86,8 @@ var widgetComponents = {
78
86
  InlineEdit,
79
87
  JsonField,
80
88
  LiveClock,
89
+ OptionSchemaEditor,
90
+ OptionValueFields,
81
91
  OrgChart,
82
92
  OrgChartBoard,
83
93
  PermissionMatrixEditor,
@@ -89,6 +99,7 @@ var widgetComponents = {
89
99
  SearchableMultiPicker,
90
100
  SecureScreen,
91
101
  StackedMeter,
102
+ StagePeriodEditor,
92
103
  Strip,
93
104
  SummaryTable,
94
105
  TagMultiSelect,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipco/sdui",
3
- "version": "0.30.0",
3
+ "version": "0.32.0",
4
4
  "description": "WIPCO 서버 주도 UI(SDUI) 렌더러 — JSON 페이지 스펙을 React 컴포넌트로 렌더링",
5
5
  "keywords": [
6
6
  "sdui",
@@ -32,6 +32,10 @@
32
32
  "types": "./dist/rich.d.ts",
33
33
  "default": "./dist/rich.js"
34
34
  },
35
+ "./rich/ExcelUploadCard": {
36
+ "types": "./dist/rich/ExcelUploadCard.d.ts",
37
+ "default": "./dist/rich/ExcelUploadCard.js"
38
+ },
35
39
  "./widgets": {
36
40
  "types": "./dist/widgets/index.d.ts",
37
41
  "default": "./dist/widgets/index.js"
@@ -88,6 +92,14 @@
88
92
  "types": "./dist/widgets/LiveClock.d.ts",
89
93
  "default": "./dist/widgets/LiveClock.js"
90
94
  },
95
+ "./widgets/OptionSchemaEditor": {
96
+ "types": "./dist/widgets/OptionSchemaEditor.d.ts",
97
+ "default": "./dist/widgets/OptionSchemaEditor.js"
98
+ },
99
+ "./widgets/OptionValueFields": {
100
+ "types": "./dist/widgets/OptionValueFields.d.ts",
101
+ "default": "./dist/widgets/OptionValueFields.js"
102
+ },
91
103
  "./widgets/OrgChart": {
92
104
  "types": "./dist/widgets/OrgChart.d.ts",
93
105
  "default": "./dist/widgets/OrgChart.js"
@@ -132,6 +144,10 @@
132
144
  "types": "./dist/widgets/StackedMeter.d.ts",
133
145
  "default": "./dist/widgets/StackedMeter.js"
134
146
  },
147
+ "./widgets/StagePeriodEditor": {
148
+ "types": "./dist/widgets/StagePeriodEditor.d.ts",
149
+ "default": "./dist/widgets/StagePeriodEditor.js"
150
+ },
135
151
  "./widgets/Strip": {
136
152
  "types": "./dist/widgets/Strip.d.ts",
137
153
  "default": "./dist/widgets/Strip.js"