@ncds/ui-admin 1.8.3 → 1.8.5

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 (217) hide show
  1. package/dist/cjs/assets/scripts/featuredIcon.js +87 -0
  2. package/dist/cjs/assets/scripts/notification/FloatingNotification.js +178 -0
  3. package/dist/cjs/assets/scripts/notification/FullWidthNotification.js +133 -0
  4. package/dist/cjs/assets/scripts/notification/MessageNotification.js +159 -0
  5. package/dist/cjs/assets/scripts/notification/Notification.js +120 -0
  6. package/dist/cjs/assets/scripts/notification/const/classNames.js +50 -0
  7. package/dist/cjs/assets/scripts/notification/const/icons.js +31 -0
  8. package/dist/cjs/assets/scripts/notification/const/index.js +87 -0
  9. package/dist/cjs/assets/scripts/notification/const/sizes.js +46 -0
  10. package/dist/cjs/assets/scripts/notification/const/types.js +14 -0
  11. package/dist/cjs/assets/scripts/notification/index.js +116 -0
  12. package/dist/cjs/assets/scripts/notification/positionSync.js +180 -0
  13. package/dist/cjs/assets/scripts/notification/utils.js +122 -0
  14. package/dist/cjs/assets/scripts/shared/ButtonCloseX.js +45 -0
  15. package/dist/cjs/assets/scripts/utils/sanitize.js +39 -0
  16. package/dist/cjs/src/components/data-display/data-grid/DataGrid.js +5 -1
  17. package/dist/cjs/src/components/data-display/table/Table.js +118 -96
  18. package/dist/cjs/src/components/data-display/table/useTableScrollbars.js +187 -0
  19. package/dist/cjs/src/components/forms-and-input/combo-box/ComboBox.js +11 -10
  20. package/dist/cjs/src/components/forms-and-input/image-file-input/ImageFileInput.js +5 -2
  21. package/dist/cjs/src/components/forms-and-input/select-box/SelectBox.js +67 -29
  22. package/dist/cjs/src/components/index.js +33 -0
  23. package/dist/cjs/src/components/layout/block-container/BlockContainer.js +38 -0
  24. package/dist/cjs/src/components/layout/block-container/index.js +16 -0
  25. package/dist/cjs/src/components/layout/block-header/BlockHeader.js +107 -0
  26. package/dist/cjs/src/components/layout/block-header/SubTitle.js +56 -0
  27. package/dist/cjs/src/components/layout/block-header/index.js +27 -0
  28. package/dist/cjs/src/components/layout/page-title/PageTitle.js +95 -0
  29. package/dist/cjs/src/components/layout/page-title/index.js +16 -0
  30. package/dist/cjs/src/components/overlays/dropdown/Dropdown.js +47 -19
  31. package/dist/cjs/src/components/overlays/notification/CalloutNotification.js +25 -0
  32. package/dist/cjs/src/components/overlays/notification/FloatingNotification.js +86 -13
  33. package/dist/cjs/src/components/overlays/notification/Notification.js +7 -0
  34. package/dist/cjs/src/components/overlays/notification/host.js +12 -0
  35. package/dist/cjs/src/components/overlays/tooltip/Tooltip.js +57 -44
  36. package/dist/cjs/src/components/select-dropdown/SelectDropdown.js +2 -1
  37. package/dist/cjs/src/contexts/FloatingContext.js +11 -0
  38. package/dist/cjs/src/contexts/index.js +16 -0
  39. package/dist/cjs/src/hooks/index.js +11 -0
  40. package/dist/cjs/src/hooks/useFloatingPosition.js +78 -0
  41. package/dist/cjs/src/hooks/usePortalState.js +17 -0
  42. package/dist/cjs/src/utils/dropdown/maxSelection.js +35 -0
  43. package/dist/cjs/src/utils/dropdown/multiSelect.js +72 -15
  44. package/dist/esm/assets/scripts/featuredIcon.js +80 -0
  45. package/dist/esm/assets/scripts/notification/FloatingNotification.js +171 -0
  46. package/dist/esm/assets/scripts/notification/FullWidthNotification.js +126 -0
  47. package/dist/esm/assets/scripts/notification/MessageNotification.js +152 -0
  48. package/dist/esm/assets/scripts/notification/Notification.js +113 -0
  49. package/dist/esm/assets/scripts/notification/const/classNames.js +44 -0
  50. package/dist/esm/assets/scripts/notification/const/icons.js +25 -0
  51. package/dist/esm/assets/scripts/notification/const/index.js +4 -0
  52. package/dist/esm/assets/scripts/notification/const/sizes.js +40 -0
  53. package/dist/esm/assets/scripts/notification/const/types.js +8 -0
  54. package/dist/esm/assets/scripts/notification/index.js +10 -0
  55. package/dist/esm/assets/scripts/notification/positionSync.js +171 -0
  56. package/dist/esm/assets/scripts/notification/utils.js +109 -0
  57. package/dist/esm/assets/scripts/shared/ButtonCloseX.js +37 -0
  58. package/dist/esm/assets/scripts/utils/sanitize.js +31 -0
  59. package/dist/esm/src/components/data-display/data-grid/DataGrid.js +5 -1
  60. package/dist/esm/src/components/data-display/table/Table.js +118 -96
  61. package/dist/esm/src/components/data-display/table/useTableScrollbars.js +179 -0
  62. package/dist/esm/src/components/forms-and-input/combo-box/ComboBox.js +11 -10
  63. package/dist/esm/src/components/forms-and-input/image-file-input/ImageFileInput.js +5 -2
  64. package/dist/esm/src/components/forms-and-input/select-box/SelectBox.js +67 -29
  65. package/dist/esm/src/components/index.js +3 -0
  66. package/dist/esm/src/components/layout/block-container/BlockContainer.js +31 -0
  67. package/dist/esm/src/components/layout/block-container/index.js +1 -0
  68. package/dist/esm/src/components/layout/block-header/BlockHeader.js +100 -0
  69. package/dist/esm/src/components/layout/block-header/SubTitle.js +49 -0
  70. package/dist/esm/src/components/layout/block-header/index.js +2 -0
  71. package/dist/esm/src/components/layout/page-title/PageTitle.js +88 -0
  72. package/dist/esm/src/components/layout/page-title/index.js +1 -0
  73. package/dist/esm/src/components/overlays/dropdown/Dropdown.js +47 -19
  74. package/dist/esm/src/components/overlays/notification/CalloutNotification.js +19 -0
  75. package/dist/esm/src/components/overlays/notification/FloatingNotification.js +86 -14
  76. package/dist/esm/src/components/overlays/notification/Notification.js +7 -0
  77. package/dist/esm/src/components/overlays/notification/host.js +9 -0
  78. package/dist/esm/src/components/overlays/tooltip/Tooltip.js +58 -45
  79. package/dist/esm/src/components/select-dropdown/SelectDropdown.js +2 -1
  80. package/dist/esm/src/contexts/FloatingContext.js +4 -0
  81. package/dist/esm/src/contexts/index.js +1 -0
  82. package/dist/esm/src/hooks/index.js +1 -0
  83. package/dist/esm/src/hooks/useFloatingPosition.js +71 -0
  84. package/dist/esm/src/hooks/usePortalState.js +10 -0
  85. package/dist/esm/src/utils/dropdown/maxSelection.js +27 -0
  86. package/dist/esm/src/utils/dropdown/multiSelect.js +70 -14
  87. package/dist/temp/assets/scripts/featuredIcon.d.ts +22 -0
  88. package/dist/temp/assets/scripts/featuredIcon.js +79 -0
  89. package/dist/temp/assets/scripts/notification/FloatingNotification.d.ts +24 -0
  90. package/dist/temp/assets/scripts/notification/FloatingNotification.js +156 -0
  91. package/dist/temp/assets/scripts/notification/FullWidthNotification.d.ts +21 -0
  92. package/dist/temp/assets/scripts/notification/FullWidthNotification.js +111 -0
  93. package/dist/temp/assets/scripts/notification/MessageNotification.d.ts +22 -0
  94. package/dist/temp/assets/scripts/notification/MessageNotification.js +140 -0
  95. package/dist/temp/assets/scripts/notification/Notification.d.ts +22 -0
  96. package/dist/temp/assets/scripts/notification/Notification.js +112 -0
  97. package/dist/temp/assets/scripts/notification/const/classNames.d.ts +43 -0
  98. package/dist/temp/assets/scripts/notification/const/classNames.js +44 -0
  99. package/dist/temp/assets/scripts/notification/const/icons.d.ts +25 -0
  100. package/dist/temp/assets/scripts/notification/const/icons.js +25 -0
  101. package/dist/temp/assets/scripts/notification/const/index.d.ts +5 -0
  102. package/dist/temp/assets/scripts/notification/const/index.js +4 -0
  103. package/dist/temp/assets/scripts/notification/const/sizes.d.ts +32 -0
  104. package/dist/temp/assets/scripts/notification/const/sizes.js +40 -0
  105. package/dist/temp/assets/scripts/notification/const/types.d.ts +19 -0
  106. package/dist/temp/assets/scripts/notification/const/types.js +8 -0
  107. package/dist/temp/assets/scripts/notification/index.d.ts +8 -0
  108. package/dist/temp/assets/scripts/notification/index.js +10 -0
  109. package/dist/temp/assets/scripts/notification/positionSync.d.ts +50 -0
  110. package/dist/temp/assets/scripts/notification/positionSync.js +170 -0
  111. package/dist/temp/assets/scripts/notification/utils.d.ts +8 -0
  112. package/dist/temp/assets/scripts/notification/utils.js +115 -0
  113. package/dist/temp/assets/scripts/shared/ButtonCloseX.d.ts +5 -0
  114. package/dist/temp/assets/scripts/shared/ButtonCloseX.js +33 -0
  115. package/dist/temp/assets/scripts/utils/sanitize.d.ts +22 -0
  116. package/dist/temp/assets/scripts/utils/sanitize.js +31 -0
  117. package/dist/temp/src/components/data-display/data-grid/DataGrid.js +1 -1
  118. package/dist/temp/src/components/data-display/data-grid/DataGrid.types.d.ts +7 -0
  119. package/dist/temp/src/components/data-display/table/Table.d.ts +4 -1
  120. package/dist/temp/src/components/data-display/table/Table.js +53 -68
  121. package/dist/temp/src/components/data-display/table/types.d.ts +18 -0
  122. package/dist/temp/src/components/data-display/table/useTableScrollbars.d.ts +25 -0
  123. package/dist/temp/src/components/data-display/table/useTableScrollbars.js +136 -0
  124. package/dist/temp/src/components/forms-and-input/combo-box/ComboBox.d.ts +8 -0
  125. package/dist/temp/src/components/forms-and-input/combo-box/ComboBox.js +7 -11
  126. package/dist/temp/src/components/forms-and-input/image-file-input/ImageFileInput.js +1 -1
  127. package/dist/temp/src/components/forms-and-input/select-box/SelectBox.d.ts +13 -0
  128. package/dist/temp/src/components/forms-and-input/select-box/SelectBox.js +30 -3
  129. package/dist/temp/src/components/index.d.ts +3 -0
  130. package/dist/temp/src/components/index.js +3 -0
  131. package/dist/temp/src/components/layout/block-container/BlockContainer.d.ts +19 -0
  132. package/dist/temp/src/components/layout/block-container/BlockContainer.js +11 -0
  133. package/dist/temp/src/components/layout/block-container/index.d.ts +1 -0
  134. package/dist/temp/src/components/layout/block-container/index.js +1 -0
  135. package/dist/temp/src/components/layout/block-header/BlockHeader.d.ts +23 -0
  136. package/dist/temp/src/components/layout/block-header/BlockHeader.js +21 -0
  137. package/dist/temp/src/components/layout/block-header/SubTitle.d.ts +19 -0
  138. package/dist/temp/src/components/layout/block-header/SubTitle.js +8 -0
  139. package/dist/temp/src/components/layout/block-header/index.d.ts +2 -0
  140. package/dist/temp/src/components/layout/block-header/index.js +2 -0
  141. package/dist/temp/src/components/layout/page-title/PageTitle.d.ts +22 -0
  142. package/dist/temp/src/components/layout/page-title/PageTitle.js +19 -0
  143. package/dist/temp/src/components/layout/page-title/index.d.ts +1 -0
  144. package/dist/temp/src/components/layout/page-title/index.js +1 -0
  145. package/dist/temp/src/components/overlays/dropdown/Dropdown.d.ts +5 -0
  146. package/dist/temp/src/components/overlays/dropdown/Dropdown.js +35 -11
  147. package/dist/temp/src/components/overlays/notification/CalloutNotification.d.ts +9 -0
  148. package/dist/temp/src/components/overlays/notification/CalloutNotification.js +6 -0
  149. package/dist/temp/src/components/overlays/notification/FloatingNotification.d.ts +15 -0
  150. package/dist/temp/src/components/overlays/notification/FloatingNotification.js +81 -13
  151. package/dist/temp/src/components/overlays/notification/Notification.d.ts +18 -3
  152. package/dist/temp/src/components/overlays/notification/Notification.js +4 -0
  153. package/dist/temp/src/components/overlays/notification/host.d.ts +9 -0
  154. package/dist/temp/src/components/overlays/notification/host.js +9 -0
  155. package/dist/temp/src/components/overlays/tooltip/Tooltip.d.ts +5 -1
  156. package/dist/temp/src/components/overlays/tooltip/Tooltip.js +25 -22
  157. package/dist/temp/src/components/select-dropdown/SelectDropdown.d.ts +6 -0
  158. package/dist/temp/src/components/select-dropdown/SelectDropdown.js +2 -2
  159. package/dist/temp/src/contexts/FloatingContext.d.ts +6 -0
  160. package/dist/temp/src/contexts/FloatingContext.js +4 -0
  161. package/dist/temp/src/contexts/index.d.ts +1 -0
  162. package/dist/temp/src/contexts/index.js +1 -0
  163. package/dist/temp/src/hooks/index.d.ts +1 -0
  164. package/dist/temp/src/hooks/index.js +1 -0
  165. package/dist/temp/src/hooks/useFloatingPosition.d.ts +19 -0
  166. package/dist/temp/src/hooks/useFloatingPosition.js +55 -0
  167. package/dist/temp/src/hooks/usePortalState.d.ts +6 -0
  168. package/dist/temp/src/hooks/usePortalState.js +7 -0
  169. package/dist/temp/src/utils/dropdown/maxSelection.d.ts +24 -0
  170. package/dist/temp/src/utils/dropdown/maxSelection.js +28 -0
  171. package/dist/temp/src/utils/dropdown/multiSelect.d.ts +42 -2
  172. package/dist/temp/src/utils/dropdown/multiSelect.js +66 -13
  173. package/dist/types/assets/scripts/featuredIcon.d.ts +22 -0
  174. package/dist/types/assets/scripts/notification/FloatingNotification.d.ts +24 -0
  175. package/dist/types/assets/scripts/notification/FullWidthNotification.d.ts +21 -0
  176. package/dist/types/assets/scripts/notification/MessageNotification.d.ts +22 -0
  177. package/dist/types/assets/scripts/notification/Notification.d.ts +22 -0
  178. package/dist/types/assets/scripts/notification/const/classNames.d.ts +43 -0
  179. package/dist/types/assets/scripts/notification/const/icons.d.ts +25 -0
  180. package/dist/types/assets/scripts/notification/const/index.d.ts +5 -0
  181. package/dist/types/assets/scripts/notification/const/sizes.d.ts +32 -0
  182. package/dist/types/assets/scripts/notification/const/types.d.ts +19 -0
  183. package/dist/types/assets/scripts/notification/index.d.ts +8 -0
  184. package/dist/types/assets/scripts/notification/positionSync.d.ts +50 -0
  185. package/dist/types/assets/scripts/notification/utils.d.ts +8 -0
  186. package/dist/types/assets/scripts/shared/ButtonCloseX.d.ts +5 -0
  187. package/dist/types/assets/scripts/utils/sanitize.d.ts +22 -0
  188. package/dist/types/src/components/data-display/data-grid/DataGrid.types.d.ts +7 -0
  189. package/dist/types/src/components/data-display/table/Table.d.ts +4 -1
  190. package/dist/types/src/components/data-display/table/types.d.ts +18 -0
  191. package/dist/types/src/components/data-display/table/useTableScrollbars.d.ts +25 -0
  192. package/dist/types/src/components/forms-and-input/combo-box/ComboBox.d.ts +8 -0
  193. package/dist/types/src/components/forms-and-input/select-box/SelectBox.d.ts +13 -0
  194. package/dist/types/src/components/index.d.ts +3 -0
  195. package/dist/types/src/components/layout/block-container/BlockContainer.d.ts +19 -0
  196. package/dist/types/src/components/layout/block-container/index.d.ts +1 -0
  197. package/dist/types/src/components/layout/block-header/BlockHeader.d.ts +23 -0
  198. package/dist/types/src/components/layout/block-header/SubTitle.d.ts +19 -0
  199. package/dist/types/src/components/layout/block-header/index.d.ts +2 -0
  200. package/dist/types/src/components/layout/page-title/PageTitle.d.ts +22 -0
  201. package/dist/types/src/components/layout/page-title/index.d.ts +1 -0
  202. package/dist/types/src/components/overlays/dropdown/Dropdown.d.ts +5 -0
  203. package/dist/types/src/components/overlays/notification/CalloutNotification.d.ts +9 -0
  204. package/dist/types/src/components/overlays/notification/FloatingNotification.d.ts +15 -0
  205. package/dist/types/src/components/overlays/notification/Notification.d.ts +18 -3
  206. package/dist/types/src/components/overlays/notification/host.d.ts +9 -0
  207. package/dist/types/src/components/overlays/tooltip/Tooltip.d.ts +5 -1
  208. package/dist/types/src/components/select-dropdown/SelectDropdown.d.ts +6 -0
  209. package/dist/types/src/contexts/FloatingContext.d.ts +6 -0
  210. package/dist/types/src/contexts/index.d.ts +1 -0
  211. package/dist/types/src/hooks/index.d.ts +1 -0
  212. package/dist/types/src/hooks/useFloatingPosition.d.ts +19 -0
  213. package/dist/types/src/hooks/usePortalState.d.ts +6 -0
  214. package/dist/types/src/utils/dropdown/maxSelection.d.ts +24 -0
  215. package/dist/types/src/utils/dropdown/multiSelect.d.ts +42 -2
  216. package/dist/ui-admin/assets/styles/style.css +596 -64
  217. package/package.json +1 -1
