@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.
Files changed (143) hide show
  1. package/dist/{DatePicker-C_TT_SOw.d.ts → DatePicker-DX9juElE.d.ts} +10 -1
  2. package/dist/{chunk-7P7N43JV.js → chunk-34BABTH4.js} +2 -2
  3. package/dist/{chunk-DMLDKW7K.js → chunk-37BNG4DT.js} +1 -1
  4. package/dist/{chunk-5WW4MBRO.js → chunk-3JTBOABA.js} +6 -2
  5. package/dist/{chunk-HBIIEYKW.js → chunk-3PCR73OC.js} +4 -4
  6. package/dist/{chunk-VY7MVBSE.js → chunk-3PT5OBOU.js} +2 -2
  7. package/dist/{chunk-YVTV4ZV6.js → chunk-4YPPL7JK.js} +1 -1
  8. package/dist/{chunk-E6ISNQK3.js → chunk-6YBSBC77.js} +31 -8
  9. package/dist/{chunk-YWUDBLO6.js → chunk-7G6J6QFC.js} +2 -2
  10. package/dist/{chunk-UV6HHFEW.js → chunk-A57GKV5F.js} +129 -68
  11. package/dist/{chunk-I45EUZC6.js → chunk-AJ3KDBEE.js} +4 -2
  12. package/dist/chunk-BITS7UJY.js +333 -0
  13. package/dist/{chunk-DOL57OOP.js → chunk-BV37UCDF.js} +3 -3
  14. package/dist/chunk-CSZCWBOE.js +256 -0
  15. package/dist/{chunk-XGFDY43I.js → chunk-CUFGH3LB.js} +88 -18
  16. package/dist/{chunk-A6LAIGUS.js → chunk-EGFDELSF.js} +7 -4
  17. package/dist/{chunk-JIV4YHCZ.js → chunk-EJIWOD7W.js} +1 -1
  18. package/dist/{chunk-CXW6KT6X.js → chunk-ESAFQXEU.js} +3 -3
  19. package/dist/{chunk-N5RKM6IC.js → chunk-EUSC5NMZ.js} +4 -4
  20. package/dist/{chunk-RWSH2MBU.js → chunk-FP32LNFK.js} +73 -19
  21. package/dist/{chunk-44TDRCKR.js → chunk-GKYUDTMI.js} +5 -5
  22. package/dist/chunk-GSM664TX.js +38 -0
  23. package/dist/{chunk-I5SD7XRA.js → chunk-GSXD52XG.js} +3 -3
  24. package/dist/{chunk-O4IISNE7.js → chunk-IB2ZPUTF.js} +51 -12
  25. package/dist/{chunk-YOZN35HD.js → chunk-IIRVHSNK.js} +3 -3
  26. package/dist/{chunk-FNMS7OB7.js → chunk-J7BZF4T4.js} +5 -5
  27. package/dist/{chunk-KO6OEY3G.js → chunk-JHFA5RDN.js} +3 -13
  28. package/dist/{chunk-DKVSM5HX.js → chunk-KDKRFWIF.js} +6 -6
  29. package/dist/chunk-KO3EUNWB.js +380 -0
  30. package/dist/{chunk-JYAR7D5U.js → chunk-NLSR3JYU.js} +2 -2
  31. package/dist/{chunk-ZORQPB6B.js → chunk-O4EMQWCV.js} +325 -360
  32. package/dist/{chunk-2HLXCKK7.js → chunk-OCYJ2ZOV.js} +2 -2
  33. package/dist/{chunk-OQ52XMGG.js → chunk-OKNF2SBB.js} +4 -4
  34. package/dist/{chunk-GNA6SX2H.js → chunk-OQ7A3SFM.js} +2 -2
  35. package/dist/{chunk-A5XQOEVH.js → chunk-PCFH74RD.js} +4 -4
  36. package/dist/{chunk-BEM2YS7U.js → chunk-SGGIWPP6.js} +3 -3
  37. package/dist/{chunk-NIJUVTEW.js → chunk-TB7G5DXQ.js} +3 -3
  38. package/dist/{chunk-GZBY7I4Y.js → chunk-TWUKNUUQ.js} +66 -10
  39. package/dist/{chunk-WPSK2CB5.js → chunk-UC725BGW.js} +16 -5
  40. package/dist/{chunk-ZFNFPXPR.js → chunk-US3K6Q5T.js} +2 -2
  41. package/dist/{chunk-MPT7WJG2.js → chunk-USNPJEXH.js} +5 -5
  42. package/dist/{chunk-SAPBDJJQ.js → chunk-UZZLMPRW.js} +2 -2
  43. package/dist/{chunk-Q4SWUINA.js → chunk-VAXRTBJH.js} +1 -1
  44. package/dist/{chunk-RYBBPFI7.js → chunk-VQKX5PJ4.js} +4 -4
  45. package/dist/chunk-VR5MFUD2.js +106 -0
  46. package/dist/{chunk-JZXU22PE.js → chunk-VSNHDHGS.js} +208 -117
  47. package/dist/{chunk-2YP5N4VV.js → chunk-VZOQRQAR.js} +1 -1
  48. package/dist/{chunk-AXGF4M57.js → chunk-XAXROQKB.js} +1 -1
  49. package/dist/{chunk-IZ3JA2BR.js → chunk-XFKNU6QN.js} +3 -3
  50. package/dist/{chunk-GTGS2QRL.js → chunk-XUVWIRZJ.js} +3 -3
  51. package/dist/{chunk-RNOUXUBO.js → chunk-YYAGE733.js} +323 -59
  52. package/dist/index.d.ts +449 -91
  53. package/dist/index.js +1060 -138
  54. package/dist/{layout-C3nRXMwb.d.ts → layout-DmRikwZb.d.ts} +5 -4
  55. package/dist/meta.d.ts +1 -1
  56. package/dist/meta.js +351 -25
  57. package/dist/rich/ExcelUploadCard.d.ts +1 -1
  58. package/dist/rich/ExcelUploadCard.js +5 -4
  59. package/dist/rich.d.ts +22 -3
  60. package/dist/rich.js +304 -35
  61. package/dist/styles.css +119 -4
  62. package/dist/{types-COjGKgmd.d.ts → types-CMikpoN5.d.ts} +65 -2
  63. package/dist/widgets/ApprovalLineEditor.d.ts +1 -1
  64. package/dist/widgets/ApprovalLineEditor.js +9 -8
  65. package/dist/widgets/ApprovalOverridesEditor.d.ts +1 -1
  66. package/dist/widgets/ApprovalOverridesEditor.js +11 -10
  67. package/dist/widgets/ApprovalStepper.d.ts +29 -4
  68. package/dist/widgets/ApprovalStepper.js +3 -3
  69. package/dist/widgets/AutocompleteField.d.ts +1 -1
  70. package/dist/widgets/AutocompleteField.js +9 -8
  71. package/dist/widgets/ColumnBoard.d.ts +1 -1
  72. package/dist/widgets/ColumnBoard.js +3 -3
  73. package/dist/widgets/DiffView.d.ts +1 -1
  74. package/dist/widgets/DiffView.js +3 -3
  75. package/dist/widgets/Disclosure.d.ts +1 -1
  76. package/dist/widgets/Disclosure.js +3 -3
  77. package/dist/widgets/EventCalendar.d.ts +5 -1
  78. package/dist/widgets/EventCalendar.js +5 -3
  79. package/dist/widgets/FileDropzone.d.ts +1 -1
  80. package/dist/widgets/FileDropzone.js +9 -7
  81. package/dist/widgets/ImageLightbox.d.ts +1 -1
  82. package/dist/widgets/ImageLightbox.js +7 -5
  83. package/dist/widgets/InlineEdit.d.ts +1 -1
  84. package/dist/widgets/InlineEdit.js +3 -3
  85. package/dist/widgets/JsonField.d.ts +1 -1
  86. package/dist/widgets/JsonField.js +3 -3
  87. package/dist/widgets/LiveClock.d.ts +1 -1
  88. package/dist/widgets/LiveClock.js +2 -2
  89. package/dist/widgets/OptionSchemaEditor.d.ts +1 -1
  90. package/dist/widgets/OptionSchemaEditor.js +4 -4
  91. package/dist/widgets/OptionValueFields.d.ts +1 -1
  92. package/dist/widgets/OptionValueFields.js +4 -4
  93. package/dist/widgets/OrgChart.d.ts +1 -1
  94. package/dist/widgets/OrgChart.js +4 -4
  95. package/dist/widgets/OrgChartBoard.d.ts +15 -33
  96. package/dist/widgets/OrgChartBoard.js +10 -8
  97. package/dist/widgets/PeriodFilter.d.ts +1 -1
  98. package/dist/widgets/PeriodFilter.js +6 -5
  99. package/dist/widgets/PermissionMatrixEditor.d.ts +34 -2
  100. package/dist/widgets/PermissionMatrixEditor.js +6 -4
  101. package/dist/widgets/PositionSelect.d.ts +1 -1
  102. package/dist/widgets/PositionSelect.js +5 -4
  103. package/dist/widgets/PrintSheet.d.ts +15 -2
  104. package/dist/widgets/PrintSheet.js +3 -3
  105. package/dist/widgets/ProfileEditDiffCard.d.ts +1 -1
  106. package/dist/widgets/ProfileEditDiffCard.js +5 -4
  107. package/dist/widgets/QRDisplay.d.ts +1 -1
  108. package/dist/widgets/QRDisplay.js +5 -4
  109. package/dist/widgets/RankBoard.d.ts +1 -1
  110. package/dist/widgets/RankBoard.js +8 -6
  111. package/dist/widgets/RecordSheet.d.ts +1 -1
  112. package/dist/widgets/RecordSheet.js +2 -2
  113. package/dist/widgets/RoleMemberPicker.d.ts +1 -1
  114. package/dist/widgets/RoleMemberPicker.js +6 -5
  115. package/dist/widgets/SearchableMultiPicker.d.ts +1 -1
  116. package/dist/widgets/SearchableMultiPicker.js +7 -6
  117. package/dist/widgets/SecureScreen.d.ts +1 -1
  118. package/dist/widgets/SecureScreen.js +3 -3
  119. package/dist/widgets/StackedMeter.d.ts +1 -1
  120. package/dist/widgets/StackedMeter.js +2 -2
  121. package/dist/widgets/StagePeriodEditor.d.ts +1 -1
  122. package/dist/widgets/StagePeriodEditor.js +6 -5
  123. package/dist/widgets/Strip.d.ts +1 -1
  124. package/dist/widgets/Strip.js +2 -2
  125. package/dist/widgets/SummaryTable.d.ts +1 -1
  126. package/dist/widgets/SummaryTable.js +2 -2
  127. package/dist/widgets/TagInput.d.ts +1 -1
  128. package/dist/widgets/TagInput.js +3 -3
  129. package/dist/widgets/TagMultiSelect.d.ts +1 -1
  130. package/dist/widgets/TagMultiSelect.js +5 -4
  131. package/dist/widgets/Timeline.d.ts +1 -1
  132. package/dist/widgets/Timeline.js +4 -4
  133. package/dist/widgets/TreePicker.d.ts +1 -1
  134. package/dist/widgets/TreePicker.js +8 -7
  135. package/dist/widgets/TreeView.d.ts +17 -3
  136. package/dist/widgets/TreeView.js +7 -6
  137. package/dist/widgets/index.d.ts +3 -3
  138. package/dist/widgets/index.js +84 -83
  139. package/package.json +1 -1
  140. package/dist/chunk-LFEJLOFN.js +0 -352
  141. package/dist/chunk-MMIGOPO5.js +0 -111
  142. package/dist/chunk-TFGNKFL2.js +0 -39
  143. package/dist/chunk-XQPTSEJC.js +0 -135
