@wipco/sdui 1.5.0 → 1.6.1
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/{DatePicker-C_TT_SOw.d.ts → DatePicker-DX9juElE.d.ts} +10 -1
- package/dist/{chunk-7P7N43JV.js → chunk-34BABTH4.js} +2 -2
- package/dist/{chunk-DMLDKW7K.js → chunk-37BNG4DT.js} +1 -1
- package/dist/{chunk-5WW4MBRO.js → chunk-3JTBOABA.js} +6 -2
- package/dist/{chunk-HBIIEYKW.js → chunk-3PCR73OC.js} +4 -4
- package/dist/{chunk-VY7MVBSE.js → chunk-3PT5OBOU.js} +2 -2
- package/dist/{chunk-YVTV4ZV6.js → chunk-4YPPL7JK.js} +1 -1
- package/dist/{chunk-E6ISNQK3.js → chunk-6YBSBC77.js} +31 -8
- package/dist/{chunk-YWUDBLO6.js → chunk-7G6J6QFC.js} +2 -2
- package/dist/{chunk-UV6HHFEW.js → chunk-A57GKV5F.js} +129 -68
- package/dist/{chunk-I45EUZC6.js → chunk-AJ3KDBEE.js} +4 -2
- package/dist/chunk-BITS7UJY.js +333 -0
- package/dist/{chunk-DOL57OOP.js → chunk-BV37UCDF.js} +3 -3
- package/dist/chunk-CSZCWBOE.js +256 -0
- package/dist/{chunk-XGFDY43I.js → chunk-CUFGH3LB.js} +88 -18
- package/dist/{chunk-A6LAIGUS.js → chunk-EGFDELSF.js} +7 -4
- package/dist/{chunk-JIV4YHCZ.js → chunk-EJIWOD7W.js} +1 -1
- package/dist/{chunk-CXW6KT6X.js → chunk-ESAFQXEU.js} +3 -3
- package/dist/{chunk-N5RKM6IC.js → chunk-EUSC5NMZ.js} +4 -4
- package/dist/{chunk-RWSH2MBU.js → chunk-FP32LNFK.js} +73 -19
- package/dist/{chunk-44TDRCKR.js → chunk-GKYUDTMI.js} +5 -5
- package/dist/chunk-GSM664TX.js +38 -0
- package/dist/{chunk-I5SD7XRA.js → chunk-GSXD52XG.js} +3 -3
- package/dist/{chunk-O4IISNE7.js → chunk-IB2ZPUTF.js} +51 -12
- package/dist/{chunk-YOZN35HD.js → chunk-IIRVHSNK.js} +3 -3
- package/dist/{chunk-FNMS7OB7.js → chunk-J7BZF4T4.js} +5 -5
- package/dist/{chunk-KO6OEY3G.js → chunk-JHFA5RDN.js} +3 -13
- package/dist/{chunk-DKVSM5HX.js → chunk-KDKRFWIF.js} +6 -6
- package/dist/chunk-KO3EUNWB.js +380 -0
- package/dist/{chunk-JYAR7D5U.js → chunk-NLSR3JYU.js} +2 -2
- package/dist/{chunk-ZORQPB6B.js → chunk-O4EMQWCV.js} +325 -360
- package/dist/{chunk-2HLXCKK7.js → chunk-OCYJ2ZOV.js} +2 -2
- package/dist/{chunk-OQ52XMGG.js → chunk-OKNF2SBB.js} +4 -4
- package/dist/{chunk-GNA6SX2H.js → chunk-OQ7A3SFM.js} +2 -2
- package/dist/{chunk-A5XQOEVH.js → chunk-PCFH74RD.js} +4 -4
- package/dist/{chunk-BEM2YS7U.js → chunk-SGGIWPP6.js} +3 -3
- package/dist/{chunk-NIJUVTEW.js → chunk-TB7G5DXQ.js} +3 -3
- package/dist/{chunk-GZBY7I4Y.js → chunk-TWUKNUUQ.js} +66 -10
- package/dist/{chunk-WPSK2CB5.js → chunk-UC725BGW.js} +16 -5
- package/dist/{chunk-ZFNFPXPR.js → chunk-US3K6Q5T.js} +2 -2
- package/dist/{chunk-MPT7WJG2.js → chunk-USNPJEXH.js} +5 -5
- package/dist/{chunk-SAPBDJJQ.js → chunk-UZZLMPRW.js} +2 -2
- package/dist/{chunk-Q4SWUINA.js → chunk-VAXRTBJH.js} +1 -1
- package/dist/{chunk-RYBBPFI7.js → chunk-VQKX5PJ4.js} +4 -4
- package/dist/chunk-VR5MFUD2.js +106 -0
- package/dist/{chunk-JZXU22PE.js → chunk-VSNHDHGS.js} +208 -117
- package/dist/{chunk-2YP5N4VV.js → chunk-VZOQRQAR.js} +1 -1
- package/dist/{chunk-AXGF4M57.js → chunk-XAXROQKB.js} +1 -1
- package/dist/{chunk-IZ3JA2BR.js → chunk-XFKNU6QN.js} +3 -3
- package/dist/{chunk-GTGS2QRL.js → chunk-XUVWIRZJ.js} +3 -3
- package/dist/{chunk-RNOUXUBO.js → chunk-YYAGE733.js} +323 -59
- package/dist/index.d.ts +449 -91
- package/dist/index.js +1060 -138
- package/dist/{layout-C3nRXMwb.d.ts → layout-DmRikwZb.d.ts} +5 -4
- package/dist/meta.d.ts +1 -1
- package/dist/meta.js +351 -25
- package/dist/rich/ExcelUploadCard.d.ts +1 -1
- package/dist/rich/ExcelUploadCard.js +5 -4
- package/dist/rich.d.ts +22 -3
- package/dist/rich.js +304 -35
- package/dist/styles.css +119 -4
- package/dist/{types-COjGKgmd.d.ts → types-CMikpoN5.d.ts} +65 -2
- package/dist/widgets/ApprovalLineEditor.d.ts +1 -1
- package/dist/widgets/ApprovalLineEditor.js +9 -8
- package/dist/widgets/ApprovalOverridesEditor.d.ts +1 -1
- package/dist/widgets/ApprovalOverridesEditor.js +11 -10
- package/dist/widgets/ApprovalStepper.d.ts +29 -4
- package/dist/widgets/ApprovalStepper.js +3 -3
- package/dist/widgets/AutocompleteField.d.ts +1 -1
- package/dist/widgets/AutocompleteField.js +9 -8
- package/dist/widgets/ColumnBoard.d.ts +1 -1
- package/dist/widgets/ColumnBoard.js +3 -3
- package/dist/widgets/DiffView.d.ts +1 -1
- package/dist/widgets/DiffView.js +3 -3
- package/dist/widgets/Disclosure.d.ts +1 -1
- package/dist/widgets/Disclosure.js +3 -3
- package/dist/widgets/EventCalendar.d.ts +5 -1
- package/dist/widgets/EventCalendar.js +5 -3
- package/dist/widgets/FileDropzone.d.ts +1 -1
- package/dist/widgets/FileDropzone.js +9 -7
- package/dist/widgets/ImageLightbox.d.ts +1 -1
- package/dist/widgets/ImageLightbox.js +7 -5
- package/dist/widgets/InlineEdit.d.ts +1 -1
- package/dist/widgets/InlineEdit.js +3 -3
- package/dist/widgets/JsonField.d.ts +1 -1
- package/dist/widgets/JsonField.js +3 -3
- package/dist/widgets/LiveClock.d.ts +1 -1
- package/dist/widgets/LiveClock.js +2 -2
- package/dist/widgets/OptionSchemaEditor.d.ts +1 -1
- package/dist/widgets/OptionSchemaEditor.js +4 -4
- package/dist/widgets/OptionValueFields.d.ts +1 -1
- package/dist/widgets/OptionValueFields.js +4 -4
- package/dist/widgets/OrgChart.d.ts +1 -1
- package/dist/widgets/OrgChart.js +4 -4
- package/dist/widgets/OrgChartBoard.d.ts +15 -33
- package/dist/widgets/OrgChartBoard.js +10 -8
- package/dist/widgets/PeriodFilter.d.ts +1 -1
- package/dist/widgets/PeriodFilter.js +6 -5
- package/dist/widgets/PermissionMatrixEditor.d.ts +34 -2
- package/dist/widgets/PermissionMatrixEditor.js +6 -4
- package/dist/widgets/PositionSelect.d.ts +1 -1
- package/dist/widgets/PositionSelect.js +5 -4
- package/dist/widgets/PrintSheet.d.ts +15 -2
- package/dist/widgets/PrintSheet.js +3 -3
- package/dist/widgets/ProfileEditDiffCard.d.ts +1 -1
- package/dist/widgets/ProfileEditDiffCard.js +5 -4
- package/dist/widgets/QRDisplay.d.ts +1 -1
- package/dist/widgets/QRDisplay.js +5 -4
- package/dist/widgets/RankBoard.d.ts +1 -1
- package/dist/widgets/RankBoard.js +8 -6
- package/dist/widgets/RecordSheet.d.ts +1 -1
- package/dist/widgets/RecordSheet.js +2 -2
- package/dist/widgets/RoleMemberPicker.d.ts +1 -1
- package/dist/widgets/RoleMemberPicker.js +6 -5
- package/dist/widgets/SearchableMultiPicker.d.ts +1 -1
- package/dist/widgets/SearchableMultiPicker.js +7 -6
- package/dist/widgets/SecureScreen.d.ts +1 -1
- package/dist/widgets/SecureScreen.js +3 -3
- package/dist/widgets/StackedMeter.d.ts +1 -1
- package/dist/widgets/StackedMeter.js +2 -2
- package/dist/widgets/StagePeriodEditor.d.ts +1 -1
- package/dist/widgets/StagePeriodEditor.js +6 -5
- package/dist/widgets/Strip.d.ts +1 -1
- package/dist/widgets/Strip.js +2 -2
- package/dist/widgets/SummaryTable.d.ts +1 -1
- package/dist/widgets/SummaryTable.js +2 -2
- package/dist/widgets/TagInput.d.ts +1 -1
- package/dist/widgets/TagInput.js +3 -3
- package/dist/widgets/TagMultiSelect.d.ts +1 -1
- package/dist/widgets/TagMultiSelect.js +5 -4
- package/dist/widgets/Timeline.d.ts +1 -1
- package/dist/widgets/Timeline.js +4 -4
- package/dist/widgets/TreePicker.d.ts +1 -1
- package/dist/widgets/TreePicker.js +8 -7
- package/dist/widgets/TreeView.d.ts +17 -3
- package/dist/widgets/TreeView.js +7 -6
- package/dist/widgets/index.d.ts +3 -3
- package/dist/widgets/index.js +84 -83
- package/package.json +1 -1
- package/dist/chunk-LFEJLOFN.js +0 -352
- package/dist/chunk-MMIGOPO5.js +0 -111
- package/dist/chunk-TFGNKFL2.js +0 -39
- package/dist/chunk-XQPTSEJC.js +0 -135
package/dist/styles.css
CHANGED
|
@@ -326,11 +326,20 @@
|
|
|
326
326
|
.wp-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
|
327
327
|
.wp-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
|
|
328
328
|
.wp-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
|
|
329
|
-
|
|
330
|
-
|
|
329
|
+
/* 반응형 경계는 LAYOUT_CSS(layout.ts)·env.ts 와 같은 계약 — mobile ≤767.98 · tablet ≤1023.98.
|
|
330
|
+
`screen and` 는 인쇄 용지 폭이 max-width 에 걸리지 않게 한다. 예전 900/600 은 이 계약 이전 값. */
|
|
331
|
+
/* `.wp-grid--nocollapse`(Grid collapse:false) 는 어느 폭에서도 열을 지킨다 — 접힘 규칙 전부가 비켜선다(LAYOUT_CSS·ERP §1 과 같은 계약). */
|
|
332
|
+
@media screen and (max-width: 1023.98px) {
|
|
333
|
+
.wp-grid--3:where(:not(.wp-grid--nocollapse)), .wp-grid--4:where(:not(.wp-grid--nocollapse)) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
|
331
334
|
}
|
|
332
|
-
@media (max-width:
|
|
333
|
-
.wp-grid--2, .wp-grid--3, .wp-grid--4 { grid-template-columns: minmax(0, 1fr); }
|
|
335
|
+
@media screen and (max-width: 767.98px) {
|
|
336
|
+
.wp-grid--2:where(:not(.wp-grid--nocollapse)), .wp-grid--3:where(:not(.wp-grid--nocollapse)), .wp-grid--4:where(:not(.wp-grid--nocollapse)) { grid-template-columns: minmax(0, 1fr); }
|
|
337
|
+
}
|
|
338
|
+
/* Grid template(.wp-grid--custom)·nocollapse·5/6열·KV 블록·카드 포커스 링은 렌더러가 LAYOUT_CSS 로 들고
|
|
339
|
+
다닌다(SduiRenderer 가 hoist). 여기 사본은 렌더러 없이 컴포넌트를 직접 쓰는 소비자용이다. */
|
|
340
|
+
.wp-grid--custom { grid-template-columns: var(--wp-grid-template); }
|
|
341
|
+
@media screen and (max-width: 767.98px) {
|
|
342
|
+
.wp-grid--custom:where(:not(.wp-grid--nocollapse)) { grid-template-columns: minmax(0, 1fr); }
|
|
334
343
|
}
|
|
335
344
|
.wp-spacer { flex: 1; }
|
|
336
345
|
/*
|
|
@@ -361,6 +370,7 @@
|
|
|
361
370
|
.wp-kv { display: grid; grid-template-columns: minmax(96px, auto) 1fr; gap: 7px var(--wp-space-4); align-items: baseline; }
|
|
362
371
|
.wp-kv__k { font-size: 12px; font-weight: 600; color: var(--wp-text-muted); }
|
|
363
372
|
.wp-kv__v { font-size: 13px; color: var(--wp-text-default); min-width: 0; overflow-wrap: anywhere; }
|
|
373
|
+
.wp-kv > .wp-kv__v--block { grid-column: 1 / -1; text-align: left; white-space: pre-wrap; }
|
|
364
374
|
.wp-kv__tags, .wp-cell-tags { display: inline-flex; flex-wrap: wrap; gap: 4px; vertical-align: middle; }
|
|
365
375
|
|
|
366
376
|
/* ---------- 버튼 ---------- */
|
|
@@ -572,6 +582,9 @@
|
|
|
572
582
|
.wp-card--selected { border-color: var(--wp-navy-600); }
|
|
573
583
|
.wp-card--interactive { cursor: pointer; transition: box-shadow 0.12s, transform 0.12s; }
|
|
574
584
|
.wp-card--interactive:hover { box-shadow: var(--wp-shadow-md); transform: translateY(-1px); }
|
|
585
|
+
.wp-card--interactive[role=button]:focus-visible { outline: none; box-shadow: var(--wp-ring-focus); }
|
|
586
|
+
/* 목록 카드 보기의 강조 카드(SearchResults.selectedIds, 1.6.1) — hover 가 테두리·그림자를 바꿔도 고리를 유지한다. */
|
|
587
|
+
.wp-card.is-selected, .wp-card.is-selected:hover { border-color: var(--wp-navy-600); box-shadow: var(--wp-ring-selected); }
|
|
575
588
|
/* 표지 — 머리 위에 꽉 차게 깔린다. 카드가 overflow를 자르지 않으므로 위 두 모서리는
|
|
576
589
|
여기서 직접 깎는다(카드 곡률에서 테두리 1px을 뺀 값). */
|
|
577
590
|
.wp-card__cover {
|
|
@@ -620,6 +633,9 @@
|
|
|
620
633
|
.wp-badge--danger { background: var(--wp-status-danger-bg); border-color: var(--wp-status-danger-border); color: var(--wp-status-danger-fg); }
|
|
621
634
|
.wp-badge--brand { background: var(--wp-navy-50); border-color: var(--wp-navy-200); color: var(--wp-navy-600); }
|
|
622
635
|
.wp-badge--dot::before { content: ''; width: 5px; height: 5px; border-radius: 50%; background: currentColor; }
|
|
636
|
+
/* 줄바꿈 배지(Badge.wrap, 1.6.1) — 스펙이 style 로 박던 값 그대로. 가로 여백은 크기(md/lg)의 것을 둔다. */
|
|
637
|
+
.wp-badge--wrap { height: auto; min-height: 20px; max-width: 100%; padding-top: 2px; padding-bottom: 2px; white-space: normal; }
|
|
638
|
+
.wp-badge--lg.wp-badge--wrap { min-height: 24px; }
|
|
623
639
|
|
|
624
640
|
.wp-tag {
|
|
625
641
|
display: inline-flex; align-items: center; gap: 5px; height: 22px; padding: 0 8px;
|
|
@@ -711,6 +727,11 @@
|
|
|
711
727
|
.wp-table--dense td { padding: 6px 12px; }
|
|
712
728
|
.wp-table--hover tbody tr:hover { background: var(--wp-surface-hover); }
|
|
713
729
|
.wp-table tbody tr[aria-selected='true'] { background: var(--wp-surface-selected); }
|
|
730
|
+
/* 강조 행(SearchResults.selectedIds, 1.6.1) — 체크 선택과 같은 바탕에 왼쪽 막대를 더해 둘을 가른다.
|
|
731
|
+
강조 행은 aria-selected 가 아니라 aria-current 라 바탕도 클래스로 칠한다.
|
|
732
|
+
tr 에는 그림자가 안정적으로 그려지지 않아 첫 칸 안쪽에 긋는다. */
|
|
733
|
+
.wp-table tbody tr.wp-row--selected { background: var(--wp-surface-selected); }
|
|
734
|
+
.wp-table tbody tr.wp-row--selected > td:first-child { box-shadow: inset 3px 0 0 var(--wp-navy-600); }
|
|
714
735
|
/* 정렬 헤더 — th의 타이포를 그대로 물려받아 버튼처럼 보이지 않게 한다. */
|
|
715
736
|
.wp-table__sort {
|
|
716
737
|
display: inline-flex; align-items: center; gap: 3px;
|
|
@@ -722,6 +743,37 @@
|
|
|
722
743
|
.wp-table__num { text-align: right; font-variant-numeric: tabular-nums; }
|
|
723
744
|
.wp-table__mono { font-family: var(--wp-font-mono); font-size: 12px; }
|
|
724
745
|
.wp-table__strong { font-weight: 600; color: var(--wp-text-strong); }
|
|
746
|
+
/*
|
|
747
|
+
* 좁은 폭의 목록 표(1.6) — ResultTable 이 비가상 표를 .wp-table-scroll 로 감싸고
|
|
748
|
+
* table.wp-table--stackable + td[data-label]·[data-mobile] 을 낸다. 데스크톱에서는 규칙이 없어
|
|
749
|
+
* 예전과 같다(상자가 overflow 가 되면 칸 안의 떠 있는 메뉴가 잘린다 — 넘칠 수 있는 폭에서만 켠다).
|
|
750
|
+
* ERP 는 이 시트를 읽지 않고 responsive.css 에 같은 규칙을 둔다 — 편집기 미리보기를 맞추는 사본이다.
|
|
751
|
+
*/
|
|
752
|
+
@media screen and (max-width: 1023.98px) {
|
|
753
|
+
.wp-table-scroll { overflow-x: auto; max-width: 100%; overscroll-behavior-x: contain; }
|
|
754
|
+
}
|
|
755
|
+
@media screen and (max-width: 767.98px) {
|
|
756
|
+
.wp-table.wp-table--stackable { display: block; }
|
|
757
|
+
.wp-table--stackable thead { display: none; }
|
|
758
|
+
.wp-table--stackable tbody { display: flex; flex-direction: column; gap: 8px; }
|
|
759
|
+
.wp-table--stackable tbody tr { position: relative; display: flex; flex-direction: column; padding: 10px 14px; background: var(--wp-surface-card); border: var(--wp-border-w) solid var(--wp-border-subtle); border-radius: var(--wp-radius-card); }
|
|
760
|
+
.wp-table--stackable.wp-table--hover tbody tr:hover { background: var(--wp-surface-card); }
|
|
761
|
+
.wp-table--stackable tbody tr[aria-selected='true'] { border-color: var(--wp-navy-600); background: var(--wp-surface-selected); }
|
|
762
|
+
/* 행 카드에서는 막대 대신 카드 고리 — 첫 칸은 선택 칸(절대 위치)이거나 머리라 막대가 엉뚱한 데 선다.
|
|
763
|
+
강조 행은 aria-selected 가 없으니(aria-current) 테두리·바탕을 체크 선택 행과 같게 직접 준다. */
|
|
764
|
+
.wp-table--stackable tbody tr.wp-row--selected { border-color: var(--wp-navy-600); background: var(--wp-surface-selected); box-shadow: var(--wp-ring-selected); }
|
|
765
|
+
.wp-table--stackable tbody tr.wp-row--selected > td:first-child { box-shadow: none; }
|
|
766
|
+
/* 위 hover 규칙(행 카드 바탕을 카드색으로, 명시도 0,3,2)이 선택·강조 바탕(0,2,2)을 이기지 않게 — 누르고 있는 동안에도 선택 바탕 */
|
|
767
|
+
.wp-table--stackable.wp-table--hover tbody tr[aria-selected='true']:hover,
|
|
768
|
+
.wp-table--stackable.wp-table--hover tbody tr.wp-row--selected:hover { background: var(--wp-surface-selected); }
|
|
769
|
+
.wp-table--stackable tbody td { display: flex; align-items: center; gap: 12px; min-height: 28px; padding: 3px 0; border: 0; white-space: normal; text-align: left; min-width: 0; }
|
|
770
|
+
.wp-table--stackable tbody td::before { content: attr(data-label); flex: none; width: 6em; font-size: 12px; color: var(--wp-text-subtle); }
|
|
771
|
+
.wp-table--stackable tbody td[data-label='']::before { display: none; }
|
|
772
|
+
.wp-table--stackable tbody td[data-label='']:has(.wp-check) { position: absolute; top: 6px; right: 6px; min-height: 0; padding: 0; }
|
|
773
|
+
.wp-table--stackable tbody td[data-mobile='title'] { order: -1; padding-right: 28px; font-weight: 600; color: var(--wp-text-strong); }
|
|
774
|
+
.wp-table--stackable tbody td[data-mobile='title']::before { display: none; }
|
|
775
|
+
.wp-table--stackable tbody td[data-mobile='hide'] { display: none; }
|
|
776
|
+
}
|
|
725
777
|
|
|
726
778
|
/* ---------- 스탯 ---------- */
|
|
727
779
|
.wp-stat { display: flex; flex-direction: column; gap: 4px; }
|
|
@@ -999,3 +1051,66 @@
|
|
|
999
1051
|
display: flex; align-items: center; justify-content: space-between; gap: var(--wp-space-2);
|
|
1000
1052
|
padding: var(--wp-space-3); border-top: var(--wp-border-w) solid var(--wp-divider);
|
|
1001
1053
|
}
|
|
1054
|
+
/*
|
|
1055
|
+
* 검색 팝오버의 딤(1.6) — Popover 가 열린 패널의 형제로 .wp-popover-backdrop 을 그린다.
|
|
1056
|
+
* 데스크톱에서는 없는 것처럼 두고(바깥 클릭은 문서 pointerdown 이 닫는다), 모바일에서만 화면을 덮는
|
|
1057
|
+
* 딤 + 하단 시트가 된다. 딤을 누르면 Popover 가 닫고 같은 탭의 click 을 삼킨다(밑의 행으로 새지 않게).
|
|
1058
|
+
*/
|
|
1059
|
+
.wp-popover-backdrop { display: none; }
|
|
1060
|
+
@media screen and (max-width: 767.98px) {
|
|
1061
|
+
.wp-popover-backdrop { display: block; position: fixed; inset: 0; z-index: calc(var(--wp-z-dialog) - 1); background: var(--wp-surface-overlay); touch-action: none; }
|
|
1062
|
+
.wp-popover-backdrop + .wp-popover {
|
|
1063
|
+
position: fixed; left: 0; right: 0; bottom: 0; top: auto;
|
|
1064
|
+
width: auto; min-width: 0; max-height: 85dvh;
|
|
1065
|
+
display: flex; flex-direction: column;
|
|
1066
|
+
border-radius: var(--wp-radius-lg) var(--wp-radius-lg) 0 0;
|
|
1067
|
+
z-index: var(--wp-z-dialog);
|
|
1068
|
+
}
|
|
1069
|
+
.wp-popover-backdrop + .wp-popover > .wp-popover__body { flex: 1 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain; }
|
|
1070
|
+
.wp-popover-backdrop + .wp-popover > .wp-popover__foot { flex: none; padding-bottom: calc(var(--wp-space-3) + env(safe-area-inset-bottom)); }
|
|
1071
|
+
}
|
|
1072
|
+
|
|
1073
|
+
/* ---------- 반응형 — ERP responsive.css §1·§2 사본 (편집기 미리보기용) ----------
|
|
1074
|
+
* ERP 는 이 시트를 읽지 않고 app/src/styles/css/responsive.css 를 정본으로 쓴다. 여기 규칙은 그 §1(태블릿+모바일)·
|
|
1075
|
+
* §2(태블릿 터치)를 렌더러 없이 컴포넌트를 쓰는 소비자와 편집기 미리보기에 맞추는 사본이다 — 컨테이너(.wp-content·
|
|
1076
|
+
* #wp-overlay-root) 한정만 뺐다. 브레이크포인트 계약: mobile ≤767.98 · tablet 768–1023.98 · desktop ≥1024, `screen and`.
|
|
1077
|
+
* 목록 표 상자(.wp-table-scroll)·행 카드·팝오버 딤은 위 절에 이미 있다.
|
|
1078
|
+
* 탭 인디케이터는 ERP(::after)와 달리 이 시트가 border-bottom 이라 overflow 상자 안에 들어오도록 margin-bottom 을 0 으로.
|
|
1079
|
+
*/
|
|
1080
|
+
@media screen and (max-width: 1023.98px) {
|
|
1081
|
+
/* Grid 프리셋 3·4열 → 2열 — 통계 카드 줄(StatCard 만 든 그리드)은 원래 열을 지킨다. 정확히 셋일 때만 셋째를 전폭으로.
|
|
1082
|
+
`.wp-grid--nocollapse`(collapse:false) 는 어느 폭에서도 열을 지킨다 — ERP responsive.css §1 과 같은 가드. */
|
|
1083
|
+
.wp-grid.wp-grid--3:not(.wp-grid--nocollapse),
|
|
1084
|
+
.wp-grid.wp-grid--4:not(.wp-grid--nocollapse) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
|
1085
|
+
.wp-grid.wp-grid--3:has(> .wp-card > .wp-card__body > .wp-stat) { grid-template-columns: repeat(3, minmax(0, 1fr)); }
|
|
1086
|
+
.wp-grid.wp-grid--4:has(> .wp-card > .wp-card__body > .wp-stat) { grid-template-columns: repeat(4, minmax(0, 1fr)); }
|
|
1087
|
+
.wp-grid.wp-grid--3:not(.wp-grid--nocollapse):not(:has(> .wp-card > .wp-card__body > .wp-stat)) > :nth-child(3):last-child { grid-column: 1 / -1; }
|
|
1088
|
+
.wp-grid.wp-grid--4 > .wp-card > .wp-card__body > .wp-stat > .wp-stat__value { font-size: var(--wp-size-2xl); }
|
|
1089
|
+
/* PageHead: 제목이 180px 아래로 밀리면 액션이 다음 줄로 */
|
|
1090
|
+
.wp-page-head { flex-wrap: wrap; row-gap: 12px; }
|
|
1091
|
+
.wp-page-head__text { flex: 1 1 180px; }
|
|
1092
|
+
.wp-page-head__actions { flex: 0 1 auto; max-width: 100%; min-width: 0; flex-wrap: wrap; }
|
|
1093
|
+
/* Card 머리: 제목이 160px 아래로 줄면 액션이 다음 줄로 */
|
|
1094
|
+
.wp-card__head { flex-wrap: wrap; row-gap: 8px; }
|
|
1095
|
+
.wp-card__head > :has(> .wp-card__title) { flex: 1 1 160px; }
|
|
1096
|
+
/* Tabs: 넘치면 탭 줄만 가로 스크롤(페이지 전체가 옆으로 밀리던 것). 경계선은 inset 그림자로, 포커스 링은 안쪽으로. */
|
|
1097
|
+
.wp-tabs { overflow-x: auto; overflow-y: hidden; scrollbar-width: none; overscroll-behavior-x: contain; border-bottom: 0; box-shadow: inset 0 -1px 0 var(--wp-border-subtle); }
|
|
1098
|
+
.wp-tabs::-webkit-scrollbar { display: none; }
|
|
1099
|
+
.wp-tab { flex: none; margin-bottom: 0; }
|
|
1100
|
+
.wp-tab:focus-visible { outline: none; box-shadow: inset 0 0 0 2px var(--wp-border-focus); }
|
|
1101
|
+
/* 페이지 범위 "1–10 / 68" 이 좁은 칸에서 네 줄로 꺾이던 것 */
|
|
1102
|
+
.wp-pager .wp-num { white-space: nowrap; }
|
|
1103
|
+
}
|
|
1104
|
+
/* 태블릿 + 터치 — 손가락 기기만. 시각 크기보다 누름 영역이 목적이다. */
|
|
1105
|
+
@media screen and (min-width: 768px) and (max-width: 1023.98px) and (pointer: coarse) {
|
|
1106
|
+
.wp-pager__page { min-width: 36px; height: 36px; }
|
|
1107
|
+
.wp-seg__item { height: 32px; }
|
|
1108
|
+
.wp-table__sort { min-height: 32px; }
|
|
1109
|
+
.wp-iconbtn { min-width: 36px; min-height: 36px; }
|
|
1110
|
+
/* 글자 없는 체크박스(표 선택 칸)는 16px 상자뿐 — 음수 여백으로 배치는 그대로 두고 누를 자리만 넓힌다 */
|
|
1111
|
+
.wp-check:not(:has(.wp-check__text)) { padding: 8px; margin: -8px; }
|
|
1112
|
+
}
|
|
1113
|
+
/* 모바일 행 카드의 빈 칸 — 라벨만 덩그러니 남지 않게 '—'(플레인 Table 은 데스크톱 표기를 바꾸지 않아 CSS 로만) */
|
|
1114
|
+
@media screen and (max-width: 767.98px) {
|
|
1115
|
+
.wp-table--stackable tbody td:empty::after { content: '—'; color: var(--wp-text-subtle); }
|
|
1116
|
+
}
|
|
@@ -95,8 +95,16 @@ interface SduiCalcRef {
|
|
|
95
95
|
* - `join` `sep`(기본 ',')으로 잇는다
|
|
96
96
|
* - `split` `sep`(기본 ',')으로 가른다. `take`를 주면 그 조각 하나(음수는 뒤에서)
|
|
97
97
|
* - `sortBy` `field` 기준 정렬(`desc: true`면 내림차순). 원본은 건드리지 않는다
|
|
98
|
+
* - `map` 객체 배열의 각 행을 `field` 값으로 바꾼다
|
|
98
99
|
*/
|
|
99
|
-
| 'get' | 'pluck' | 'filter' | 'some' | 'every' | 'includes' | 'distinct' | 'except' | 'groupBy' | 'groupCount' | 'entries' | 'fromEntries' | 'length' | 'join' | 'split' | 'sortBy'
|
|
100
|
+
| 'get' | 'pluck' | 'filter' | 'some' | 'every' | 'includes' | 'distinct' | 'except' | 'groupBy' | 'groupCount' | 'entries' | 'fromEntries' | 'length' | 'join' | 'split' | 'sortBy' | 'map'
|
|
101
|
+
/**
|
|
102
|
+
* 서식 — 원시 값을 사람이 읽는 글자로(KST 고정, 브라우저 시간대와 무관).
|
|
103
|
+
* - `formatDate` `[값, 'date'|'datetime'|'time']`(기본 datetime). 빈 값은 '', 못 읽는 글은 원문
|
|
104
|
+
* - `formatNumber` `[값, 소수자리?]` ko-KR 천 단위. 자리를 주면 0~6 으로 고정
|
|
105
|
+
* - `today` `['date'|'datetime'|'time']`(기본 date) 지금의 한국 시각 — 출력일 같은 자리
|
|
106
|
+
*/
|
|
107
|
+
| 'formatDate' | 'formatNumber' | 'today';
|
|
100
108
|
args: SduiPropValue[];
|
|
101
109
|
/** sum/count·목록 연산에서 객체 배열의 필드를 지정 */
|
|
102
110
|
field?: string;
|
|
@@ -305,6 +313,30 @@ type SduiAction = {
|
|
|
305
313
|
pendingKey?: string;
|
|
306
314
|
/** 성공 시 무효화할 조회 prefix — onSuccess의 invalidate 액션 단축 */
|
|
307
315
|
invalidate?: string;
|
|
316
|
+
/**
|
|
317
|
+
* 배열을 주면 **원소마다** 같은 요청을 낸다 — 선택한 N건 삭제가 이것이다.
|
|
318
|
+
* `endpoint`·`body` 안에서 원소는 `$item`(원소 전체 또는 `{"$item":"id"}`), 번호는
|
|
319
|
+
* `$index` 로 읽는다(바깥 ForEach 행보다 이 프레임이 가깝다). 그 둘은 디스패치
|
|
320
|
+
* 시점에도 원본으로 남아 원소마다 풀린다.
|
|
321
|
+
*
|
|
322
|
+
* ```json
|
|
323
|
+
* { "action": "request", "method": "DELETE",
|
|
324
|
+
* "endpoint": { "$calc": { "op": "concat", "args": ["/clients/", { "$item": true }] } },
|
|
325
|
+
* "each": { "$state": "deleteIds" }, "invalidate": "/clients", "pendingKey": "deleting",
|
|
326
|
+
* "onSuccess": [{ "action": "toast", "tone": "success", "title": "삭제되었습니다" },
|
|
327
|
+
* { "action": "close", "key": "deleteOpen" }],
|
|
328
|
+
* "onError": [{ "action": "toast", "tone": "danger",
|
|
329
|
+
* "message": { "$event": "message" } }] }
|
|
330
|
+
* ```
|
|
331
|
+
*
|
|
332
|
+
* - 동시에 3건까지 낸다. 전부 성공하면 `onSuccess` **한 번**(이벤트 값 = 응답 배열,
|
|
333
|
+
* 원소 순서). 하나라도 실패하면 `onError` 한 번 — 이벤트 값은
|
|
334
|
+
* `{ failed, succeeded, total, message, errors[] }` 라 `{"$event":"failed"}` 로 수를
|
|
335
|
+
* 읽는다(`errorKey` 에도 같은 값). 생략하면 'N건 중 M건 실패' 토스트.
|
|
336
|
+
* - `invalidate` 는 성공한 것이 하나라도 있으면 건다 — 서버는 그만큼 바뀌었다.
|
|
337
|
+
* - 빈 배열·배열 아님은 요청도 체인도 없이 끝난다. 버튼은 선택 수로 잠근다.
|
|
338
|
+
*/
|
|
339
|
+
each?: SduiPropValue;
|
|
308
340
|
}
|
|
309
341
|
/** 클라이언트 조회 캐시 무효화 — 어댑터의 invalidate로 위임 */
|
|
310
342
|
| {
|
|
@@ -405,10 +437,41 @@ interface SduiPage {
|
|
|
405
437
|
* title(문서 제목)을 포기하지 않아도 되는 자리다.
|
|
406
438
|
*/
|
|
407
439
|
title?: string;
|
|
440
|
+
/**
|
|
441
|
+
* 레코드 이름을 제목으로 — `title` 대신 **상태에서 푼** 값을 쓴다.
|
|
442
|
+
*
|
|
443
|
+
* 상세 화면의 `title`("장비 상세")은 모든 레코드에서 같아 여러 탭·방문 기록에서 구별이
|
|
444
|
+
* 안 된다. 여기에 `{"$state":"rt.asset.name"}` 이나 `$calc` 를 주면, 값이 비어 있지 않은
|
|
445
|
+
* 문자열(숫자면 문자열로)일 때 자동 페이지 헤더의 제목이 그 값이 되고 호스트에도
|
|
446
|
+
* `adapter.setTitle(제목)` 으로 알린다(문서 <title>·브레드크럼은 호스트 몫). 비어
|
|
447
|
+
* 있으면(조회 전) `title` 로 돌아간다. `title` 은 그대로 둔다 — 호스트가 스펙 JSON 만 보고
|
|
448
|
+
* 메뉴·크럼을 세우는 자리라 문자열이어야 한다.
|
|
449
|
+
*/
|
|
450
|
+
titleFrom?: SduiPropValue;
|
|
408
451
|
subtitle?: string;
|
|
452
|
+
/**
|
|
453
|
+
* 이탈 가드 — 참이면 새로고침·창 닫기(beforeunload)와 앱 안 이동 전에 확인한다.
|
|
454
|
+
*
|
|
455
|
+
* `{"$state":"notifDirty"}` 처럼 상태 식을 준다. 문자열이면 그 문구로 묻고, 그 밖의
|
|
456
|
+
* 참값은 기본 문구다. Form 을 쓰는 화면은 이것 없이 `Form.guard: true` 로 같은 통로를
|
|
457
|
+
* 탄다(작성 중일 때만, 저장 직후 이동은 묻지 않는다). 상태로 입력을 모으는 화면
|
|
458
|
+
* (알림 설정 등)이 이 자리를 쓴다.
|
|
459
|
+
*
|
|
460
|
+
* 앱 안 이동은 두 갈래다: 호스트 어댑터가 `setLeaveGuard` 를 받으면 라우터 차단은
|
|
461
|
+
* 호스트가 하고(셸 메뉴·브라우저 뒤로 가기까지), 안 받으면 렌더러가 자기 `navigate`
|
|
462
|
+
* 액션 앞에서만 확인 창을 띄운다.
|
|
463
|
+
*/
|
|
464
|
+
leaveGuard?: SduiPropValue;
|
|
409
465
|
/** 실시간 채널 구독 — 어댑터의 subscribe로 위임(이벤트 수신 시 조용한 재조회) */
|
|
410
466
|
subscribe?: string[];
|
|
411
|
-
/**
|
|
467
|
+
/**
|
|
468
|
+
* URL 쿼리파라미터와 동기화할 상태 키 — 딥링크/새로고침 보존용.
|
|
469
|
+
*
|
|
470
|
+
* 표기(1.6.1): 문자열은 원문(`?tab=delegations`), JSON 으로 다시 읽으면 다른 값이 되는 문자열
|
|
471
|
+
* (`"123"`·`"true"`·따옴표·괄호로 시작하는 것)과 문자열 아닌 값은 JSON(`?tab=%22123%22`, `?page=2`).
|
|
472
|
+
* 읽기는 JSON 으로 읽히면 그 값, 아니면 원문이라 옛 따옴표 링크(`?tab=%22delegations%22`)도 그대로 산다.
|
|
473
|
+
* 손으로 링크를 만들 때 숫자처럼 생긴 **문자열** 값은 따옴표로 싸야 한다(`?tab=%221%22` — `?tab=1` 은 숫자 1).
|
|
474
|
+
*/
|
|
412
475
|
urlState?: string[];
|
|
413
476
|
/**
|
|
414
477
|
* 페이지가 열릴 때 채울 상태 — `{ "상태키": { endpoint, select? } }`.
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
export { ApprovalLineEditor, stepLabel, stepTypeIcon } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
1
|
+
export { ApprovalLineEditor, stepLabel, stepTypeIcon } from '../chunk-USNPJEXH.js';
|
|
2
|
+
import '../chunk-VAXRTBJH.js';
|
|
3
|
+
import '../chunk-A57GKV5F.js';
|
|
4
|
+
import '../chunk-FP32LNFK.js';
|
|
5
|
+
import '../chunk-BITS7UJY.js';
|
|
5
6
|
import '../chunk-RIZRM7OO.js';
|
|
6
|
-
import '../chunk-
|
|
7
|
-
import '../chunk-
|
|
8
|
-
import '../chunk-
|
|
9
|
-
import '../chunk-
|
|
7
|
+
import '../chunk-JHFA5RDN.js';
|
|
8
|
+
import '../chunk-GSM664TX.js';
|
|
9
|
+
import '../chunk-YYAGE733.js';
|
|
10
|
+
import '../chunk-3JTBOABA.js';
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
export { ApprovalOverridesEditor, facetsFrom } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
6
|
-
import '../chunk-
|
|
1
|
+
export { ApprovalOverridesEditor, facetsFrom } from '../chunk-KDKRFWIF.js';
|
|
2
|
+
import '../chunk-GSXD52XG.js';
|
|
3
|
+
import '../chunk-USNPJEXH.js';
|
|
4
|
+
import '../chunk-VAXRTBJH.js';
|
|
5
|
+
import '../chunk-A57GKV5F.js';
|
|
6
|
+
import '../chunk-FP32LNFK.js';
|
|
7
|
+
import '../chunk-BITS7UJY.js';
|
|
7
8
|
import '../chunk-RIZRM7OO.js';
|
|
8
|
-
import '../chunk-
|
|
9
|
-
import '../chunk-
|
|
10
|
-
import '../chunk-
|
|
11
|
-
import '../chunk-
|
|
9
|
+
import '../chunk-JHFA5RDN.js';
|
|
10
|
+
import '../chunk-GSM664TX.js';
|
|
11
|
+
import '../chunk-YYAGE733.js';
|
|
12
|
+
import '../chunk-3JTBOABA.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { S as SduiBoxProps } from '../layout-
|
|
1
|
+
import { S as SduiBoxProps } from '../layout-DmRikwZb.js';
|
|
2
2
|
import React__default from 'react';
|
|
3
3
|
|
|
4
4
|
interface ApprovalStepperStep {
|
|
@@ -9,7 +9,8 @@ interface ApprovalStepperStep {
|
|
|
9
9
|
* 자기 어휘를 쓴다. 이름(`name`)이 있으면 그쪽이 이긴다.
|
|
10
10
|
*/
|
|
11
11
|
type?: string;
|
|
12
|
-
|
|
12
|
+
/** 단계 상태. 목록에 없는 값은 대기로 그린다. */
|
|
13
|
+
status?: 'pending' | 'current' | 'approved' | 'rejected' | 'skipped' | 'cancelled';
|
|
13
14
|
/** 처리한 결재자 이름(승인/반려된 단계). */
|
|
14
15
|
approver?: string;
|
|
15
16
|
/** 처리 일시(ISO 문자열 권장 — 파싱 실패 시 원문 그대로 표시). */
|
|
@@ -17,13 +18,34 @@ interface ApprovalStepperStep {
|
|
|
17
18
|
/** 이 단계에서 결재할 수 있는 후보자 이름들. */
|
|
18
19
|
candidates?: string[];
|
|
19
20
|
}
|
|
21
|
+
/** 단계가 없는 문서의 결과 — `outcome` 프롭. */
|
|
22
|
+
type ApprovalStepperOutcome = 'approved' | 'pending' | 'rejected' | 'cancelled';
|
|
20
23
|
interface ApprovalStepperProps {
|
|
21
24
|
/** 결재를 올린 사람. 있으면 맨 앞에 신청자 노드를 그린다. */
|
|
22
25
|
requester?: {
|
|
23
26
|
name: string;
|
|
24
27
|
sub?: string;
|
|
25
28
|
};
|
|
26
|
-
|
|
29
|
+
/**
|
|
30
|
+
* 결재 단계. **아직 없으면(null·undefined — 조회 전) 아무것도 그리지 않는다.** 빈 배열(`[]`)은 "단계 없는
|
|
31
|
+
* 문서"라 `outcome`·`decidedBy` 안내를 그린다 — 둘을 가르지 않으면 대기 문서의 단계가 오는 동안
|
|
32
|
+
* '자동 승인되었습니다' 가 스친다. 스펙은 `{"$state":"rt.steps"}` 에 `default: []` 를 두지 않는다.
|
|
33
|
+
*/
|
|
34
|
+
steps?: ApprovalStepperStep[] | null;
|
|
35
|
+
/**
|
|
36
|
+
* 결재 단계 없이 처리된 문서의 처리자. `steps` 가 비어 있을 때만 쓰인다 — 있으면
|
|
37
|
+
* '자동 승인' 대신 이 사람이 처리한 '결재' 노드 하나를 그린다(문서 결과는 `outcome`).
|
|
38
|
+
* 스펙이 처리자로 단계를 합성하던 일을 위젯이 대신한다.
|
|
39
|
+
*/
|
|
40
|
+
decidedBy?: string;
|
|
41
|
+
/** 단계 없는 문서의 처리 일시(ISO 권장). `decidedBy` 노드의 툴팁, 자동 승인 안내의 둘째 줄. */
|
|
42
|
+
decidedAt?: string;
|
|
43
|
+
/**
|
|
44
|
+
* `steps` 가 비어 있을 때 문서의 결과. 기본 'approved' — 백엔드가 단계 없는 결재를 즉시
|
|
45
|
+
* 승인하므로 완료형('자동 승인되었습니다')으로 말한다. 'pending' 은 아직 올리기 전(미리보기)
|
|
46
|
+
* 이라 미래형, 'cancelled'·'rejected' 는 그 상태로 그린다.
|
|
47
|
+
*/
|
|
48
|
+
outcome?: ApprovalStepperOutcome;
|
|
27
49
|
/** 단계 클릭 핸들러 — 첫 인자(step 객체)가 SDUI 이벤트 값으로 저장된다. */
|
|
28
50
|
onStepClick?: (step: ApprovalStepperStep) => void;
|
|
29
51
|
/**
|
|
@@ -35,7 +57,10 @@ interface ApprovalStepperProps {
|
|
|
35
57
|
*/
|
|
36
58
|
typeLabels?: Record<string, string>;
|
|
37
59
|
}
|
|
60
|
+
type StepStatus = NonNullable<ApprovalStepperStep['status']>;
|
|
61
|
+
/** 상태 값을 아는 키로 좁힌다 — 비었거나 모르는 값은 대기. */
|
|
62
|
+
declare function normalizeStepStatus(status: string | undefined | null): StepStatus;
|
|
38
63
|
/** 바깥에서 온 `style`·`className`을 뿌리에 얹어 내보낸다 — 자기 축(폭·여백)이 닿게 하는 통로. */
|
|
39
64
|
declare const ApprovalStepper: React__default.FC<ApprovalStepperProps & SduiBoxProps>;
|
|
40
65
|
|
|
41
|
-
export { ApprovalStepper, type ApprovalStepperProps, type ApprovalStepperStep };
|
|
66
|
+
export { ApprovalStepper, type ApprovalStepperOutcome, type ApprovalStepperProps, type ApprovalStepperStep, normalizeStepStatus };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { ApprovalStepper } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
export { ApprovalStepper, normalizeStepStatus } from '../chunk-CUFGH3LB.js';
|
|
2
|
+
import '../chunk-YYAGE733.js';
|
|
3
|
+
import '../chunk-3JTBOABA.js';
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
export { AutocompleteField, endpointSearchFn, toAutocompleteOptions } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
1
|
+
export { AutocompleteField, endpointSearchFn, toAutocompleteOptions } from '../chunk-J7BZF4T4.js';
|
|
2
|
+
import '../chunk-VAXRTBJH.js';
|
|
3
|
+
import '../chunk-A57GKV5F.js';
|
|
4
|
+
import '../chunk-FP32LNFK.js';
|
|
5
|
+
import '../chunk-BITS7UJY.js';
|
|
5
6
|
import '../chunk-RIZRM7OO.js';
|
|
6
|
-
import '../chunk-
|
|
7
|
-
import '../chunk-
|
|
8
|
-
import '../chunk-
|
|
9
|
-
import '../chunk-
|
|
7
|
+
import '../chunk-JHFA5RDN.js';
|
|
8
|
+
import '../chunk-GSM664TX.js';
|
|
9
|
+
import '../chunk-YYAGE733.js';
|
|
10
|
+
import '../chunk-3JTBOABA.js';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { ColumnBoard } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
export { ColumnBoard } from '../chunk-7G6J6QFC.js';
|
|
2
|
+
import '../chunk-YYAGE733.js';
|
|
3
|
+
import '../chunk-3JTBOABA.js';
|
package/dist/widgets/DiffView.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { DiffView } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
export { DiffView } from '../chunk-NLSR3JYU.js';
|
|
2
|
+
import '../chunk-YYAGE733.js';
|
|
3
|
+
import '../chunk-3JTBOABA.js';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { Disclosure } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
export { Disclosure } from '../chunk-OCYJ2ZOV.js';
|
|
2
|
+
import '../chunk-YYAGE733.js';
|
|
3
|
+
import '../chunk-3JTBOABA.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { S as SduiBoxProps } from '../layout-
|
|
2
|
+
import { S as SduiBoxProps } from '../layout-DmRikwZb.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* EventCalendar — 일정 캘린더 위젯 (월 / 주 / 일 / 일정 뷰).
|
|
@@ -37,6 +37,10 @@ interface EventCalendarViewItem {
|
|
|
37
37
|
}
|
|
38
38
|
interface EventCalendarProps {
|
|
39
39
|
events: EventCalendarEvent[];
|
|
40
|
+
/**
|
|
41
|
+
* 보이는 뷰(controlled). 생략하면 위젯이 스스로 고르고 전환도 기억한다 — 이때 처음 뷰는
|
|
42
|
+
* 데스크톱 '월', 모바일 폭(≤767.98px) '일정'(월 칸이 너무 좁아 제목이 '울…'로 잘린다).
|
|
43
|
+
*/
|
|
40
44
|
view?: EventCalendarView;
|
|
41
45
|
onViewChange?: (view: EventCalendarView) => void;
|
|
42
46
|
/**
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
export { EventCalendar, statusToneOf } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
export { EventCalendar, statusToneOf } from '../chunk-O4EMQWCV.js';
|
|
2
|
+
import '../chunk-RIZRM7OO.js';
|
|
3
|
+
import '../chunk-GSM664TX.js';
|
|
4
|
+
import '../chunk-YYAGE733.js';
|
|
5
|
+
import '../chunk-3JTBOABA.js';
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
export { FileDropzone, unwrapUploaded } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
6
|
-
import '../chunk-
|
|
7
|
-
import '../chunk-
|
|
1
|
+
export { FileDropzone, unwrapUploaded } from '../chunk-EUSC5NMZ.js';
|
|
2
|
+
import '../chunk-3PT5OBOU.js';
|
|
3
|
+
import '../chunk-UZZLMPRW.js';
|
|
4
|
+
import '../chunk-BITS7UJY.js';
|
|
5
|
+
import '../chunk-RIZRM7OO.js';
|
|
6
|
+
import '../chunk-JHFA5RDN.js';
|
|
7
|
+
import '../chunk-GSM664TX.js';
|
|
8
|
+
import '../chunk-YYAGE733.js';
|
|
9
|
+
import '../chunk-3JTBOABA.js';
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
export { ImageLightbox } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
1
|
+
export { ImageLightbox } from '../chunk-3PT5OBOU.js';
|
|
2
|
+
import '../chunk-UZZLMPRW.js';
|
|
3
|
+
import '../chunk-BITS7UJY.js';
|
|
4
|
+
import '../chunk-RIZRM7OO.js';
|
|
5
|
+
import '../chunk-GSM664TX.js';
|
|
6
|
+
import '../chunk-YYAGE733.js';
|
|
7
|
+
import '../chunk-3JTBOABA.js';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { InlineEdit } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
export { InlineEdit } from '../chunk-34BABTH4.js';
|
|
2
|
+
import '../chunk-YYAGE733.js';
|
|
3
|
+
import '../chunk-3JTBOABA.js';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { JsonField } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
export { JsonField } from '../chunk-US3K6Q5T.js';
|
|
2
|
+
import '../chunk-YYAGE733.js';
|
|
3
|
+
import '../chunk-3JTBOABA.js';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { LiveClock } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { LiveClock } from '../chunk-37BNG4DT.js';
|
|
2
|
+
import '../chunk-3JTBOABA.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { OPTION_TYPES, OptionSchemaEditor } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
1
|
+
export { OPTION_TYPES, OptionSchemaEditor } from '../chunk-ESAFQXEU.js';
|
|
2
|
+
import '../chunk-UC725BGW.js';
|
|
3
|
+
import '../chunk-YYAGE733.js';
|
|
4
|
+
import '../chunk-3JTBOABA.js';
|