@@ -8,8 +8,11 @@ var _jsxRuntime = require("react/jsx-runtime");
8
8
  var _uiAdminIcon = require("@ncds/ui-admin-icon");
9
9
  var _classnames = _interopRequireDefault(require("classnames"));
10
10
  var _react = require("react");
11
+ var _reactDom = require("react-dom");
11
12
  var _color = require("../../../../constant/color");
12
13
  var _dropdown = require("../../../hooks/dropdown");
14
+ var _useFloatingPosition = require("../../../hooks/useFloatingPosition");
15
+ var _usePortalState = require("../../../hooks/usePortalState");
13
16
  var _multiSelect = require("../../../utils/dropdown/multiSelect");
14
17
  var _tag = require("../../feedback-and-status/tag");
15
18
  var _selectDropdown = require("../../select-dropdown");
@@ -61,7 +64,9 @@ function DisplayValue(_ref) {
61
64
  })]
62
65
  });
63
66
  }
64
- const SelectBox = exports.SelectBox = /*#__PURE__*/(0, _react.forwardRef)((_ref2, ref) => {
67
+ const SelectBox = exports.SelectBox = /*#__PURE__*/(0, _react.forwardRef)((_ref2, ref
68
+ // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: 옵션/멀티/태그/포탈 등 필수 분기 통합
69
+ ) => {
65
70
  let {
66
71
  placeholder = '선택하세요',
67
72
  disabledPlaceholder = false,
@@ -75,7 +80,9 @@ const SelectBox = exports.SelectBox = /*#__PURE__*/(0, _react.forwardRef)((_ref2
75
80
  disabled = false,
76
81
  maxHeight = DEFAULT_MAX_HEIGHT,
77
82
  multiple = false,
83
+ maxSelection,
78
84
  align = 'left',
85
+ usePortal,
79
86
  id,
80
87
  className,
81
88
  children,
@@ -86,6 +93,10 @@ const SelectBox = exports.SelectBox = /*#__PURE__*/(0, _react.forwardRef)((_ref2
86
93
  } = _ref2;
87
94
  const internalRef = (0, _react.useRef)(null);
88
95
  const dropdownRef = (0, _react.useRef)(null);
96
+ const {
97
+ shouldPortal,
98
+ portalContainer
99
+ } = (0, _usePortalState.usePortalState)(usePortal);
89
100
  const [selectedTags, setSelectedTags] = (0, _react.useState)([]);
90
101
  const selectedOption = (0, _react.useMemo)(() => {
91
102
  if (multiple) return null;
@@ -99,6 +110,13 @@ const SelectBox = exports.SelectBox = /*#__PURE__*/(0, _react.forwardRef)((_ref2
99
110
  }, [multiple, selectedOption, placeholder]);
100
111
  const handleOptionSelect = option => {
101
112
  if (disabled) return;
113
+ if (multiple) {
114
+ const newValue = tryToggle(option.id, Array.isArray(value) ? value : []);
115
+ if (newValue === null) return;
116
+ onChange?.(newValue);
117
+ notifyRegister(register, newValue, multiple);
118
+ return;
119
+ }
102
120
  const newValue = computeNewValue(option, value, multiple);
103
121
  onChange?.(newValue);
104
122
  notifyRegister(register, newValue, multiple);
@@ -141,8 +159,12 @@ const SelectBox = exports.SelectBox = /*#__PURE__*/(0, _react.forwardRef)((_ref2
141
159
  buttonText: selectAllButtonText,
142
160
  toggleSelectAll,
143
161
  getSelectedTagsData,
144
- removeTag
145
- } = (0, _multiSelect.useMultiSelect)(currentSelectedValues, optionItems);
162
+ removeTag,
163
+ isMaxSelectionActive,
164
+ tryToggle
165
+ } = (0, _multiSelect.useMultiSelect)(currentSelectedValues, optionItems, {
166
+ maxSelection
167
+ });
146
168
  const handleSelectAll = () => {
147
169
  if (!multiple || !onChange) return;
148
170
  const newSelectedValues = toggleSelectAll();
@@ -167,13 +189,53 @@ const SelectBox = exports.SelectBox = /*#__PURE__*/(0, _react.forwardRef)((_ref2
167
189
  }
168
190
  };
169
191
  (0, _dropdown.useScrollLock)(isOpen, dropdownRef);
192
+ // biome-ignore lint/correctness/useExhaustiveDependencies: optionItems 변경 시 너비 재계산 필요
170
193
  (0, _react.useLayoutEffect)(() => {
171
194
  if (autoWidth && isOpen && dropdownRef.current && internalRef.current) {
172
195
  const dropdownWidth = dropdownRef.current.offsetWidth;
173
196
  internalRef.current.style.width = `${dropdownWidth}px`;
174
197
  }
175
198
  }, [autoWidth, isOpen, optionItems]);
199
+ const floatingStyle = (0, _useFloatingPosition.useFloatingPosition)({
200
+ enabled: shouldPortal,
201
+ isOpen,
202
+ triggerRef: internalRef,
203
+ floatingRef: dropdownRef,
204
+ direction: dropdownDirection,
205
+ align,
206
+ matchTriggerWidth: true
207
+ });
208
+ // biome-ignore lint/style/noNonNullAssertion: forwardRef 패턴에서 internalRef는 항상 존재
176
209
  (0, _react.useImperativeHandle)(ref, () => internalRef.current, []);
210
+ const selectDropdownNode = (0, _jsxRuntime.jsx)(_selectDropdown.SelectDropdown, {
211
+ ref: dropdownRef,
212
+ isOpen: isOpen,
213
+ direction: dropdownDirection,
214
+ size: size,
215
+ options: optionItems,
216
+ value: value,
217
+ focusedIndex: focusedIndex,
218
+ maxHeight: maxHeight,
219
+ listboxId: `selectbox-options-${id || 'default'}`,
220
+ multiple: multiple,
221
+ showFooterButtons: multiple,
222
+ selectAllButtonText: selectAllButtonText,
223
+ showSelectAllAction: !isMaxSelectionActive,
224
+ componentType: "selectbox",
225
+ isKeyboardNavigation: isKeyboardNavigation,
226
+ activeDescendantId: activeDescendantId,
227
+ align: align,
228
+ className: shouldPortal ? 'ncua-select-dropdown--portal' : undefined,
229
+ style: shouldPortal && floatingStyle ? floatingStyle : undefined,
230
+ onOptionSelect: handleDropdownSelect,
231
+ onMouseMove: handleMouseMove,
232
+ onOptionHover: handleOptionHover,
233
+ onSelectAll: handleSelectAll,
234
+ onEdit: handleEdit,
235
+ onComplete: handleComplete,
236
+ children: children
237
+ });
238
+ const portaledDropdown = shouldPortal && portalContainer && isOpen ? /*#__PURE__*/(0, _reactDom.createPortal)(selectDropdownNode, portalContainer) : null;
177
239
  return (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
178
240
  children: [(0, _jsxRuntime.jsxs)("div", {
179
241
  ref: internalRef,
@@ -212,31 +274,7 @@ const SelectBox = exports.SelectBox = /*#__PURE__*/(0, _react.forwardRef)((_ref2
212
274
  'ncua-selectbox__arrow--up': isOpen
213
275
  })
214
276
  })]
215
- }), (0, _jsxRuntime.jsx)(_selectDropdown.SelectDropdown, {
216
- ref: dropdownRef,
217
- isOpen: isOpen,
218
- direction: dropdownDirection,
219
- size: size,
220
- options: optionItems,
221
- value: value,
222
- focusedIndex: focusedIndex,
223
- maxHeight: maxHeight,
224
- listboxId: `selectbox-options-${id || 'default'}`,
225
- multiple: multiple,
226
- showFooterButtons: multiple,
227
- selectAllButtonText: selectAllButtonText,
228
- componentType: "selectbox",
229
- isKeyboardNavigation: isKeyboardNavigation,
230
- activeDescendantId: activeDescendantId,
231
- align: align,
232
- onOptionSelect: handleDropdownSelect,
233
- onMouseMove: handleMouseMove,
234
- onOptionHover: handleOptionHover,
235
- onSelectAll: handleSelectAll,
236
- onEdit: handleEdit,
237
- onComplete: handleComplete,
238
- children: children
239
- })]
277
+ }), !shouldPortal && selectDropdownNode]
240
278
  }), hintText && (0, _jsxRuntime.jsx)(_HintText.HintText, {
241
279
  destructive: destructive,
242
280
  className: "ncua-hint-text",
@@ -254,7 +292,7 @@ const SelectBox = exports.SelectBox = /*#__PURE__*/(0, _react.forwardRef)((_ref2
254
292
  close: true,
255
293
  onButtonClick: () => handleRemoveTag(tag.id)
256
294
  }, tag.id))
257
- })]
295
+ }), portaledDropdown]
258
296
  });
