@ncds/ui-admin 1.6.1 → 1.6.3
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/cjs/assets/scripts/comboBox.js +3 -3
- package/dist/cjs/assets/scripts/selectBox.js +2 -2
- package/dist/cjs/assets/scripts/utils/{selectbox/SelectBoxController.js → unifiedBox/UnifiedBoxController.js} +38 -38
- package/dist/cjs/assets/scripts/utils/{selectbox/UnifiedSelectBox.js → unifiedBox/UnifiedBoxManager.js} +42 -42
- package/dist/cjs/src/components/button/Button.js +0 -1
- package/dist/cjs/src/components/checkbox/CheckboxInput.js +0 -3
- package/dist/cjs/src/components/date-picker/DatePicker.js +5 -1
- package/dist/cjs/src/components/dot/Dot.js +1 -1
- package/dist/cjs/src/components/pagination/Pagination.js +1 -1
- package/dist/cjs/src/components/select/Select.js +0 -3
- package/dist/cjs/src/components/tab/HorizontalTab.js +1 -1
- package/dist/cjs/src/components/tab/VerticalTab.js +1 -1
- package/dist/cjs/src/types/side-slot.js +5 -0
- package/dist/esm/assets/scripts/comboBox.js +3 -3
- package/dist/esm/assets/scripts/selectBox.js +2 -2
- package/dist/esm/assets/scripts/utils/{selectbox/SelectBoxController.js → unifiedBox/UnifiedBoxController.js} +38 -38
- package/dist/esm/assets/scripts/utils/{selectbox/UnifiedSelectBox.js → unifiedBox/UnifiedBoxManager.js} +42 -42
- package/dist/esm/src/components/button/Button.js +0 -1
- package/dist/esm/src/components/checkbox/CheckboxInput.js +0 -3
- package/dist/esm/src/components/date-picker/DatePicker.js +5 -1
- package/dist/esm/src/components/dot/Dot.js +1 -1
- package/dist/esm/src/components/pagination/Pagination.js +1 -1
- package/dist/esm/src/components/select/Select.js +0 -3
- package/dist/esm/src/components/switch/Switch.js +1 -1
- package/dist/esm/src/components/tab/HorizontalTab.js +1 -1
- package/dist/esm/src/components/tab/VerticalTab.js +1 -1
- package/dist/esm/src/types/side-slot.js +1 -0
- package/dist/types/assets/scripts/comboBox.d.ts +3 -3
- package/dist/types/assets/scripts/modal/const/types.d.ts +1 -1
- package/dist/types/assets/scripts/selectBox.d.ts +1 -1
- package/dist/types/assets/scripts/utils/{selectbox/SelectBoxController.d.ts → unifiedBox/UnifiedBoxController.d.ts} +5 -5
- package/dist/types/assets/scripts/utils/{selectbox/UnifiedSelectBox.d.ts → unifiedBox/UnifiedBoxManager.d.ts} +6 -6
- package/dist/types/src/components/badge/BadgeGroup.d.ts +1 -1
- package/dist/types/src/components/button/Button.d.ts +13 -13
- package/dist/types/src/components/checkbox/Checkbox.d.ts +1 -2
- package/dist/types/src/components/checkbox/CheckboxInput.d.ts +0 -3
- package/dist/types/src/components/combobox/ComboBox.d.ts +3 -4
- package/dist/types/src/components/dot/Dot.d.ts +1 -1
- package/dist/types/src/components/dropdown/Dropdown.d.ts +1 -5
- package/dist/types/src/components/input/InputBase.d.ts +3 -3
- package/dist/types/src/components/input/NumberInput.d.ts +1 -1
- package/dist/types/src/components/modal/Modal.d.ts +2 -2
- package/dist/types/src/components/pagination/Pagination.d.ts +1 -1
- package/dist/types/src/components/progress-bar/types.d.ts +1 -1
- package/dist/types/src/components/radio/Radio.d.ts +1 -2
- package/dist/types/src/components/select/Select.d.ts +3 -7
- package/dist/types/src/components/selectbox/SelectBox.d.ts +3 -4
- package/dist/types/src/components/spinner/Spinner.d.ts +1 -1
- package/dist/types/src/components/tag/Tag.d.ts +1 -1
- package/dist/types/src/types/side-slot.d.ts +26 -0
- package/dist/ui-admin/assets/styles/style.css +22 -40
- package/package.json +1 -1
- /package/dist/cjs/assets/scripts/utils/{selectbox → unifiedBox}/DOMRenderer.js +0 -0
- /package/dist/cjs/assets/scripts/utils/{selectbox → unifiedBox}/DropdownModel.js +0 -0
- /package/dist/esm/assets/scripts/utils/{selectbox → unifiedBox}/DOMRenderer.js +0 -0
- /package/dist/esm/assets/scripts/utils/{selectbox → unifiedBox}/DropdownModel.js +0 -0
- /package/dist/types/assets/scripts/utils/{selectbox → unifiedBox}/DOMRenderer.d.ts +0 -0
- /package/dist/types/assets/scripts/utils/{selectbox → unifiedBox}/DropdownModel.d.ts +0 -0
|
@@ -26,9 +26,6 @@ var __rest = void 0 && (void 0).__rest || function (s, e) {
|
|
|
26
26
|
}
|
|
27
27
|
return t;
|
|
28
28
|
};
|
|
29
|
-
/**
|
|
30
|
-
* 현재 destructive 속성은 현재 디자인 시스템에 존재하지 않으니 사용하지 않는 것을 권장합니다.
|
|
31
|
-
*/
|
|
32
29
|
var CheckboxInput = exports.CheckboxInput = /*#__PURE__*/(0, _react.forwardRef)(function (_a, ref) {
|
|
33
30
|
var _b = _a.size,
|
|
34
31
|
size = _b === void 0 ? 'xs' : _b,
|
|
@@ -133,6 +133,9 @@ var DatePicker = exports.DatePicker = /*#__PURE__*/(0, _react.forwardRef)(functi
|
|
|
133
133
|
var instance = flatpickrInstanceRef.current;
|
|
134
134
|
if (!instance) return;
|
|
135
135
|
if (!input || input.trim() === '') {
|
|
136
|
+
target.value = '';
|
|
137
|
+
instance.setDate('', false);
|
|
138
|
+
onChangeDate('');
|
|
136
139
|
return;
|
|
137
140
|
}
|
|
138
141
|
// 숫자가 최소 하나는 포함되어야 함 (하이픈만 있는 경우 방지)
|
|
@@ -323,7 +326,8 @@ var DatePicker = exports.DatePicker = /*#__PURE__*/(0, _react.forwardRef)(functi
|
|
|
323
326
|
enableTime = _b.enableTime,
|
|
324
327
|
enableSeconds = _b.enableSeconds,
|
|
325
328
|
noCalendar = _b.noCalendar,
|
|
326
|
-
|
|
329
|
+
render = _b.render,
|
|
330
|
+
inputProps = __rest(_b, ["allowInput", "dateFormat", "minDate", "maxDate", "enableTime", "enableSeconds", "noCalendar", "render"]);
|
|
327
331
|
return (0, _jsxRuntime.jsx)(_CustomInput.CustomInput, __assign({}, inputProps, {
|
|
328
332
|
id: inputId,
|
|
329
333
|
iconSize: size,
|
|
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.Dot = void 0;
|
|
7
7
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
8
|
-
var _react = require("react");
|
|
9
8
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
9
|
+
var _react = require("react");
|
|
10
10
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
11
|
var __assign = void 0 && (void 0).__assign || function () {
|
|
12
12
|
__assign = Object.assign || function (t) {
|
|
@@ -27,9 +27,6 @@ var __rest = void 0 && (void 0).__rest || function (s, e) {
|
|
|
27
27
|
}
|
|
28
28
|
return t;
|
|
29
29
|
};
|
|
30
|
-
/**
|
|
31
|
-
* 현재 icon 속성은 현재 디자인 시스템에 존재하지 않으니 사용하지 않는 것을 권장합니다.
|
|
32
|
-
*/
|
|
33
30
|
var Select = exports.Select = /*#__PURE__*/(0, _react.forwardRef)(function (_a, ref) {
|
|
34
31
|
var placeholder = _a.placeholder,
|
|
35
32
|
_b = _a.disabledPlaceholder,
|
|
@@ -48,7 +48,7 @@ var HorizontalTab = function (_a) {
|
|
|
48
48
|
spaceBetween: getTabGap(type)
|
|
49
49
|
}, {
|
|
50
50
|
children: menus.map(function (menu) {
|
|
51
|
-
var isActive = 'href' in menu && menu.href ? menu.href
|
|
51
|
+
var isActive = 'href' in menu && menu.href ? menu.href === activeTab : menu.id === activeTab;
|
|
52
52
|
return (0, _jsxRuntime.jsx)(_react.SwiperSlide, __assign({
|
|
53
53
|
className: "ncua-horizontal-tab__item"
|
|
54
54
|
}, {
|
|
@@ -48,7 +48,7 @@ var VerticalTab = function (_a) {
|
|
|
48
48
|
className: (0, _classnames.default)('ncua-vertical-tab', "ncua-vertical-tab--".concat(type))
|
|
49
49
|
}, {
|
|
50
50
|
children: menus === null || menus === void 0 ? void 0 : menus.map(function (menu) {
|
|
51
|
-
var isActive = 'href' in menu && menu.href ? menu.href
|
|
51
|
+
var isActive = 'href' in menu && menu.href ? menu.href === activeTab : menu.id === activeTab;
|
|
52
52
|
return (0, _jsxRuntime.jsx)(_TabButton.TabButton, __assign({}, menu, {
|
|
53
53
|
isActive: isActive,
|
|
54
54
|
tabButtonType: type,
|
|
@@ -17,7 +17,7 @@ var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
|
|
|
17
17
|
}
|
|
18
18
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
19
19
|
};
|
|
20
|
-
import {
|
|
20
|
+
import { UnifiedBoxManager } from './utils/unifiedBox/UnifiedBoxManager';
|
|
21
21
|
var ComboBox = /** @class */function () {
|
|
22
22
|
function ComboBox(element, config) {
|
|
23
23
|
if (config === void 0) {
|
|
@@ -74,7 +74,7 @@ var ComboBox = /** @class */function () {
|
|
|
74
74
|
(_a = config.onChange) === null || _a === void 0 ? void 0 : _a.call(config, value);
|
|
75
75
|
}
|
|
76
76
|
});
|
|
77
|
-
this.unifiedSelectBox = new
|
|
77
|
+
this.unifiedSelectBox = new UnifiedBoxManager(element, unifiedConfig);
|
|
78
78
|
// 초기화 완료 (다음 이벤트 루프에서 실행)
|
|
79
79
|
setTimeout(function () {
|
|
80
80
|
_this.isInitializing = false;
|
|
@@ -229,7 +229,7 @@ var ComboBox = /** @class */function () {
|
|
|
229
229
|
};
|
|
230
230
|
// ComboBox 특화 메서드들
|
|
231
231
|
ComboBox.prototype.clearInput = function () {
|
|
232
|
-
//
|
|
232
|
+
// UnifiedBoxManager의 handleClearInput과 동일한 로직
|
|
233
233
|
this.unifiedSelectBox.close();
|
|
234
234
|
};
|
|
235
235
|
ComboBox.prototype.getDebugInfo = function () {
|
|
@@ -8,7 +8,7 @@ var __assign = this && this.__assign || function () {
|
|
|
8
8
|
};
|
|
9
9
|
return __assign.apply(this, arguments);
|
|
10
10
|
};
|
|
11
|
-
import {
|
|
11
|
+
import { UnifiedBoxManager } from './utils/unifiedBox/UnifiedBoxManager';
|
|
12
12
|
var SelectBox = /** @class */function () {
|
|
13
13
|
function SelectBox(element, config) {
|
|
14
14
|
if (config === void 0) {
|
|
@@ -67,7 +67,7 @@ var SelectBox = /** @class */function () {
|
|
|
67
67
|
(_a = config.onChange) === null || _a === void 0 ? void 0 : _a.call(config, realValue);
|
|
68
68
|
}
|
|
69
69
|
});
|
|
70
|
-
this.unifiedSelectBox = new
|
|
70
|
+
this.unifiedSelectBox = new UnifiedBoxManager(element, unifiedConfig);
|
|
71
71
|
// 초기화 완료 (다음 이벤트 루프에서 실행)
|
|
72
72
|
setTimeout(function () {
|
|
73
73
|
_this.isInitializing = false;
|
|
@@ -12,8 +12,8 @@ var __assign = this && this.__assign || function () {
|
|
|
12
12
|
* SelectBox 통합 컨트롤러
|
|
13
13
|
* 이벤트 처리, UI 상태 제어, 사용자 인터랙션 담당
|
|
14
14
|
*/
|
|
15
|
-
var
|
|
16
|
-
function
|
|
15
|
+
var UnifiedBoxController = /** @class */function () {
|
|
16
|
+
function UnifiedBoxController(config) {
|
|
17
17
|
this.isOpen = false;
|
|
18
18
|
this.focusedIndex = -1;
|
|
19
19
|
this.isKeyboardNavigation = false;
|
|
@@ -32,7 +32,7 @@ var SelectBoxController = /** @class */function () {
|
|
|
32
32
|
/**
|
|
33
33
|
* 상태 변경 리스너 (Observer Pattern)
|
|
34
34
|
*/
|
|
35
|
-
|
|
35
|
+
UnifiedBoxController.prototype.onStateChange = function (newState, changedFields) {
|
|
36
36
|
var _a, _b;
|
|
37
37
|
// 드롭다운 열기/닫기 상태 동기화
|
|
38
38
|
if (changedFields.includes('isOpen')) {
|
|
@@ -58,7 +58,7 @@ var SelectBoxController = /** @class */function () {
|
|
|
58
58
|
/**
|
|
59
59
|
* 이벤트 핸들러 설정
|
|
60
60
|
*/
|
|
61
|
-
|
|
61
|
+
UnifiedBoxController.prototype.setupEventHandlers = function () {
|
|
62
62
|
var _this = this;
|
|
63
63
|
// 외부 클릭 핸들러
|
|
64
64
|
this.outsideClickHandler = function (e) {
|
|
@@ -88,7 +88,7 @@ var SelectBoxController = /** @class */function () {
|
|
|
88
88
|
/**
|
|
89
89
|
* 드롭다운 열기
|
|
90
90
|
*/
|
|
91
|
-
|
|
91
|
+
UnifiedBoxController.prototype.open = function () {
|
|
92
92
|
var _a, _b;
|
|
93
93
|
if (this.config.disabled || this.isOpen) return;
|
|
94
94
|
this.config.model.setOpen(true);
|
|
@@ -101,7 +101,7 @@ var SelectBoxController = /** @class */function () {
|
|
|
101
101
|
/**
|
|
102
102
|
* 드롭다운 닫기
|
|
103
103
|
*/
|
|
104
|
-
|
|
104
|
+
UnifiedBoxController.prototype.close = function () {
|
|
105
105
|
var _a, _b;
|
|
106
106
|
if (!this.isOpen) return;
|
|
107
107
|
this.config.model.setOpen(false);
|
|
@@ -114,7 +114,7 @@ var SelectBoxController = /** @class */function () {
|
|
|
114
114
|
/**
|
|
115
115
|
* 드롭다운 토글
|
|
116
116
|
*/
|
|
117
|
-
|
|
117
|
+
UnifiedBoxController.prototype.toggle = function () {
|
|
118
118
|
if (this.isOpen) {
|
|
119
119
|
this.close();
|
|
120
120
|
} else {
|
|
@@ -124,7 +124,7 @@ var SelectBoxController = /** @class */function () {
|
|
|
124
124
|
/**
|
|
125
125
|
* 키보드 입력 처리
|
|
126
126
|
*/
|
|
127
|
-
|
|
127
|
+
UnifiedBoxController.prototype.handleKeyDown = function (event) {
|
|
128
128
|
var state = this.config.model.getState();
|
|
129
129
|
switch (event.key) {
|
|
130
130
|
case 'ArrowDown':
|
|
@@ -167,7 +167,7 @@ var SelectBoxController = /** @class */function () {
|
|
|
167
167
|
/**
|
|
168
168
|
* 옵션 검색
|
|
169
169
|
*/
|
|
170
|
-
|
|
170
|
+
UnifiedBoxController.prototype.searchOption = function (char) {
|
|
171
171
|
var state = this.config.model.getState();
|
|
172
172
|
var options = state.filteredOptions;
|
|
173
173
|
var startIndex = this.focusedIndex >= 0 ? this.focusedIndex + 1 : 0;
|
|
@@ -186,13 +186,13 @@ var SelectBoxController = /** @class */function () {
|
|
|
186
186
|
/**
|
|
187
187
|
* 드롭다운 표시/숨김 업데이트
|
|
188
188
|
*/
|
|
189
|
-
|
|
189
|
+
UnifiedBoxController.prototype.updateDropdownVisibility = function (isOpen) {
|
|
190
190
|
this.config.dropdownElement.style.display = isOpen ? 'block' : 'none';
|
|
191
191
|
};
|
|
192
192
|
/**
|
|
193
193
|
* 옵션 표시 업데이트
|
|
194
194
|
*/
|
|
195
|
-
|
|
195
|
+
UnifiedBoxController.prototype.updateOptionsDisplay = function (state) {
|
|
196
196
|
var hasFilteredOptions = state.filteredOptions.length > 0;
|
|
197
197
|
var countChanged = this.lastFilteredOptionsCount !== state.filteredOptions.length;
|
|
198
198
|
// 빈 옵션일 때 해시 초기화 및 전체 렌더링
|
|
@@ -269,7 +269,7 @@ var SelectBoxController = /** @class */function () {
|
|
|
269
269
|
/**
|
|
270
270
|
* 포커스된 옵션 업데이트
|
|
271
271
|
*/
|
|
272
|
-
|
|
272
|
+
UnifiedBoxController.prototype.updateFocusedOption = function (focusedIndex) {
|
|
273
273
|
this.optionElements.forEach(function (element, index) {
|
|
274
274
|
if (index === focusedIndex) {
|
|
275
275
|
element.classList.add('ncua-select-dropdown__option--focused');
|
|
@@ -284,7 +284,7 @@ var SelectBoxController = /** @class */function () {
|
|
|
284
284
|
/**
|
|
285
285
|
* 옵션 클릭 이벤트 핸들러 등록
|
|
286
286
|
*/
|
|
287
|
-
|
|
287
|
+
UnifiedBoxController.prototype.attachOptionEventHandlers = function () {
|
|
288
288
|
var _this = this;
|
|
289
289
|
// 기존 이벤트 리스너 제거
|
|
290
290
|
this.removeOptionEventHandlers();
|
|
@@ -327,7 +327,7 @@ var SelectBoxController = /** @class */function () {
|
|
|
327
327
|
/**
|
|
328
328
|
* 옵션 이벤트 핸들러 제거
|
|
329
329
|
*/
|
|
330
|
-
|
|
330
|
+
UnifiedBoxController.prototype.removeOptionEventHandlers = function () {
|
|
331
331
|
this.optionElements.forEach(function (element) {
|
|
332
332
|
var clickHandler = element._clickHandler;
|
|
333
333
|
var hoverHandler = element._hoverHandler;
|
|
@@ -344,7 +344,7 @@ var SelectBoxController = /** @class */function () {
|
|
|
344
344
|
/**
|
|
345
345
|
* 옵션 업데이트가 필요한지 판단
|
|
346
346
|
*/
|
|
347
|
-
|
|
347
|
+
UnifiedBoxController.prototype.shouldUpdateOptions = function (changedFields) {
|
|
348
348
|
return changedFields.some(function (field) {
|
|
349
349
|
return ['options', 'filteredOptions', 'selectedValues', 'showAllItems'].includes(field);
|
|
350
350
|
});
|
|
@@ -352,20 +352,20 @@ var SelectBoxController = /** @class */function () {
|
|
|
352
352
|
/**
|
|
353
353
|
* 외부 클릭 감지 활성화
|
|
354
354
|
*/
|
|
355
|
-
|
|
355
|
+
UnifiedBoxController.prototype.enableOutsideClick = function () {
|
|
356
356
|
document.addEventListener('mousedown', this.outsideClickHandler);
|
|
357
357
|
};
|
|
358
358
|
/**
|
|
359
359
|
* 외부 클릭 감지 비활성화
|
|
360
360
|
*/
|
|
361
|
-
|
|
361
|
+
UnifiedBoxController.prototype.disableOutsideClick = function () {
|
|
362
362
|
document.removeEventListener('mousedown', this.outsideClickHandler);
|
|
363
363
|
};
|
|
364
364
|
/**
|
|
365
365
|
* 스크롤 잠금 활성화 (드롭다운 내부 스크롤은 허용)
|
|
366
366
|
* ComboBox 또는 multiple 모드에서는 스크롤 잠금 비활성화
|
|
367
367
|
*/
|
|
368
|
-
|
|
368
|
+
UnifiedBoxController.prototype.enableScrollLock = function () {
|
|
369
369
|
var _this = this;
|
|
370
370
|
// ComboBox 또는 multiple 모드에서는 스크롤 잠금 비활성화
|
|
371
371
|
if (this.config.type === 'combobox' || this.config.model.isMultiple()) {
|
|
@@ -431,7 +431,7 @@ var SelectBoxController = /** @class */function () {
|
|
|
431
431
|
/**
|
|
432
432
|
* 스크롤 가능한 부모 요소 찾기
|
|
433
433
|
*/
|
|
434
|
-
|
|
434
|
+
UnifiedBoxController.prototype.findScrollableParent = function (element, boundary) {
|
|
435
435
|
var current = element;
|
|
436
436
|
while (current && current !== boundary && boundary.contains(current)) {
|
|
437
437
|
var computedStyle = window.getComputedStyle(current);
|
|
@@ -450,7 +450,7 @@ var SelectBoxController = /** @class */function () {
|
|
|
450
450
|
/**
|
|
451
451
|
* 스크롤 잠금 해제
|
|
452
452
|
*/
|
|
453
|
-
|
|
453
|
+
UnifiedBoxController.prototype.disableScrollLock = function () {
|
|
454
454
|
if (this.scrollLockHandlers) {
|
|
455
455
|
document.removeEventListener('wheel', this.scrollLockHandlers.wheel);
|
|
456
456
|
document.removeEventListener('touchmove', this.scrollLockHandlers.touchmove);
|
|
@@ -461,7 +461,7 @@ var SelectBoxController = /** @class */function () {
|
|
|
461
461
|
/**
|
|
462
462
|
* 마우스 호버 처리 (외부에서 호출용)
|
|
463
463
|
*/
|
|
464
|
-
|
|
464
|
+
UnifiedBoxController.prototype.handleMouseHover = function (index) {
|
|
465
465
|
if (!this.isKeyboardNavigation) {
|
|
466
466
|
this.config.model.setFocusedIndex(index);
|
|
467
467
|
}
|
|
@@ -469,7 +469,7 @@ var SelectBoxController = /** @class */function () {
|
|
|
469
469
|
/**
|
|
470
470
|
* 옵션 배열 업데이트
|
|
471
471
|
*/
|
|
472
|
-
|
|
472
|
+
UnifiedBoxController.prototype.updateOptions = function (options) {
|
|
473
473
|
var _this = this;
|
|
474
474
|
this.config.model.updateOptions(options);
|
|
475
475
|
// 스크롤 리스너는 이미 등록되어 있으므로 제거/재등록 불필요
|
|
@@ -482,24 +482,24 @@ var SelectBoxController = /** @class */function () {
|
|
|
482
482
|
});
|
|
483
483
|
}
|
|
484
484
|
};
|
|
485
|
-
|
|
485
|
+
UnifiedBoxController.prototype.getIsOpen = function () {
|
|
486
486
|
return this.config.model.getState().isOpen;
|
|
487
487
|
};
|
|
488
|
-
|
|
488
|
+
UnifiedBoxController.prototype.setFocus = function (index) {
|
|
489
489
|
this.config.model.setFocusedIndex(index);
|
|
490
490
|
};
|
|
491
|
-
|
|
491
|
+
UnifiedBoxController.prototype.getFocusedIndex = function () {
|
|
492
492
|
return this.config.model.getState().focusedIndex;
|
|
493
493
|
};
|
|
494
494
|
/**
|
|
495
495
|
* DropdownUtils 호환을 위한 정적 팩토리 메서드
|
|
496
496
|
*/
|
|
497
|
-
|
|
497
|
+
UnifiedBoxController.createFromDropdownConfig = function (config) {
|
|
498
498
|
// DropdownModel 생성
|
|
499
499
|
var model = new (require('./DropdownModel').DropdownModel)(config.options || [], false);
|
|
500
500
|
// DOMRenderer 생성
|
|
501
501
|
var renderer = new (require('./DOMRenderer').DOMRenderer)();
|
|
502
|
-
//
|
|
502
|
+
// UnifiedBoxController 생성
|
|
503
503
|
var controllerConfig = {
|
|
504
504
|
triggerElement: config.triggerElement,
|
|
505
505
|
dropdownElement: config.dropdownElement,
|
|
@@ -521,13 +521,13 @@ var SelectBoxController = /** @class */function () {
|
|
|
521
521
|
if (index >= 0) (_c = config.onOptionSelect) === null || _c === void 0 ? void 0 : _c.call(config, index);
|
|
522
522
|
}
|
|
523
523
|
};
|
|
524
|
-
return new
|
|
524
|
+
return new UnifiedBoxController(controllerConfig);
|
|
525
525
|
};
|
|
526
526
|
/**
|
|
527
527
|
* 드롭다운 위치 조정 (화면 크기에 따라 up/down 방향 결정)
|
|
528
528
|
* 단일 선택 모드에서만 적용
|
|
529
529
|
*/
|
|
530
|
-
|
|
530
|
+
UnifiedBoxController.prototype.adjustDropdownPosition = function () {
|
|
531
531
|
if (!this.config.dropdownElement || !this.config.triggerElement) return;
|
|
532
532
|
// ComboBox 또는 multiple 모드에서는 위치 조정 비활성화
|
|
533
533
|
if (this.config.type === 'combobox' || this.config.model.isMultiple()) {
|
|
@@ -552,7 +552,7 @@ var SelectBoxController = /** @class */function () {
|
|
|
552
552
|
/**
|
|
553
553
|
* 드롭다운 위치 계산 (React dropdownUtils.ts 로직 참고)
|
|
554
554
|
*/
|
|
555
|
-
|
|
555
|
+
UnifiedBoxController.prototype.calculateDropdownPosition = function () {
|
|
556
556
|
if (!this.config.triggerElement || !this.config.dropdownElement) {
|
|
557
557
|
return {
|
|
558
558
|
direction: 'down',
|
|
@@ -580,7 +580,7 @@ var SelectBoxController = /** @class */function () {
|
|
|
580
580
|
/**
|
|
581
581
|
* 드롭다운 예상 높이 계산
|
|
582
582
|
*/
|
|
583
|
-
|
|
583
|
+
UnifiedBoxController.prototype.estimateDropdownHeight = function () {
|
|
584
584
|
var itemHeight = 40; // 대략적인 옵션 항목 높이
|
|
585
585
|
var itemCount = this.config.model.getState().filteredOptions.length || this.config.model.getState().options.length;
|
|
586
586
|
return Math.min(itemCount * itemHeight, this.config.renderConfig.maxHeight);
|
|
@@ -588,7 +588,7 @@ var SelectBoxController = /** @class */function () {
|
|
|
588
588
|
/**
|
|
589
589
|
* 드롭다운 세부 위치 조정 (뷰포트 경계 처리)
|
|
590
590
|
*/
|
|
591
|
-
|
|
591
|
+
UnifiedBoxController.prototype.adjustDropdownPositionDetails = function (dropdownElement) {
|
|
592
592
|
var dropdownRect = dropdownElement.getBoundingClientRect();
|
|
593
593
|
var viewportWidth = window.innerWidth;
|
|
594
594
|
var viewportHeight = window.innerHeight;
|
|
@@ -611,7 +611,7 @@ var SelectBoxController = /** @class */function () {
|
|
|
611
611
|
/**
|
|
612
612
|
* 스크롤 바닥 감지 활성화
|
|
613
613
|
*/
|
|
614
|
-
|
|
614
|
+
UnifiedBoxController.prototype.enableScrollBottomDetection = function () {
|
|
615
615
|
var _this = this;
|
|
616
616
|
if (!this.config.onScrollBottom) return;
|
|
617
617
|
// 이미 리스너가 등록되어 있으면 중복 등록 방지
|
|
@@ -641,7 +641,7 @@ var SelectBoxController = /** @class */function () {
|
|
|
641
641
|
/**
|
|
642
642
|
* 스크롤 바닥 감지 비활성화
|
|
643
643
|
*/
|
|
644
|
-
|
|
644
|
+
UnifiedBoxController.prototype.disableScrollBottomDetection = function () {
|
|
645
645
|
if (this.scrollBottomHandler) {
|
|
646
646
|
var optionsList = this.config.dropdownElement.querySelector('.ncua-select-dropdown__options');
|
|
647
647
|
if (optionsList) {
|
|
@@ -653,7 +653,7 @@ var SelectBoxController = /** @class */function () {
|
|
|
653
653
|
/**
|
|
654
654
|
* disabled 상태 설정
|
|
655
655
|
*/
|
|
656
|
-
|
|
656
|
+
UnifiedBoxController.prototype.setDisabled = function (disabled) {
|
|
657
657
|
this.config.disabled = disabled;
|
|
658
658
|
// disabled로 설정될 때 드롭다운이 열려있으면 닫기
|
|
659
659
|
if (disabled && this.isOpen) {
|
|
@@ -663,7 +663,7 @@ var SelectBoxController = /** @class */function () {
|
|
|
663
663
|
/**
|
|
664
664
|
* 정리
|
|
665
665
|
*/
|
|
666
|
-
|
|
666
|
+
UnifiedBoxController.prototype.destroy = function () {
|
|
667
667
|
this.config.model.removeListener(this);
|
|
668
668
|
this.disableOutsideClick();
|
|
669
669
|
this.disableScrollLock();
|
|
@@ -671,6 +671,6 @@ var SelectBoxController = /** @class */function () {
|
|
|
671
671
|
this.disableScrollBottomDetection(); // 스크롤 감지 정리
|
|
672
672
|
this.config.triggerElement.removeEventListener('keydown', this.keyDownHandler);
|
|
673
673
|
};
|
|
674
|
-
return
|
|
674
|
+
return UnifiedBoxController;
|
|
675
675
|
}();
|
|
676
|
-
export {
|
|
676
|
+
export { UnifiedBoxController };
|