@@ -37,7 +37,7 @@ export { PositionSelect } from './PositionSelect.js';
37
37
  import { PeriodFilterProps } from './PeriodFilter.js';
38
38
  export { Period, PeriodFilter, PeriodMode, PeriodModeItem } from './PeriodFilter.js';
39
39
  import { PermissionMatrixEditorProps } from './PermissionMatrixEditor.js';
40
- export { PermissionMatrixEditor } from './PermissionMatrixEditor.js';
40
+ export { PermissionMatrixEditor, stickyInsetOf } from './PermissionMatrixEditor.js';
41
41
  import { OrgChartBoardProps } from './OrgChartBoard.js';
42
42
  export { OrgChartBoard } from './OrgChartBoard.js';
43
43
  import { OrgChartProps } from './OrgChart.js';
@@ -63,11 +63,11 @@ export { DiffField, DiffList, DiffView } from './DiffView.js';
63
63
  import { ColumnBoardProps } from './ColumnBoard.js';
64
64
  export { ColumnBoard, ColumnBoardColumn, ColumnBoardItem, ColumnBoardTone } from './ColumnBoard.js';
65
65
  import { ApprovalStepperProps } from './ApprovalStepper.js';
66
- export { ApprovalStepper, ApprovalStepperStep } from './ApprovalStepper.js';
66
+ export { ApprovalStepper, ApprovalStepperOutcome, ApprovalStepperStep, normalizeStepStatus } from './ApprovalStepper.js';
67
67
  import { ApprovalOverridesEditorProps } from './ApprovalOverridesEditor.js';