259
297
  });
260
298
  SelectBox.displayName = 'SelectBox';
@@ -355,6 +355,28 @@ Object.keys(_featuredIcon).forEach(function (key) {
355
355
  }
356
356
  });
357
357
  });
358
+ var _blockContainer = require("./layout/block-container");
359
+ Object.keys(_blockContainer).forEach(function (key) {
360
+ if (key === "default" || key === "__esModule") return;
361
+ if (key in exports && exports[key] === _blockContainer[key]) return;
362
+ Object.defineProperty(exports, key, {
363
+ enumerable: true,
364
+ get: function () {
365
+ return _blockContainer[key];
366
+ }
367
+ });
368
+ });
369
+ var _blockHeader = require("./layout/block-header");
370
+ Object.keys(_blockHeader).forEach(function (key) {
371
+ if (key === "default" || key === "__esModule") return;
372
+ if (key in exports && exports[key] === _blockHeader[key]) return;
373
+ Object.defineProperty(exports, key, {
374
+ enumerable: true,
375
+ get: function () {
376
+ return _blockHeader[key];
377
+ }
378
+ });
379
+ });
358
380
  var _divider = require("./layout/divider");
359
381
  Object.keys(_divider).forEach(function (key) {
360
382
  if (key === "default" || key === "__esModule") return;
@@ -366,6 +388,17 @@ Object.keys(_divider).forEach(function (key) {
366
388
  }
367
389
  });
368
390
  });
391
+ var _pageTitle = require("./layout/page-title");
392
+ Object.keys(_pageTitle).forEach(function (key) {
393
+ if (key === "default" || key === "__esModule") return;
394
+ if (key in exports && exports[key] === _pageTitle[key]) return;
395
+ Object.defineProperty(exports, key, {
396
+ enumerable: true,
397
+ get: function () {
398
+ return _pageTitle[key];
399
+ }
400
+ });
401
+ });
369
402
  var _breadCrumb = require("./navigation/bread-crumb");
370
403
  Object.keys(_breadCrumb).forEach(function (key) {
371
404
  if (key === "default" || key === "__esModule") return;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.BlockContainer = void 0;
7
+ var _jsxRuntime = require("react/jsx-runtime");
8
+ var _classnames = _interopRequireDefault(require("classnames"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ const BlockContainerBase = _ref => {
11
+ let {
12
+ children,
13
+ className,
14
+ ...rest
15
+ } = _ref;
16
+ return (0, _jsxRuntime.jsx)("section", {
17
+ className: (0, _classnames.default)('ncua-block-container', className),
18
+ ...rest,
19
+ children: children
20
+ });
21
+ };
22
+ BlockContainerBase.displayName = 'BlockContainer';
23
+ const Body = _ref2 => {
24
+ let {
25
+ children,
26
+ className,
27
+ ...rest
28
+ } = _ref2;
29
+ return (0, _jsxRuntime.jsx)("div", {
30
+ className: (0, _classnames.default)('ncua-block-container__body', className),
31
+ ...rest,
32
+ children: children
33
+ });
34
+ };
35
+ Body.displayName = 'BlockContainer.Body';
36
+ const BlockContainer = exports.BlockContainer = Object.assign(BlockContainerBase, {
37
+ Body
38
+ });
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _BlockContainer = require("./BlockContainer");
7
+ Object.keys(_BlockContainer).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _BlockContainer[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _BlockContainer[key];
14
+ }
15
+ });
16
+ });
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.BlockHeader = void 0;
7
+ var _jsxRuntime = require("react/jsx-runtime");
8
+ var _uiAdminIcon = require("@ncds/ui-admin-icon");
9
+ var _classnames = _interopRequireDefault(require("classnames"));
10
+ var _Tooltip = require("../../overlays/tooltip/Tooltip");
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ const ICON_SIZE = 24;
13
+ const CollapsibleButton = _ref => {
14
+ let {
15
+ expanded,
16
+ onToggle
17
+ } = _ref;
18
+ return (0, _jsxRuntime.jsx)("button", {
19
+ type: "button",
20
+ className: "ncua-block-header__collapsible-btn",
21
+ onClick: onToggle,
22
+ "aria-expanded": expanded,
23
+ children: expanded ? (0, _jsxRuntime.jsx)(_uiAdminIcon.ChevronUp, {
24
+ width: ICON_SIZE,
25
+ height: ICON_SIZE,
26
+ color: "var(--gray-300)"
27
+ }) : (0, _jsxRuntime.jsx)(_uiAdminIcon.ChevronDown, {
28
+ width: ICON_SIZE,
29
+ height: ICON_SIZE,
30
+ color: "var(--gray-300)"
31
+ })
32
+ });
33
+ };
34
+ const BlockHeader = _ref2 => {
35
+ let {
36
+ title,
37
+ tooltip,
38
+ action,
39
+ showDivider = true,
40
+ badge,
41
+ description,
42
+ collapsible,
43
+ showRequiredNotice = false,
44
+ controlStrip,
45
+ children,
46
+ className,
47
+ ...rest
48
+ } = _ref2;
49
+ const hasColumnLayout = !!description;
50
+ const hasTabChildren = !!children;
51
+ const hasControlStrip = !!controlStrip;
52
+ const isCollapsed = !!collapsible && !collapsible.expanded;
53
+ return (0, _jsxRuntime.jsxs)("header", {
54
+ className: (0, _classnames.default)('ncua-block-header', {
55
+ 'ncua-block-header--column': hasColumnLayout,
56
+ 'ncua-block-header--no-divider': !showDivider || hasTabChildren || isCollapsed,
57
+ 'ncua-block-header--has-tab': hasTabChildren && !isCollapsed,
58
+ 'ncua-block-header--has-control-strip': hasControlStrip,
59
+ 'ncua-block-header--is-required': showRequiredNotice
60
+ }, className),
61
+ ...rest,
62
+ children: [(0, _jsxRuntime.jsxs)("div", {
63
+ className: "ncua-block-header__row",
64
+ children: [(0, _jsxRuntime.jsxs)("div", {
65
+ className: "ncua-block-header__title-area",
66
+ children: [(0, _jsxRuntime.jsx)("span", {
67
+ className: "ncua-block-header__title",
68
+ children: title
69
+ }), tooltip && (0, _jsxRuntime.jsx)(_Tooltip.Tooltip, {
70
+ content: tooltip,
71
+ size: "sm",
72
+ position: "top",
73
+ hideArrow: true,
74
+ iconType: "fill"
75
+ }), badge && (0, _jsxRuntime.jsx)("span", {
76
+ className: "ncua-block-header__badge",
77
+ children: badge
78
+ })]
79
+ }), (0, _jsxRuntime.jsxs)("div", {
80
+ className: "ncua-block-header__action-area",
81
+ children: [showRequiredNotice && (0, _jsxRuntime.jsxs)("span", {
82
+ className: "ncua-block-header__required-notice",
83
+ children: [(0, _jsxRuntime.jsx)("span", {
84
+ className: "ncua-block-header__required-notice--red",
85
+ children: "* \uB294 \uD544\uC218 \uC785\uB825"
86
+ }), (0, _jsxRuntime.jsx)("span", {
87
+ className: "ncua-block-header__required-notice--gray",
88
+ children: " \uD56D\uBAA9\uC785\uB2C8\uB2E4."
89
+ })]
90
+ }), action, collapsible && (0, _jsxRuntime.jsx)(CollapsibleButton, {
91
+ ...collapsible
92
+ })]
93
+ })]
94
+ }), hasColumnLayout && (0, _jsxRuntime.jsx)("p", {
95
+ className: "ncua-block-header__description",
96
+ children: description
97
+ }), hasControlStrip && (0, _jsxRuntime.jsx)("div", {
98
+ className: "ncua-block-header__control-strip",
99
+ children: controlStrip
100
+ }), hasTabChildren && !isCollapsed && (0, _jsxRuntime.jsx)("div", {
101
+ className: "ncua-block-header__tabs",
102
+ children: children
103
+ })]
104
+ });
105
+ };
106
+ exports.BlockHeader = BlockHeader;
107
+ BlockHeader.displayName = 'BlockHeader';
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.SubTitle = void 0;
7
+ var _jsxRuntime = require("react/jsx-runtime");
8
+ var _classnames = _interopRequireDefault(require("classnames"));
9
+ var _Tooltip = require("../../overlays/tooltip/Tooltip");
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ const SubTitle = _ref => {
12
+ let {
13
+ title,
14
+ size = 'sm',
15
+ tooltip,
16
+ description,
17
+ error,
18
+ action,
19
+ required = false,
20
+ className,
21
+ ...rest
22
+ } = _ref;
23
+ return (0, _jsxRuntime.jsxs)("div", {
24
+ className: (0, _classnames.default)('ncua-sub-title', `ncua-sub-title--${size}`, className),
25
+ ...rest,
26
+ children: [(0, _jsxRuntime.jsxs)("div", {
27
+ className: "ncua-sub-title__title-row",
28
+ children: [(0, _jsxRuntime.jsxs)("div", {
29
+ className: "ncua-sub-title__title-area",
30
+ children: [required && (0, _jsxRuntime.jsx)("span", {
31
+ className: "ncua-sub-title__required-marker",
32
+ children: "*"
33
+ }), (0, _jsxRuntime.jsx)("span", {
34
+ className: "ncua-sub-title__title",
35
+ children: title
36
+ }), tooltip && (0, _jsxRuntime.jsx)(_Tooltip.Tooltip, {
37
+ content: tooltip,
38
+ size: "sm",
39
+ position: "right",
40
+ hideArrow: true
41
+ })]
42
+ }), action && (0, _jsxRuntime.jsx)("div", {
43
+ className: "ncua-sub-title__action",
44
+ children: action
45
+ })]
46
+ }), description && (0, _jsxRuntime.jsx)("p", {
47
+ className: "ncua-sub-title__description",
48
+ children: description
49
+ }), error && (0, _jsxRuntime.jsx)("p", {
50
+ className: "ncua-sub-title__error",
51
+ children: error
52
+ })]
53
+ });
54
+ };
55
+ exports.SubTitle = SubTitle;
56
+ SubTitle.displayName = 'BlockHeader.SubTitle';
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _BlockHeader = require("./BlockHeader");
7
+ Object.keys(_BlockHeader).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _BlockHeader[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _BlockHeader[key];
14
+ }
15
+ });
16
+ });
17
+ var _SubTitle = require("./SubTitle");
18
+ Object.keys(_SubTitle).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _SubTitle[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _SubTitle[key];
25
+ }
26
+ });
27
+ });
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.PageTitle = void 0;
7
+ var _jsxRuntime = require("react/jsx-runtime");
8
+ var _uiAdminIcon = require("@ncds/ui-admin-icon");
9
+ var _classnames = _interopRequireDefault(require("classnames"));
10
+ var _react = require("react");
11
+ var _Button = require("../../action/button/Button");
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ const renderBreadcrumb = items => (0, _jsxRuntime.jsx)("nav", {
14
+ className: "ncua-page-title__breadcrumb",
15
+ "aria-label": "breadcrumb",
16
+ children: items.map((item, i) =>
17
+ // biome-ignore lint/suspicious/noArrayIndexKey: breadcrumb items may have duplicate labels
18
+ (0, _jsxRuntime.jsx)(_react.Fragment, {
19
+ children: i < items.length - 1 ? (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
20
+ children: [(0, _jsxRuntime.jsx)("span", {
21
+ className: "ncua-page-title__breadcrumb-item",
22
+ children: item.href ? (0, _jsxRuntime.jsx)("a", {
23
+ href: item.href,
24
+ children: item.label
25
+ }) : item.label
26
+ }), (0, _jsxRuntime.jsx)(_uiAdminIcon.ChevronRight, {
27
+ className: "ncua-page-title__breadcrumb-separator"
28
+ })]
29
+ }) : (0, _jsxRuntime.jsx)("span", {
30
+ className: "ncua-page-title__breadcrumb-current",
31
+ children: item.label
32
+ })
33
+ }, i))
34
+ });
35
+ const renderBackButton = onBack => (0, _jsxRuntime.jsx)(_Button.Button, {
36
+ label: "",
37
+ hierarchy: "secondary-gray",
38
+ size: "xs",
39
+ onlyIcon: true,
40
+ leadingIcon: {
41
+ type: 'icon',
42
+ icon: _uiAdminIcon.ChevronLeft
43
+ },
44
+ onClick: onBack,
45
+ "aria-label": "\uC774\uC804 \uD398\uC774\uC9C0\uB85C \uB3CC\uC544\uAC00\uAE30",
46
+ className: "ncua-page-title__back-btn"
47
+ });
48
+ const PageTitle = _ref => {
49
+ let {
50
+ title,
51
+ variant = 'default',
52
+ breadcrumbItems,
53
+ onBack,
54
+ guideButton,
55
+ primaryAction,
56
+ secondaryAction,
57
+ className,
58
+ ...rest
59
+ } = _ref;
60
+ const isFixed = variant === 'fixed' || variant === 'fixed-detail';
61
+ const isDetail = variant === 'detail' || variant === 'fixed-detail';
62
+ const hasBreadcrumb = !isFixed && breadcrumbItems && breadcrumbItems.length > 0;
63
+ return (0, _jsxRuntime.jsx)("header", {
64
+ className: (0, _classnames.default)('ncua-page-title', {
65
+ 'ncua-page-title--fixed': isFixed
66
+ }, className),
67
+ ...rest,
68
+ children: (0, _jsxRuntime.jsx)("div", {
69
+ className: "ncua-page-title__page-header",
70
+ children: (0, _jsxRuntime.jsxs)("div", {
71
+ className: (0, _classnames.default)('ncua-page-title__header', {
72
+ 'ncua-page-title__header--has-breadcrumb': hasBreadcrumb
73
+ }),
74
+ children: [(0, _jsxRuntime.jsxs)("div", {
75
+ className: "ncua-page-title__container",
76
+ children: [hasBreadcrumb && renderBreadcrumb(breadcrumbItems), (0, _jsxRuntime.jsxs)("div", {
77
+ className: "ncua-page-title__title-row",
78
+ children: [isDetail && onBack && renderBackButton(onBack), (0, _jsxRuntime.jsx)("h1", {
79
+ className: "ncua-page-title__title",
80
+ children: title
81
+ }), guideButton && (0, _jsxRuntime.jsx)("div", {
82
+ className: "ncua-page-title__guide-btn",
83
+ children: guideButton
84
+ })]
85
+ })]
86
+ }), (secondaryAction || primaryAction) && (0, _jsxRuntime.jsxs)("div", {
87
+ className: "ncua-page-title__actions",
88
+ children: [secondaryAction, primaryAction]
89
+ })]
90
+ })
91
+ })
92
+ });
93
+ };
94
+ exports.PageTitle = PageTitle;
95
+ PageTitle.displayName = 'PageTitle';
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _PageTitle = require("./PageTitle");
7
+ Object.keys(_PageTitle).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _PageTitle[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _PageTitle[key];
14
+ }
15
+ });
16
+ });