68
68
  export { ApprovalLineOverride, ApprovalOverridesEditor } from './ApprovalOverridesEditor.js';
69
69
  import * as React from 'react';
70
- import { S as SduiBoxProps } from '../layout-C3nRXMwb.js';
70
+ import { S as SduiBoxProps } from '../layout-DmRikwZb.js';
71
71
  import { ApprovalLineEditorProps } from './ApprovalLineEditor.js';
72
72
  export { ApprovalLineEditor, ApprovalLineStep, CustomApprover } from './ApprovalLineEditor.js';
73
73
  export { AutocompleteField, AutocompleteFieldProps, AutocompleteOption, AutocompleteSearchFn, AutocompleteSearchResult, endpointSearchFn, toAutocompleteOptions } from './AutocompleteField.js';
@@ -1,88 +1,89 @@
1
- import { TreePicker } from '../chunk-OQ52XMGG.js';
2
- export { TreePicker } from '../chunk-OQ52XMGG.js';
3
- import { TreeView } from '../chunk-GZBY7I4Y.js';
4
- export { TreeView, buildTreeNodes } from '../chunk-GZBY7I4Y.js';
5
- import { SecureScreen } from '../chunk-I45EUZC6.js';
6
- export { SecureScreen } from '../chunk-I45EUZC6.js';
7
- import { StackedMeter } from '../chunk-JIV4YHCZ.js';
8
- export { StackedMeter } from '../chunk-JIV4YHCZ.js';
9
- import { StagePeriodEditor } from '../chunk-NIJUVTEW.js';
10
- export { StagePeriodEditor } from '../chunk-NIJUVTEW.js';
11
- import { Strip } from '../chunk-AXGF4M57.js';
12
- export { Strip } from '../chunk-AXGF4M57.js';
13
- import { SummaryTable } from '../chunk-2YP5N4VV.js';
14
- export { SummaryTable } from '../chunk-2YP5N4VV.js';
15
- import { TagInput } from '../chunk-GNA6SX2H.js';
16
- export { TagInput, foldSuggestions, normalizeKeyword, normalizeKeywords, splitKeywordText } from '../chunk-GNA6SX2H.js';
17
- import { Timeline } from '../chunk-GTGS2QRL.js';
18
- export { Timeline } from '../chunk-GTGS2QRL.js';
19
- import { PositionSelect } from '../chunk-DOL57OOP.js';
20
- export { PositionSelect } from '../chunk-DOL57OOP.js';
21
- import { PrintSheet } from '../chunk-E6ISNQK3.js';
22
- export { PrintSheet } from '../chunk-E6ISNQK3.js';
23
- import { QRDisplay } from '../chunk-IZ3JA2BR.js';
24
- export { QRDisplay } from '../chunk-IZ3JA2BR.js';
25
- import { ProfileEditDiffCard } from '../chunk-YOZN35HD.js';
26
- export { ProfileEditDiffCard } from '../chunk-YOZN35HD.js';
27
- import { RankBoard } from '../chunk-RYBBPFI7.js';
28
- export { RankBoard } from '../chunk-RYBBPFI7.js';
29
- import { RecordSheet } from '../chunk-O4IISNE7.js';
30
- export { RecordSheet } from '../chunk-O4IISNE7.js';
31
- import { RoleMemberPicker } from '../chunk-A5XQOEVH.js';
32
- export { RoleMemberPicker } from '../chunk-A5XQOEVH.js';
33
- import { SearchableMultiPicker } from '../chunk-HBIIEYKW.js';
34
- export { SearchableMultiPicker } from '../chunk-HBIIEYKW.js';
35
- import { JsonField } from '../chunk-ZFNFPXPR.js';
36
- export { JsonField } from '../chunk-ZFNFPXPR.js';
37
- import { LiveClock } from '../chunk-DMLDKW7K.js';
38
- export { LiveClock } from '../chunk-DMLDKW7K.js';
39
- import { OptionSchemaEditor } from '../chunk-CXW6KT6X.js';
40
- export { OPTION_TYPES, OptionSchemaEditor } from '../chunk-CXW6KT6X.js';
41
- import { OptionValueFields } from '../chunk-BEM2YS7U.js';
42
- export { OptionValueFields } from '../chunk-BEM2YS7U.js';
43
- import { OrgChart } from '../chunk-A6LAIGUS.js';
44
- export { OrgChart } from '../chunk-A6LAIGUS.js';
45
- import { OrgChartBoard } from '../chunk-JZXU22PE.js';
46
- export { OrgChartBoard } from '../chunk-JZXU22PE.js';
1
+ import { TreePicker } from '../chunk-OKNF2SBB.js';
2
+ export { TreePicker } from '../chunk-OKNF2SBB.js';
3
+ import { TreeView } from '../chunk-TWUKNUUQ.js';
4
+ export { TreeView, buildTreeNodes } from '../chunk-TWUKNUUQ.js';
5
+ import { SecureScreen } from '../chunk-AJ3KDBEE.js';
6
+ export { SecureScreen } from '../chunk-AJ3KDBEE.js';
7
+ import { StackedMeter } from '../chunk-EJIWOD7W.js';
8
+ export { StackedMeter } from '../chunk-EJIWOD7W.js';
9
+ import { StagePeriodEditor } from '../chunk-TB7G5DXQ.js';
10
+ export { StagePeriodEditor } from '../chunk-TB7G5DXQ.js';
11
+ import { Strip } from '../chunk-XAXROQKB.js';
12
+ export { Strip } from '../chunk-XAXROQKB.js';
13
+ import { SummaryTable } from '../chunk-VZOQRQAR.js';
14
+ export { SummaryTable } from '../chunk-VZOQRQAR.js';
15
+ import { TagInput } from '../chunk-OQ7A3SFM.js';
16
+ export { TagInput, foldSuggestions, normalizeKeyword, normalizeKeywords, splitKeywordText } from '../chunk-OQ7A3SFM.js';
17
+ import { Timeline } from '../chunk-XUVWIRZJ.js';
18
+ export { Timeline } from '../chunk-XUVWIRZJ.js';
19
+ import { PositionSelect } from '../chunk-BV37UCDF.js';
20
+ export { PositionSelect } from '../chunk-BV37UCDF.js';
21
+ import { PrintSheet } from '../chunk-6YBSBC77.js';
22
+ export { PrintSheet } from '../chunk-6YBSBC77.js';
23
+ import { QRDisplay } from '../chunk-XFKNU6QN.js';
24
+ export { QRDisplay } from '../chunk-XFKNU6QN.js';
25
+ import { ProfileEditDiffCard } from '../chunk-IIRVHSNK.js';
26
+ export { ProfileEditDiffCard } from '../chunk-IIRVHSNK.js';
27
+ import { RankBoard } from '../chunk-VQKX5PJ4.js';
28
+ export { RankBoard } from '../chunk-VQKX5PJ4.js';
29
+ import { RecordSheet } from '../chunk-IB2ZPUTF.js';
30
+ export { RecordSheet } from '../chunk-IB2ZPUTF.js';
31
+ import { RoleMemberPicker } from '../chunk-PCFH74RD.js';
32
+ export { RoleMemberPicker } from '../chunk-PCFH74RD.js';
33
+ import { SearchableMultiPicker } from '../chunk-3PCR73OC.js';
34
+ export { SearchableMultiPicker } from '../chunk-3PCR73OC.js';
35
+ import { JsonField } from '../chunk-US3K6Q5T.js';
36
+ export { JsonField } from '../chunk-US3K6Q5T.js';
37
+ import { LiveClock } from '../chunk-37BNG4DT.js';
38
+ export { LiveClock } from '../chunk-37BNG4DT.js';
39
+ import { OptionSchemaEditor } from '../chunk-ESAFQXEU.js';
40
+ export { OPTION_TYPES, OptionSchemaEditor } from '../chunk-ESAFQXEU.js';
41
+ import { OptionValueFields } from '../chunk-SGGIWPP6.js';
42
+ export { OptionValueFields } from '../chunk-SGGIWPP6.js';
43
+ import { OrgChart } from '../chunk-EGFDELSF.js';
44
+ export { OrgChart } from '../chunk-EGFDELSF.js';
45
+ import { OrgChartBoard } from '../chunk-VSNHDHGS.js';
46
+ export { OrgChartBoard } from '../chunk-VSNHDHGS.js';
47
47
  import '../chunk-XRHR452N.js';
48
- import '../chunk-MMIGOPO5.js';
49
- import { PermissionMatrixEditor } from '../chunk-LFEJLOFN.js';
50
- export { PermissionMatrixEditor } from '../chunk-LFEJLOFN.js';
51
- import { PeriodFilter } from '../chunk-44TDRCKR.js';
52
- export { PeriodFilter } from '../chunk-44TDRCKR.js';
53
- export { AutocompleteField, endpointSearchFn, toAutocompleteOptions } from '../chunk-FNMS7OB7.js';
54
- import { ColumnBoard } from '../chunk-YWUDBLO6.js';
55
- export { ColumnBoard } from '../chunk-YWUDBLO6.js';
56
- import { DiffView } from '../chunk-JYAR7D5U.js';
57
- export { DiffView } from '../chunk-JYAR7D5U.js';
58
- import { Disclosure } from '../chunk-2HLXCKK7.js';
59
- export { Disclosure } from '../chunk-2HLXCKK7.js';
60
- import { EventCalendar } from '../chunk-ZORQPB6B.js';
61
- export { EventCalendar, statusToneOf } from '../chunk-ZORQPB6B.js';
62
- export { FileDropzone, unwrapUploaded } from '../chunk-N5RKM6IC.js';
63
- import { ImageLightbox } from '../chunk-VY7MVBSE.js';
64
- export { ImageLightbox } from '../chunk-VY7MVBSE.js';
65
- import { InlineEdit } from '../chunk-7P7N43JV.js';
66
- export { InlineEdit } from '../chunk-7P7N43JV.js';
67
- import '../chunk-TFGNKFL2.js';
68
- import '../chunk-WPSK2CB5.js';
69
- import '../chunk-SAPBDJJQ.js';
70
- import { ApprovalOverridesEditor } from '../chunk-DKVSM5HX.js';
71
- export { ApprovalOverridesEditor } from '../chunk-DKVSM5HX.js';
72
- import { TagMultiSelect } from '../chunk-I5SD7XRA.js';
73
- export { TagMultiSelect, pickSeedValues } from '../chunk-I5SD7XRA.js';
74
- import { ApprovalLineEditor } from '../chunk-MPT7WJG2.js';
75
- export { ApprovalLineEditor } from '../chunk-MPT7WJG2.js';
76
- import '../chunk-Q4SWUINA.js';
77
- import '../chunk-UV6HHFEW.js';
78
- import '../chunk-RWSH2MBU.js';
48
+ import '../chunk-CSZCWBOE.js';
49
+ import { PermissionMatrixEditor } from '../chunk-KO3EUNWB.js';
50
+ export { PermissionMatrixEditor, stickyInsetOf } from '../chunk-KO3EUNWB.js';
51
+ import { PeriodFilter } from '../chunk-GKYUDTMI.js';
52
+ export { PeriodFilter } from '../chunk-GKYUDTMI.js';
53
+ export { AutocompleteField, endpointSearchFn, toAutocompleteOptions } from '../chunk-J7BZF4T4.js';
54
+ import { ColumnBoard } from '../chunk-7G6J6QFC.js';
55
+ export { ColumnBoard } from '../chunk-7G6J6QFC.js';
56
+ import { DiffView } from '../chunk-NLSR3JYU.js';
57
+ export { DiffView } from '../chunk-NLSR3JYU.js';
58
+ import { Disclosure } from '../chunk-OCYJ2ZOV.js';
59
+ export { Disclosure } from '../chunk-OCYJ2ZOV.js';
60
+ import { EventCalendar } from '../chunk-O4EMQWCV.js';
61
+ export { EventCalendar, statusToneOf } from '../chunk-O4EMQWCV.js';
62
+ export { FileDropzone, unwrapUploaded } from '../chunk-EUSC5NMZ.js';
63
+ import { ImageLightbox } from '../chunk-3PT5OBOU.js';
64
+ export { ImageLightbox } from '../chunk-3PT5OBOU.js';
65
+ import { InlineEdit } from '../chunk-34BABTH4.js';
66
+ export { InlineEdit } from '../chunk-34BABTH4.js';
67
+ import '../chunk-VR5MFUD2.js';
68
+ import '../chunk-UC725BGW.js';
69
+ import '../chunk-UZZLMPRW.js';
70
+ import { ApprovalOverridesEditor } from '../chunk-KDKRFWIF.js';
71
+ export { ApprovalOverridesEditor } from '../chunk-KDKRFWIF.js';
72
+ import { TagMultiSelect } from '../chunk-GSXD52XG.js';
73
+ export { TagMultiSelect, pickSeedValues } from '../chunk-GSXD52XG.js';
74
+ import { ApprovalLineEditor } from '../chunk-USNPJEXH.js';
75
+ export { ApprovalLineEditor } from '../chunk-USNPJEXH.js';
76
+ import '../chunk-VAXRTBJH.js';
77
+ import '../chunk-A57GKV5F.js';
78
+ import '../chunk-FP32LNFK.js';
79
+ import '../chunk-BITS7UJY.js';
79
80
  import '../chunk-RIZRM7OO.js';
80
- import '../chunk-XQPTSEJC.js';
81
- import '../chunk-KO6OEY3G.js';
82
- import { ApprovalStepper } from '../chunk-XGFDY43I.js';
83
- export { ApprovalStepper } from '../chunk-XGFDY43I.js';
84
- import '../chunk-RNOUXUBO.js';
85
- import '../chunk-5WW4MBRO.js';
81
+ import '../chunk-JHFA5RDN.js';
82
+ import '../chunk-GSM664TX.js';
83
+ import { ApprovalStepper } from '../chunk-CUFGH3LB.js';
84
+ export { ApprovalStepper, normalizeStepStatus } from '../chunk-CUFGH3LB.js';
85
+ import '../chunk-YYAGE733.js';
86
+ import '../chunk-3JTBOABA.js';
86
87
 
87
88
  // src/widgets/index.ts
88
89
  var widgetComponents = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipco/sdui",
3
- "version": "1.5.0",
3
+ "version": "1.6.1",
4
4
  "description": "WIPCO 서버 주도 UI(SDUI) 렌더러 — JSON 페이지 스펙을 React 컴포넌트로 렌더링",
5
5
  "keywords": [
6
6
  "sdui",
@@ -1,352 +0,0 @@
1
- import { useSduiAdapter, hostFetchOf, defaultAdapter } from './chunk-KO6OEY3G.js';
2
- import { Icon, Badge, Checkbox, Select, Button } from './chunk-RNOUXUBO.js';
3
- import { boxed } from './chunk-5WW4MBRO.js';
4
- import { useRef, useEffect, useMemo, useState } from 'react';
5
- import { jsx, jsxs } from 'react/jsx-runtime';
6
-
7
- var OPERATIONS = [
8
- { key: "read", label: "\uC870\uD68C" },
9
- { key: "create", label: "\uC0DD\uC131" },
10
- { key: "update", label: "\uC218\uC815" },
11
- { key: "delete", label: "\uC0AD\uC81C" }
12
- ];
13
- var SCOPE_OPTIONS = [
14
- { value: "team", label: "\uD300" },
15
- { value: "headquarter", label: "\uBCF8\uBD80" },
16
- { value: "all", label: "\uC804\uCCB4" }
17
- ];
18
- var CATEGORY_LABELS = {
19
- fi: "\uC7AC\uBB34",
20
- asset: "\uC790\uC0B0",
21
- hr: "\uC778\uC0AC",
22
- core: "\uACF5\uD1B5",
23
- rbac: "\uAD8C\uD55C"
24
- };
25
- var CATEGORY_ORDER = ["fi", "asset", "hr", "core", "rbac"];
26
- var entityOf = (code) => {
27
- const i = code.lastIndexOf(".");
28
- return i > 0 ? code.slice(0, i) : code;
29
- };
30
- var operationOf = (code) => {
31
- const i = code.lastIndexOf(".");
32
- const op = i > 0 ? code.slice(i + 1) : "";
33
- return OPERATIONS.some((o) => o.key === op) ? op : null;
34
- };
35
- function groupCatalog(catalog, categoryLabels, categoryOrder) {
36
- const categories = /* @__PURE__ */ new Map();
37
- for (const entry of catalog) {
38
- if (!entry || typeof entry.code !== "string") continue;
39
- const category = entry.category?.trim() || "\uAE30\uD0C0";
40
- const entity = entityOf(entry.code);
41
- const byEntity = categories.get(category) ?? /* @__PURE__ */ new Map();
42
- categories.set(category, byEntity);
43
- const row = byEntity.get(entity) ?? { entity, label: "", cells: {}, extras: [] };
44
- byEntity.set(entity, row);
45
- const op = operationOf(entry.code);
46
- if (op) {
47
- row.cells[op] = entry;
48
- if (!row.label) row.label = entry.name.replace(/\s*(조회|생성|수정|삭제)\s*$/, "") || entity;
49
- } else {
50
- row.extras.push(entry);
51
- if (!row.label) row.label = entry.name;
52
- }
53
- }
54
- const order = (c) => {
55
- const i = categoryOrder.indexOf(c);
56
- return i < 0 ? categoryOrder.length : i;
57
- };
58
- return [...categories.entries()].sort((a, b) => order(a[0]) - order(b[0]) || a[0].localeCompare(b[0])).map(([category, byEntity]) => ({
59
- category,
60
- label: categoryLabels[category] ?? category,
61
- rows: [...byEntity.values()].sort((a, b) => a.entity.localeCompare(b.entity))
62
- }));
63
- }
64
- function PermissionMatrixEditorImpl({
65
- permissions,
66
- value,
67
- onChange,
68
- sourceEndpoint,
69
- disabled = false,
70
- scopeOptions = SCOPE_OPTIONS,
71
- defaultScope = "all",
72
- categoryLabels = CATEGORY_LABELS,
73
- categoryOrder = CATEGORY_ORDER,
74
- emptyText = "\uAD8C\uD55C \uCE74\uD0C8\uB85C\uADF8\uAC00 \uBE44\uC5B4 \uC788\uC2B5\uB2C8\uB2E4 \u2014 \uD398\uC774\uC9C0\uC758 data \uC120\uC5B8(/permissions?limit=1000)\uC744 \uD655\uC778\uD558\uC138\uC694."
75
- }) {
76
- const adapter = useSduiAdapter();
77
- const api = hostFetchOf(adapter) ?? defaultAdapter.fetch;
78
- const onChangeRef = useRef(onChange);
79
- onChangeRef.current = onChange;
80
- const seededFor = useRef(null);
81
- useEffect(() => {
82
- if (!sourceEndpoint || seededFor.current === sourceEndpoint) return;
83
- seededFor.current = sourceEndpoint;
84
- api(sourceEndpoint, { method: "GET" }).then((response) => {
85
- if (seededFor.current !== sourceEndpoint) return;
86
- const body = response;
87
- const rows = Array.isArray(body?.permissions) ? body.permissions : [];
88
- onChangeRef.current?.(
89
- rows.flatMap((row) => {
90
- if (typeof row !== "object" || row === null) return [];
91
- const { code, scope } = row;
92
- if (typeof code !== "string" || !code) return [];
93
- return [{ code, scope: typeof scope === "string" ? scope : defaultScope }];
94
- })
95
- );
96
- }).catch(() => {
97
- });
98
- }, [sourceEndpoint, defaultScope]);
99
- const grants = useMemo(() => Array.isArray(value) ? value : [], [value]);
100
- const catalog = useMemo(
101
- () => Array.isArray(permissions) ? permissions : [],
102
- [permissions]
103
- );
104
- const labelsKey = JSON.stringify(categoryLabels);
105
- const orderKey = JSON.stringify(categoryOrder);
106
- const groups = useMemo(
107
- () => groupCatalog(catalog, categoryLabels, categoryOrder),
108
- [catalog, labelsKey, orderKey]
109
- );
110
- const granted = useMemo(() => new Set(grants.map((g) => g.code)), [grants]);
111
- const scopeOf = useMemo(() => {
112
- const map = /* @__PURE__ */ new Map();
113
- for (const g of grants) {
114
- const e = entityOf(g.code);
115
- if (!map.has(e) && g.scope) map.set(e, g.scope);
116
- }
117
- return map;
118
- }, [grants]);
119
- const [closed, setClosed] = useState(/* @__PURE__ */ new Set());
120
- const toggleCategory = (c) => setClosed((prev) => {
121
- const next = new Set(prev);
122
- if (next.has(c)) next.delete(c);
123
- else next.add(c);
124
- return next;
125
- });
126
- const emit = (nextGranted, nextScopes) => {
127
- onChange?.(
128
- [...nextGranted].sort().map((code) => ({
129
- code,
130
- scope: nextScopes.get(entityOf(code)) ?? defaultScope
131
- }))
132
- );
133
- };
134
- const toggleCode = (code, on) => {
135
- const next = new Set(granted);
136
- if (on) next.add(code);
137
- else next.delete(code);
138
- emit(next, scopeOf);
139
- };
140
- const setEntityScope = (entity, scope) => {
141
- const next = new Map(scopeOf);
142
- next.set(entity, scope);
143
- emit(granted, next);
144
- };
145
- const toggleRow = (row, on) => {
146
- const next = new Set(granted);
147
- for (const op of OPERATIONS) {
148
- const cell = row.cells[op.key];
149
- if (!cell) continue;
150
- if (on) next.add(cell.code);
151
- else next.delete(cell.code);
152
- }
153
- for (const extra of row.extras) {
154
- if (on) next.add(extra.code);
155
- else next.delete(extra.code);
156
- }
157
- emit(next, scopeOf);
158
- };
159
- if (catalog.length === 0) {
160
- return /* @__PURE__ */ jsx(
161
- "div",
162
- {
163
- className: "wp-body-sm",
164
- style: {
165
- border: "var(--wp-border-w) dashed var(--wp-border-default)",
166
- borderRadius: "var(--wp-radius-lg)",
167
- padding: "var(--wp-space-4)",
168
- textAlign: "center",
169
- color: "var(--wp-text-muted)"
170
- },
171
- children: emptyText
172
- }
173
- );
174
- }
175
- return /* @__PURE__ */ jsxs("div", { className: "wp-col", style: { gap: "var(--wp-space-2)" }, children: [
176
- /* @__PURE__ */ jsxs("span", { className: "wp-caption", children: [
177
- "\uAD8C\uD55C ",
178
- catalog.length,
179
- "\uC885 \uC911 ",
180
- granted.size,
181
- "\uAC1C \uBD80\uC5EC\uB428 \xB7 \uBC94\uC704\uB294 \uC5D4\uD2F0\uD2F0 \uB2E8\uC704\uB85C \uC801\uC6A9\uB429\uB2C8\uB2E4 (",
182
- scopeOptions.map((option) => option.label).join(" < "),
183
- ")"
184
- ] }),
185
- /* @__PURE__ */ jsx(
186
- "div",
187
- {
188
- style: {
189
- position: "relative",
190
- border: "var(--wp-border-w) solid var(--wp-border-default)",
191
- borderRadius: "var(--wp-radius-lg)",
192
- overflowY: "auto",
193
- maxHeight: "min(46vh, 400px)",
194
- minHeight: 160
195
- },
196
- children: groups.map((group) => {
197
- const total = group.rows.reduce(
198
- (a, r) => a + Object.keys(r.cells).length + r.extras.length,
199
- 0
200
- );
201
- const on = group.rows.reduce(
202
- (a, r) => a + OPERATIONS.filter((o) => r.cells[o.key] && granted.has(r.cells[o.key].code)).length + r.extras.filter((x) => granted.has(x.code)).length,
203
- 0
204
- );
205
- const isClosed = closed.has(group.category);
206
- return /* @__PURE__ */ jsxs("div", { children: [
207
- /* @__PURE__ */ jsxs(
208
- "button",
209
- {
210
- type: "button",
211
- className: "wp-row",
212
- onClick: () => toggleCategory(group.category),
213
- style: {
214
- position: "sticky",
215
- top: 0,
216
- zIndex: 1,
217
- width: "100%",
218
- alignItems: "center",
219
- padding: "var(--wp-space-2) var(--wp-space-3)",
220
- background: "var(--wp-surface-sunken)",
221
- border: "none",
222
- borderTop: "var(--wp-border-w) solid var(--wp-border-default)",
223
- cursor: "pointer",
224
- textAlign: "left"
225
- },
226
- "aria-expanded": !isClosed,
227
- children: [
228
- /* @__PURE__ */ jsx(Icon, { name: isClosed ? "chevron-right" : "chevron-down", size: 14 }),
229
- /* @__PURE__ */ jsx("span", { className: "wp-label", style: { flex: 1 }, children: group.label }),
230
- /* @__PURE__ */ jsxs(Badge, { tone: on > 0 ? "brand" : "neutral", children: [
231
- on,
232
- "/",
233
- total
234
- ] })
235
- ]
236
- }
237
- ),
238
- isClosed ? null : /* @__PURE__ */ jsxs("div", { className: "wp-col", style: { gap: 0 }, children: [
239
- /* @__PURE__ */ jsxs(
240
- "div",
241
- {
242
- className: "wp-row wp-caption",
243
- style: {
244
- alignItems: "center",
245
- padding: "var(--wp-space-1) var(--wp-space-3)",
246
- borderTop: "var(--wp-border-w) solid var(--wp-divider)",
247
- color: "var(--wp-text-muted)"
248
- },
249
- children: [
250
- /* @__PURE__ */ jsx("span", { style: { flex: 1.6 }, children: "\uC5D4\uD2F0\uD2F0" }),
251
- OPERATIONS.map((op) => /* @__PURE__ */ jsx("span", { style: { flex: "none", width: 52, textAlign: "center" }, children: op.label }, op.key)),
252
- /* @__PURE__ */ jsx("span", { style: { flex: "none", width: 96, textAlign: "center" }, children: "\uBC94\uC704" }),
253
- /* @__PURE__ */ jsx("span", { style: { flex: "none", width: 60 } })
254
- ]
255
- }
256
- ),
257
- group.rows.map((row) => {
258
- const rowCodes = [
259
- ...OPERATIONS.flatMap(
260
- (o) => row.cells[o.key] ? [row.cells[o.key].code] : []
261
- ),
262
- ...row.extras.map((x) => x.code)
263
- ];
264
- const allOn = rowCodes.length > 0 && rowCodes.every((c) => granted.has(c));
265
- const anyOn = rowCodes.some((c) => granted.has(c));
266
- return /* @__PURE__ */ jsxs(
267
- "div",
268
- {
269
- className: "wp-row",
270
- style: {
271
- alignItems: "center",
272
- padding: "var(--wp-space-1) var(--wp-space-3)",
273
- borderTop: "var(--wp-border-w) solid var(--wp-divider)"
274
- },
275
- children: [
276
- /* @__PURE__ */ jsxs("span", { className: "wp-body-sm", style: { flex: 1.6, minWidth: 0 }, children: [
277
- row.label || row.entity,
278
- /* @__PURE__ */ jsx(
279
- "span",
280
- {
281
- className: "wp-caption",
282
- style: {
283
- marginLeft: "var(--wp-space-2)",
284
- color: "var(--wp-text-muted)"
285
- },
286
- children: row.entity
287
- }
288
- )
289
- ] }),
290
- OPERATIONS.map((op) => {
291
- const cell = row.cells[op.key];
292
- return /* @__PURE__ */ jsx(
293
- "span",
294
- {
295
- style: {
296
- flex: "none",
297
- width: 52,
298
- display: "inline-flex",
299
- justifyContent: "center"
300
- },
301
- children: cell ? /* @__PURE__ */ jsx(
302
- Checkbox,
303
- {
304
- "aria-label": `${row.label || row.entity} ${op.label}`,
305
- checked: granted.has(cell.code),
306
- disabled,
307
- onChange: (event) => toggleCode(cell.code, event.target.checked)
308
- }
309
- ) : /* @__PURE__ */ jsx("span", { className: "wp-caption", style: { color: "var(--wp-text-muted)" }, children: "\u2013" })
310
- },
311
- op.key
312
- );
313
- }),
314
- /* @__PURE__ */ jsx("span", { style: { flex: "none", width: 96 }, children: /* @__PURE__ */ jsx(
315
- Select,
316
- {
317
- "aria-label": `${row.label || row.entity} \uBC94\uC704`,
318
- value: scopeOf.get(row.entity) ?? defaultScope,
319
- options: scopeOptions,
320
- disabled: disabled || !anyOn,
321
- onChange: (event) => setEntityScope(row.entity, event.target.value)
322
- }
323
- ) }),
324
- /* @__PURE__ */ jsx("span", { style: { flex: "none", width: 60, textAlign: "right" }, children: /* @__PURE__ */ jsx(
325
- Button,
326
- {
327
- type: "button",
328
- size: "sm",
329
- variant: "ghost",
330
- disabled,
331
- onClick: () => toggleRow(row, !allOn),
332
- children: allOn ? "\uD574\uC81C" : "\uC804\uCCB4"
333
- }
334
- ) })
335
- ]
336
- },
337
- row.entity
338
- );
339
- })
340
- ] })
341
- ] }, group.category);
342
- })
343
- }
344
- )
345
- ] });
346
- }
347
- var PermissionMatrixEditor = boxed(
348
- PermissionMatrixEditorImpl,
349
- "PermissionMatrixEditor"
350
- );
351
-
352
- export { PermissionMatrixEditor };
@@ -1,111 +0,0 @@
1
- import { useRef, useState, useEffect, useCallback } from 'react';
2
-
3
- // src/widgets/usePanZoomCanvas.ts
4
- var MIN_ZOOM = 0.35;
5
- var MAX_ZOOM = 1.8;
6
- var clamp = (value, min, max) => Math.min(max, Math.max(min, value));
7
- function applyZoom(current, nextScale, focal) {
8
- const scale = clamp(nextScale, MIN_ZOOM, MAX_ZOOM);
9
- return {
10
- scale,
11
- x: focal.x - (focal.x - current.x) / current.scale * scale,
12
- y: focal.y - (focal.y - current.y) / current.scale * scale
13
- };
14
- }
15
- function usePanZoomCanvas(options) {
16
- const { stopSelector, initialView } = options;
17
- const viewportRef = useRef(null);
18
- const dragRef = useRef(null);
19
- const [view, setView] = useState(initialView);
20
- const [dragging, setDragging] = useState(false);
21
- const [isFullscreen, setIsFullscreen] = useState(false);
22
- useEffect(() => {
23
- const handleFullscreenChange = () => {
24
- setIsFullscreen(document.fullscreenElement === viewportRef.current);
25
- };
26
- document.addEventListener("fullscreenchange", handleFullscreenChange);
27
- return () => document.removeEventListener("fullscreenchange", handleFullscreenChange);
28
- }, []);
29
- useEffect(() => {
30
- const viewport = viewportRef.current;
31
- if (!viewport) return;
32
- const onWheel = (event) => {
33
- event.preventDefault();
34
- const rect = viewport.getBoundingClientRect();
35
- const focal = { x: event.clientX - rect.left, y: event.clientY - rect.top };
36
- setView(
37
- (current) => applyZoom(current, current.scale * (event.deltaY > 0 ? 0.9 : 1.1), focal)
38
- );
39
- };
40
- viewport.addEventListener("wheel", onWheel, { passive: false });
41
- return () => viewport.removeEventListener("wheel", onWheel);
42
- }, []);
43
- const viewportCenter = useCallback(() => {
44
- const rect = viewportRef.current?.getBoundingClientRect();
45
- if (!rect) return { x: 0, y: 0 };
46
- return { x: rect.width / 2, y: rect.height / 2 };
47
- }, []);
48
- const zoomAt = useCallback((nextScale, focal) => {
49
- setView((current) => applyZoom(current, nextScale, focal));
50
- }, []);
51
- const handlePointerDown = (event) => {
52
- if (event.target.closest(stopSelector)) return;
53
- dragRef.current = {
54
- pointerId: event.pointerId,
55
- startX: event.clientX,
56
- startY: event.clientY,
57
- originX: view.x,
58
- originY: view.y
59
- };
60
- setDragging(true);
61
- event.currentTarget.setPointerCapture(event.pointerId);
62
- };
63
- const handlePointerMove = (event) => {
64
- const drag = dragRef.current;
65
- if (!drag || drag.pointerId !== event.pointerId) return;
66
- setView((current) => ({
67
- ...current,
68
- x: drag.originX + event.clientX - drag.startX,
69
- y: drag.originY + event.clientY - drag.startY
70
- }));
71
- };
72
- const handlePointerUp = (event) => {
73
- if (dragRef.current?.pointerId !== event.pointerId) return;
74
- dragRef.current = null;
75
- setDragging(false);
76
- if (event.currentTarget.hasPointerCapture(event.pointerId)) {
77
- event.currentTarget.releasePointerCapture(event.pointerId);
78
- }
79
- };
80
- const toggleFullscreen = async () => {
81
- const viewport = viewportRef.current;
82
- if (!viewport) return;
83
- try {
84
- if (document.fullscreenElement === viewport) {
85
- await document.exitFullscreen();
86
- return;
87
- }
88
- await viewport.requestFullscreen();
89
- } catch {
90
- }
91
- };
92
- return {
93
- viewportRef,
94
- view,
95
- setView,
96
- dragging,
97
- isFullscreen,
98
- viewportCenter,
99
- zoomAt,
100
- toggleFullscreen,
101
- /** 뷰포트 div에 그대로 spread — 패닝 4종 핸들러. */
102
- pointerHandlers: {
103
- onPointerDown: handlePointerDown,
104
- onPointerMove: handlePointerMove,
105
- onPointerUp: handlePointerUp,
106
- onPointerCancel: handlePointerUp
107
- }
108
- };
109
- }
110
-
111
- export { MAX_ZOOM, MIN_ZOOM, usePanZoomCanvas };