@iyulab/components 1.5.1 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +1 -1
  3. package/dist/_virtual/{_@oxc-project_runtime@0.138.0 → _@oxc-project_runtime@0.139.0}/helpers/esm/decorate.js +1 -1
  4. package/dist/_virtual/{_@oxc-project_runtime@0.138.0 → _@oxc-project_runtime@0.139.0}/helpers/esm/decorateMetadata.js +1 -1
  5. package/dist/components/UFloatingElement.js +2 -2
  6. package/dist/components/UFormControlElement.d.ts +3 -1
  7. package/dist/components/UFormControlElement.js +3 -3
  8. package/dist/components/UOverlayElement.js +2 -2
  9. package/dist/components/alert/UAlert.js +2 -2
  10. package/dist/components/avatar/UAvatar.js +2 -2
  11. package/dist/components/badge/UBadge.js +2 -2
  12. package/dist/components/breadcrumb/UBreadcrumb.js +1 -1
  13. package/dist/components/breadcrumb-item/UBreadcrumbItem.js +2 -2
  14. package/dist/components/button/UButton.js +2 -2
  15. package/dist/components/button-group/UButtonGroup.js +2 -2
  16. package/dist/components/card/UCard.js +2 -2
  17. package/dist/components/carousel/UCarousel.js +2 -2
  18. package/dist/components/checkbox/UCheckbox.js +2 -2
  19. package/dist/components/chip/UChip.js +2 -2
  20. package/dist/components/copy-button/UCopyButton.d.ts +12 -2
  21. package/dist/components/copy-button/UCopyButton.js +19 -3
  22. package/dist/components/copy-button/UCopyButton.styles.js +5 -0
  23. package/dist/components/dialog/UDialog.js +2 -2
  24. package/dist/components/dialog/UDialog.styles.js +8 -2
  25. package/dist/components/divider/UDivider.js +2 -2
  26. package/dist/components/drawer/UDrawer.js +2 -2
  27. package/dist/components/drawer/UDrawer.styles.js +11 -6
  28. package/dist/components/field/UField.js +2 -2
  29. package/dist/components/form/UForm.js +2 -2
  30. package/dist/components/icon/UIcon.js +2 -2
  31. package/dist/components/icon-button/UIconButton.js +2 -2
  32. package/dist/components/input/UInput.js +2 -2
  33. package/dist/components/menu/UMenu.js +2 -2
  34. package/dist/components/menu-item/UMenuItem.js +2 -2
  35. package/dist/components/option/UOption.js +2 -2
  36. package/dist/components/panel/UPanel.js +2 -2
  37. package/dist/components/popover/UPopover.js +2 -2
  38. package/dist/components/progress-bar/UProgressBar.js +2 -2
  39. package/dist/components/progress-ring/UProgressRing.js +2 -2
  40. package/dist/components/radio/URadio.d.ts +7 -1
  41. package/dist/components/radio/URadio.js +10 -2
  42. package/dist/components/rating/URating.d.ts +11 -3
  43. package/dist/components/rating/URating.js +18 -4
  44. package/dist/components/select/USelect.d.ts +9 -1
  45. package/dist/components/select/USelect.js +22 -2
  46. package/dist/components/skeleton/USkeleton.js +2 -2
  47. package/dist/components/slider/USlider.d.ts +7 -1
  48. package/dist/components/slider/USlider.js +21 -3
  49. package/dist/components/spinner/USpinner.js +2 -2
  50. package/dist/components/split-panel/USplitPanel.js +2 -2
  51. package/dist/components/switch/USwitch.js +2 -2
  52. package/dist/components/tab/UTab.js +2 -2
  53. package/dist/components/tab-panel/UTabPanel.js +2 -2
  54. package/dist/components/tag/UTag.js +2 -2
  55. package/dist/components/textarea/UTextarea.js +2 -2
  56. package/dist/components/tooltip/UTooltip.js +2 -2
  57. package/dist/components/tree/UTree.js +2 -2
  58. package/dist/components/tree-item/UTreeItem.js +2 -2
  59. package/package.json +12 -12
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.7.0] - 2026-07-17
4
+
5
+ ### Fixed
6
+ - **폼 컨트롤 `change` 이벤트 의미론을 네이티브 규약으로 교정** — `USelect`/`URadio`/`URating`/`USlider`가 `updated()` 경로에서 무조건 `change`를 발화해, (1) 옵션 slot 등록 시 `value===undefined` 상태의 change가 발화되어 React 등 controlled 래퍼의 state를 오염시키고(옵션 등록 전 세팅한 초기값이 유실·서버 enum 기본값으로 저장되는 무증상 데이터 결함 — yesung 실측), (2) 프로그램적 `value` 세팅이 사용자 이벤트로 위장되어 에코 루프를 만들던 문제 수정. 이제 `change`는 **사용자 상호작용**(옵션 클릭·키보드·칩 제거·지우기·드래그 확정)에서만 발화한다(ISSUE-components-20260717-uselect-value-before-options). `UInput`(blur 발화)·`UMenu`/`UTree`(핸들러 발화)는 원래 규약대로였으며 변경 없음.
7
+ - `USlider`: 문서("드래그 완료 후 발생")와 달리 **드래그 중 매 pointermove마다 change가 연사**되던 결함 수정 — 이제 `pointerup` 시 값이 실제로 바뀐 경우 1회 발화. 단일 select에서 동일 옵션 재선택, 선택된 라디오 재클릭도 네이티브와 동일하게 미발화.
8
+ - `USelect`/`URadio`/`URating`의 `onChangeValue()`가 `updated()` 내부에서 `validate()`→`requestUpdate()`를 호출해 v1.5.1 검증 아키텍처를 위반하고 "scheduled an update after an update completed" Lit 경고를 재유발하던 잔재 제거 — 검증 UI 갱신(`validate()`)은 사용자 상호작용 경로에서만 수행하고, 프로그램적 세팅은 base의 silent `setValidity()`로 internals만 갱신한다.
9
+ - **마크업 `value` attribute 선언이 일반 문자열에서 silently null이 되던 갭 수정** — base가 `type: Object`(JSON.parse)여서 `<u-input value="hello">`·`<u-select value="b">`가 null로 해석됐다. 기본 해석을 raw 문자열로 바꾸고, `u-rating`/`u-slider`는 숫자, `u-select`(multiple)/`u-slider`(range)는 JSON 배열(`value='["a","b"]'`)을 지원한다.
10
+ - `USlider` range 표시 텍스트의 구분자 인코딩 오염(`5 ??10`) → `5 ~ 10`으로 교정. `URating` min/max 주석 모지바케 정리.
11
+
12
+ ### Changed
13
+ - 프로그램적 `value` 세팅은 이제 `change` 발화·`invalid` 플래그 자동 갱신을 하지 않는다(`ElementInternals` validity는 계속 동기화됨). 프로그램적 변경 후 검증 UI 갱신이 필요하면 `validate()`를 명시 호출할 것. `value='"quoted"'` 형태(JSON 문자열)로 attribute를 우회 선언하던 경우 이제 따옴표 포함 raw 문자열로 해석된다.
14
+
15
+ ## [1.6.0] - 2026-07-16
16
+
17
+ ### Added
18
+ - `UCopyButton`(`u-copy-button`): **인라인 텍스트 라벨** 지원 — `label` prop을 지정하면 아이콘 옆에 보이는 텍스트 라벨을 렌더한다(예: `label="결과 복사"`). 지금까지 u-copy-button은 아이콘 전용(기본 슬롯은 툴팁으로 소비)이라 "📋 결과 복사"처럼 라벨이 붙은 복사 버튼을 표현할 수 없어, 소비자가 검증된 클립보드 로직(취소 가능 `copy` ClipboardEvent + copied 상태 + 아이콘 토글)을 재사용하지 못하고 자체 재구현하던 역량 갭을 해소(ISSUE-20260715-ucopybutton-no-inline-label). 비파괴 — `label` 미지정 시 기존 아이콘 전용 형태(및 기본 슬롯=툴팁 의미)를 그대로 유지한다. 라벨 지정 시 내부적으로 `u-button`(아이콘 prefix + 텍스트)으로 렌더하고, 클립보드 로직은 두 형태에서 동일하다. online-tools(NT-U4) dogfooding에서 발견.
19
+
20
+ ### Fixed
21
+ - `u-drawer`/`u-dialog`: **테마 토큰 미정의 시 패널이 투명하게 렌더**되어 모달이 "안 뜬 것처럼" 보이던 결함 수정(ISSUE-20260715-uoverlay-panel-token-no-fallback). backdrop(`--u-overlay-bg-color`)에는 폴백이 있는데 패널 배경/테두리(`--u-panel-bg-color`/`--u-border-color`)에는 폴백이 없어, `Theme.init()`로 토큰을 주입하지 않은 소비자에게 backdrop만 흐려지고 패널은 투명하게 떠 슬롯 콘텐츠가 뒤 페이지와 겹쳐 읽히던 footgun. backdrop과 동일 정책으로 패널 배경에 `Canvas`, 테두리에 `color-mix(in srgb, CanvasText 20%, Canvas)` CSS 시스템 컬러 폴백을 부여 — 토큰 미정의 소비자도 라이트·다크 자동 적응되는 가시 패널을 얻고, 토큰 정의 소비자는 기존과 동일(폴백 미사용). 실 브라우저 렌더 회귀 가드 추가. online-tools(NT-U2) dogfooding에서 발견.
22
+
3
23
  ## [1.5.1] - 2026-07-07
4
24
 
5
25
  ### Fixed
package/README.md CHANGED
@@ -60,7 +60,7 @@ npx skills add ./node_modules/@iyulab/components
60
60
 
61
61
  **Feedback** — `u-alert`, `u-badge`, `u-spinner`, `u-skeleton`, `u-progress-bar`, `u-progress-ring`
62
62
 
63
- **Buttons & Actions** — `u-button`, `u-button-group`, `u-icon-button`, `u-chip`
63
+ **Buttons & Actions** — `u-button`, `u-button-group`, `u-icon-button`, `u-copy-button`, `u-chip`
64
64
 
65
65
  **Form Controls** — `u-input`, `u-textarea`, `u-select`, `u-checkbox`, `u-radio`, `u-switch`, `u-slider`, `u-rating`, `u-field`, `u-form`, `u-option`
66
66
 
@@ -1,4 +1,4 @@
1
- //#region \0@oxc-project+runtime@0.138.0/helpers/esm/decorate.js
1
+ //#region \0@oxc-project+runtime@0.139.0/helpers/esm/decorate.js
2
2
  function __decorate(decorators, target, key, desc) {
3
3
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
4
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -1,4 +1,4 @@
1
- //#region \0@oxc-project+runtime@0.138.0/helpers/esm/decorateMetadata.js
1
+ //#region \0@oxc-project+runtime@0.139.0/helpers/esm/decorateMetadata.js
2
2
  function __decorateMetadata(k, v) {
3
3
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
4
4
  }
@@ -1,8 +1,8 @@
1
1
  import { UElement } from "./UElement.js";
2
2
  import { getParentElement, querySelectorAllWithin } from "../utilities/elements.js";
3
3
  import { styles } from "./UFloatingElement.styles.js";
4
- import __decorateMetadata from "../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
5
- import __decorate from "../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
4
+ import __decorateMetadata from "../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
5
+ import __decorate from "../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
6
6
  import { property, state } from "lit/decorators.js";
7
7
  import { arrow, autoPlacement, autoUpdate, computePosition, flip, offset, shift } from "@floating-ui/dom";
8
8
  //#region src/components/UFloatingElement.ts
@@ -23,7 +23,9 @@ export declare abstract class UFormControlElement<T> extends UElement {
23
23
  description?: string;
24
24
  /** 폼 제출 시 사용되는 이름 */
25
25
  name?: string;
26
- /** 폼 제출 시 사용되는 */
26
+ /** 폼 제출 시 사용되는 값. attribute 선언 시 기본은 raw 문자열로 해석한다 —
27
+ * (이전의 type: Object는 JSON.parse 실패로 일반 문자열 attribute가 silently null이 되는 갭이 있었다)
28
+ * string이 아닌 값 타입을 갖는 컨트롤(URating/USlider/USelect multiple)은 자신의 converter로 override한다. */
27
29
  value?: T;
28
30
  /**
29
31
  * ElementInternals는 폼과의 연동, 유효성 검사 상태 관리 등을 지원하는 네이티브 API입니다.
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "./UElement.js";
2
- import __decorateMetadata from "../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
4
4
  import { styles } from "./UFormControlElement.styles.js";
5
5
  import { property } from "lit/decorators.js";
6
6
  //#region src/components/UFormControlElement.ts
@@ -116,6 +116,6 @@ __decorate([property({ type: Boolean }), __decorateMetadata("design:type", Boole
116
116
  __decorate([property({ type: String }), __decorateMetadata("design:type", String)], UFormControlElement.prototype, "label", void 0);
117
117
  __decorate([property({ type: String }), __decorateMetadata("design:type", String)], UFormControlElement.prototype, "description", void 0);
118
118
  __decorate([property({ type: String }), __decorateMetadata("design:type", String)], UFormControlElement.prototype, "name", void 0);
119
- __decorate([property({ type: Object }), __decorateMetadata("design:type", Object)], UFormControlElement.prototype, "value", void 0);
119
+ __decorate([property(), __decorateMetadata("design:type", Object)], UFormControlElement.prototype, "value", void 0);
120
120
  //#endregion
121
121
  export { UFormControlElement };
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "./UElement.js";
2
- import __decorateMetadata from "../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
4
4
  import { OverlayManager } from "../utilities/OverlayManager.js";
5
5
  import { arrayAttrConverter } from "../utilities/converters.js";
6
6
  import { styles } from "./UOverlayElement.styles.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
4
4
  import "../button/UButton.js";
5
5
  import "../icon/UIcon.js";
6
6
  import { styles } from "./UAlert.styles.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
4
4
  import { styles } from "./UAvatar.styles.js";
5
5
  import { html } from "lit";
6
6
  import { customElement, property } from "lit/decorators.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
4
4
  import { styles } from "./UBadge.styles.js";
5
5
  import { html, nothing } from "lit";
6
6
  import { customElement, property } from "lit/decorators.js";
@@ -1,5 +1,5 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
3
3
  import "../icon/UIcon.js";
4
4
  import { styles } from "./UBreadcrumb.styles.js";
5
5
  import { html } from "lit";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
4
4
  import { styles } from "./UBreadcrumbItem.styles.js";
5
5
  import { html } from "lit";
6
6
  import { customElement, property } from "lit/decorators.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
4
4
  import "../spinner/USpinner.js";
5
5
  import { styles } from "./UButton.styles.js";
6
6
  import { html } from "lit";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
4
4
  import { UButton } from "../button/UButton.js";
5
5
  import { UIconButton } from "../icon-button/UIconButton.js";
6
6
  import { styles } from "./UButtonGroup.styles.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
4
4
  import { styles } from "./UCard.styles.js";
5
5
  import { html } from "lit";
6
6
  import { customElement, property } from "lit/decorators.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
4
4
  import "../button/UButton.js";
5
5
  import "../icon/UIcon.js";
6
6
  import { styles } from "./UCarousel.styles.js";
@@ -1,5 +1,5 @@
1
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
2
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
3
3
  import { UFormControlElement } from "../UFormControlElement.js";
4
4
  import "../icon/UIcon.js";
5
5
  import { Locale } from "../../utilities/Locale.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
4
4
  import "../button/UButton.js";
5
5
  import "../icon/UIcon.js";
6
6
  import "../tooltip/UTooltip.js";
@@ -4,14 +4,19 @@ import { ButtonVariant } from '../button/UButton.js';
4
4
  /**
5
5
  * 클릭 시 클립보드에 텍스트를 복사하는 버튼입니다. 복사 상태를 표시하기 위해 아이콘이 변경됩니다.
6
6
  *
7
- * @slot - 툴팁에 표시할 콘텐츠
7
+ * 가지 형태를 지원합니다:
8
+ * - **아이콘 전용**(기본): 아이콘만 표시하고, 기본 슬롯 콘텐츠는 툴팁으로 사용됩니다.
9
+ * - **아이콘 + 라벨**: `label`을 지정하면 아이콘 옆에 보이는 텍스트 라벨을 렌더합니다
10
+ * (예: "결과 복사"). 클립보드 로직은 두 형태에서 동일합니다.
11
+ *
12
+ * @slot - (아이콘 전용 형태에서) 툴팁에 표시할 콘텐츠. `label` 지정 시에는 사용되지 않습니다.
8
13
  *
9
14
  * @event copy - 클립보드에 실제로 쓰기 전에 발생하는 네이티브 ClipboardEvent.
10
15
  * `preventDefault()`로 복사를 취소하거나, `clipboardData.setData('text/plain', ...)`로 복사될 값을 바꿀 수 있음
11
16
  *
12
17
  * @csspart button - 내부 버튼 요소
13
18
  * @csspart icon - 아이콘 요소
14
- * @csspart tooltip - 툴팁 요소
19
+ * @csspart tooltip - 툴팁 요소 (아이콘 전용 형태)
15
20
  */
16
21
  export declare class UCopyButton extends UElement {
17
22
  static styles: import('lit').CSSResultGroup[];
@@ -31,6 +36,11 @@ export declare class UCopyButton extends UElement {
31
36
  delay: number;
32
37
  /** 복사할 텍스트를 설정합니다. */
33
38
  value?: string;
39
+ /**
40
+ * 아이콘 옆에 표시할 인라인 텍스트 라벨. 지정하면 아이콘 전용에서 아이콘+라벨 형태로 전환됩니다.
41
+ * 미지정(기본)이면 아이콘 전용 형태를 유지합니다.
42
+ */
43
+ label?: string;
34
44
  render(): import('lit-html').TemplateResult<1>;
35
45
  /**
36
46
  * 클립보드에 텍스트를 복사하는 메서드입니다.
@@ -1,6 +1,8 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
4
+ import "../button/UButton.js";
5
+ import "../icon/UIcon.js";
4
6
  import "../icon-button/UIconButton.js";
5
7
  import { styles } from "./UCopyButton.styles.js";
6
8
  import { html } from "lit";
@@ -46,6 +48,19 @@ var UCopyButton = class UCopyButton extends UElement {
46
48
  this.styles = [super.styles, styles];
47
49
  }
48
50
  render() {
51
+ const iconName = this.copied ? "check" : "copy";
52
+ if (this.label != null && this.label !== "") return html`
53
+ <u-button part="button"
54
+ exportparts="icon"
55
+ ?disabled=${this.disabled}
56
+ .variant=${this.variant}
57
+ .rounded=${this.rounded}
58
+ @click=${this.handleButtonClick}
59
+ >
60
+ <u-icon slot="prefix" part="icon" lib="internal" name=${iconName}></u-icon>
61
+ ${this.label}
62
+ </u-button>
63
+ `;
49
64
  return html`
50
65
  <u-icon-button part="button"
51
66
  exportparts="icon,tooltip"
@@ -55,7 +70,7 @@ var UCopyButton = class UCopyButton extends UElement {
55
70
  .tooltipPlacement=${this.tooltipPlacement}
56
71
  .tooltipOffset=${this.tooltipOffset}
57
72
  lib="internal"
58
- name=${this.copied ? "check" : "copy"}
73
+ name=${iconName}
59
74
  @click=${this.handleButtonClick}
60
75
  >
61
76
  <slot></slot>
@@ -89,6 +104,7 @@ __decorate([property({
89
104
  }), __decorateMetadata("design:type", Object)], UCopyButton.prototype, "tooltipOffset", void 0);
90
105
  __decorate([property({ type: Number }), __decorateMetadata("design:type", Number)], UCopyButton.prototype, "delay", void 0);
91
106
  __decorate([property({ type: String }), __decorateMetadata("design:type", String)], UCopyButton.prototype, "value", void 0);
107
+ __decorate([property({ type: String }), __decorateMetadata("design:type", String)], UCopyButton.prototype, "label", void 0);
92
108
  UCopyButton = __decorate([customElement("u-copy-button")], UCopyButton);
93
109
  //#endregion
94
110
  export { UCopyButton };
@@ -16,6 +16,11 @@ var styles = css`
16
16
  :host([copied]) u-icon-button {
17
17
  color: var(--u-green-500);
18
18
  }
19
+
20
+ /* 라벨 형태(아이콘+텍스트): 복사 완료 시 아이콘/텍스트를 성공색으로 강조 */
21
+ :host([copied]) u-button {
22
+ color: var(--u-green-500);
23
+ }
19
24
  `;
20
25
  //#endregion
21
26
  export { styles };
@@ -1,5 +1,5 @@
1
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
2
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
3
3
  import { UOverlayElement } from "../UOverlayElement.js";
4
4
  import "../button/UButton.js";
5
5
  import "../icon/UIcon.js";
@@ -61,9 +61,15 @@ var styles = css`
61
61
  flex-direction: column;
62
62
  max-width: 90%;
63
63
  max-height: 90%;
64
- border: 1px solid var(--u-border-color);
64
+ /*
65
+ * 토큰 폴백은 backdrop(--u-overlay-bg-color)과 동일 정책 — 테마 토큰 미정의
66
+ * 소비자도 패널이 보이도록 CSS 시스템 컬러로 폴백. Canvas/CanvasText는 OS/UA
67
+ * color-scheme 기준 라이트·다크 자동 적응(라이브러리 주입 테마와 별개).
68
+ * 테두리는 CanvasText 원색이 과해 옅게 혼합.
69
+ */
70
+ border: 1px solid var(--u-border-color, color-mix(in srgb, CanvasText 20%, Canvas));
65
71
  border-radius: 6px;
66
- background: var(--u-panel-bg-color);
72
+ background: var(--u-panel-bg-color, Canvas);
67
73
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
68
74
  pointer-events: auto;
69
75
  opacity: 0;
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
4
4
  import { styles } from "./UDivider.styles.js";
5
5
  import { html } from "lit";
6
6
  import { customElement, property } from "lit/decorators.js";
@@ -1,5 +1,5 @@
1
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
2
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
3
3
  import { UOverlayElement } from "../UOverlayElement.js";
4
4
  import "../button/UButton.js";
5
5
  import "../icon/UIcon.js";
@@ -30,11 +30,16 @@ var styles = css`
30
30
  }
31
31
  }
32
32
 
33
- /* placement별 border */
34
- :host([placement="left"]) .panel { border-right: 1px solid var(--u-border-color); }
35
- :host([placement="right"]) .panel { border-left: 1px solid var(--u-border-color); }
36
- :host([placement="top"]) .panel { border-bottom: 1px solid var(--u-border-color); }
37
- :host([placement="bottom"]) .panel { border-top: 1px solid var(--u-border-color); }
33
+ /*
34
+ * placement border. 토큰 폴백은 backdrop(--u-overlay-bg-color) 동일 정책 —
35
+ * 테마 토큰 미정의 소비자도 패널이 보이도록 CSS 시스템 컬러로 폴백한다.
36
+ * Canvas/CanvasText는 OS/UA color-scheme 기준으로 라이트·다크를 자동 적응
37
+ * (라이브러리 주입 테마와는 별개). 테두리는 CanvasText 원색이 과해 옅게 혼합.
38
+ */
39
+ :host([placement="left"]) .panel { border-right: 1px solid var(--u-border-color, color-mix(in srgb, CanvasText 20%, Canvas)); }
40
+ :host([placement="right"]) .panel { border-left: 1px solid var(--u-border-color, color-mix(in srgb, CanvasText 20%, Canvas)); }
41
+ :host([placement="top"]) .panel { border-bottom: 1px solid var(--u-border-color, color-mix(in srgb, CanvasText 20%, Canvas)); }
42
+ :host([placement="bottom"]) .panel { border-top: 1px solid var(--u-border-color, color-mix(in srgb, CanvasText 20%, Canvas)); }
38
43
 
39
44
  /* 닫힌 상태 */
40
45
  :host([placement="left"]) .panel { transform: translateX(-100%); }
@@ -51,7 +56,7 @@ var styles = css`
51
56
  .panel {
52
57
  display: flex;
53
58
  flex-direction: column;
54
- background: var(--u-panel-bg-color);
59
+ background: var(--u-panel-bg-color, Canvas);
55
60
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
56
61
  pointer-events: auto;
57
62
  /*
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
4
4
  import { styles } from "./UField.styles.js";
5
5
  import { html, nothing } from "lit";
6
6
  import { customElement, property } from "lit/decorators.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
4
4
  import { UFormControlElement } from "../UFormControlElement.js";
5
5
  import { arrayAttrConverter } from "../../utilities/converters.js";
6
6
  import { styles } from "./UForm.styles.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
4
4
  import { IconRegistry, getDefaultBaseUrl } from "../../utilities/icons.js";
5
5
  import { styles } from "./UIcon.styles.js";
6
6
  import { nothing } from "lit";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
4
4
  import "../button/UButton.js";
5
5
  import "../icon/UIcon.js";
6
6
  import "../tooltip/UTooltip.js";
@@ -1,5 +1,5 @@
1
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
2
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
3
3
  import { UFormControlElement } from "../UFormControlElement.js";
4
4
  import "../spinner/USpinner.js";
5
5
  import "../icon/UIcon.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
4
4
  import { UMenuItem } from "../menu-item/UMenuItem.js";
5
5
  import { styles } from "./UMenu.styles.js";
6
6
  import { html } from "lit";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
4
4
  import "../icon/UIcon.js";
5
5
  import { UDivider } from "../divider/UDivider.js";
6
6
  import "../popover/UPopover.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
4
4
  import "../icon/UIcon.js";
5
5
  import { styles } from "./UOption.styles.js";
6
6
  import { html, nothing } from "lit";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
4
4
  import { styles } from "./UPanel.styles.js";
5
5
  import { html } from "lit";
6
6
  import { customElement, property } from "lit/decorators.js";
@@ -1,5 +1,5 @@
1
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
2
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
3
3
  import { UFloatingElement } from "../UFloatingElement.js";
4
4
  import { arrayAttrConverter } from "../../utilities/converters.js";
5
5
  import { styles } from "./UPopover.styles.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
4
4
  import { styles } from "./UProgressBar.styles.js";
5
5
  import { html } from "lit";
6
6
  import { customElement, property, state } from "lit/decorators.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
4
4
  import { styles } from "./UProgressRing.styles.js";
5
5
  import { html } from "lit";
6
6
  import { customElement, property, state } from "lit/decorators.js";
@@ -11,7 +11,8 @@ export type RadioOrientation = "vertical" | "horizontal";
11
11
  * @csspart field - u-field 요소
12
12
  * @csspart container - 옵션들을 감싸는 컨테이너
13
13
  *
14
- * @event change - 선택 값이 변경될 때 발생
14
+ * @event change - 사용자 상호작용(옵션 클릭·키보드)으로 선택 값이 변경될 때 발생.
15
+ * 네이티브 라디오와 동일하게 프로그램적 value 세팅·옵션 등록으로는 발화하지 않는다.
15
16
  */
16
17
  export declare class URadio extends UFormControlElement<string> {
17
18
  static styles: import('lit').CSSResultGroup[];
@@ -30,6 +31,11 @@ export declare class URadio extends UFormControlElement<string> {
30
31
  private setup;
31
32
  private cleanup;
32
33
  private onChangeValue;
34
+ /** 사용자 상호작용으로 값이 바뀐 경로에서만 호출한다 — 프로그램적 value 세팅은
35
+ * 네이티브 폼 컨트롤과 동일하게 change를 발화하지 않는다.
36
+ * UI 재렌더를 동반한 validate()도 이 경로에서만 수행한다(v1.5.1 검증 아키텍처 —
37
+ * updated() 경로는 base의 silent setValidity()만 수행해 Lit 중복 업데이트를 피한다). */
38
+ private emitChange;
33
39
  private handleSlotChange;
34
40
  private handleOptionClick;
35
41
  private handleOptionKeyDown;
@@ -1,5 +1,5 @@
1
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
2
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
3
3
  import { UFormControlElement } from "../UFormControlElement.js";
4
4
  import { Locale } from "../../utilities/Locale.js";
5
5
  import "../field/UField.js";
@@ -25,7 +25,9 @@ var URadio = class URadio extends UFormControlElement {
25
25
  if (this.readonly || this.disabled) return;
26
26
  const option = e.currentTarget;
27
27
  if (option.disabled) return;
28
+ if (option.value === this.value) return;
28
29
  this.value = option.value;
30
+ this.emitChange();
29
31
  };
30
32
  this.handleOptionKeyDown = (e) => {
31
33
  if (this.readonly || this.disabled) return;
@@ -125,6 +127,12 @@ var URadio = class URadio extends UFormControlElement {
125
127
  option.selected = option.value === this.value;
126
128
  });
127
129
  this.internals?.setFormValue(this.value || "");
130
+ }
131
+ /** 사용자 상호작용으로 값이 바뀐 경로에서만 호출한다 — 프로그램적 value 세팅은
132
+ * 네이티브 폼 컨트롤과 동일하게 change를 발화하지 않는다.
133
+ * UI 재렌더를 동반한 validate()도 이 경로에서만 수행한다(v1.5.1 검증 아키텍처 —
134
+ * updated() 경로는 base의 silent setValidity()만 수행해 Lit 중복 업데이트를 피한다). */
135
+ emitChange() {
128
136
  if (!this.novalidate) this.validate();
129
137
  this.dispatchEvent(new Event("change", {
130
138
  bubbles: true,
@@ -14,16 +14,19 @@ import { UFormControlElement } from '../UFormControlElement.js';
14
14
  * @cssprop --rating-symbol-color - 활성화된 심볼 색상
15
15
  * @cssprop --rating-symbol-off-color - 비활성화된 심볼 색상
16
16
  *
17
- * @event change - 레이팅 변경 발생
17
+ * @event change - 사용자 상호작용(심볼 클릭·키보드)으로 레이팅 값이 변경될 발생.
18
+ * 프로그램적 value 세팅으로는 발화하지 않는다.
18
19
  */
19
20
  export declare class URating extends UFormControlElement<number> {
20
21
  static styles: import('lit').CSSResultGroup[];
21
- /** 理쒖냼 媛?*/
22
+ /** 최소 값 */
22
23
  min: number;
23
- /** 理쒕? 媛?*/
24
+ /** 최대 값 */
24
25
  max: number;
25
26
  /** 정밀도 (0.5 등) */
26
27
  precision: number;
28
+ /** 레이팅 값. attribute 선언 시 숫자로 해석한다. */
29
+ value?: number;
27
30
  private buffer;
28
31
  private symbol;
29
32
  private symbolOff;
@@ -35,6 +38,11 @@ export declare class URating extends UFormControlElement<number> {
35
38
  private isStepMismatch;
36
39
  reset(): void;
37
40
  private onChangeValue;
41
+ /** 사용자 상호작용으로 값이 바뀐 경로에서만 호출한다 — 프로그램적 value 세팅은
42
+ * 네이티브 폼 컨트롤과 동일하게 change를 발화하지 않는다.
43
+ * UI 재렌더를 동반한 validate()도 이 경로에서만 수행한다(v1.5.1 검증 아키텍처 —
44
+ * updated() 경로는 base의 silent setValidity()만 수행해 Lit 중복 업데이트를 피한다). */
45
+ private emitChange;
38
46
  private handleSlotChange;
39
47
  private handleSymbolPointerMove;
40
48
  private handleSymbolPointerLeave;
@@ -1,5 +1,5 @@
1
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
2
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
3
3
  import { UFormControlElement } from "../UFormControlElement.js";
4
4
  import "../icon/UIcon.js";
5
5
  import { Locale } from "../../utilities/Locale.js";
@@ -37,7 +37,10 @@ var URating = class URating extends UFormControlElement {
37
37
  if (this.disabled || this.readonly) return;
38
38
  const score = Number(e.currentTarget.dataset.score);
39
39
  const val = this.precision < 1 ? this.calibrate(e, score) : score;
40
- this.value = this.value === val ? 0 : val;
40
+ const next = this.value === val ? 0 : val;
41
+ if (next === this.value) return;
42
+ this.value = next;
43
+ this.emitChange();
41
44
  };
42
45
  this.handleSymbolKeydown = (e) => {
43
46
  if (this.disabled || this.readonly) return;
@@ -68,7 +71,11 @@ var URating = class URating extends UFormControlElement {
68
71
  case "Enter": {
69
72
  e.preventDefault();
70
73
  const score = Number(e.currentTarget.dataset.score);
71
- this.value = this.value === score ? 0 : score;
74
+ const next = this.value === score ? 0 : score;
75
+ if (next !== this.value) {
76
+ this.value = next;
77
+ this.emitChange();
78
+ }
72
79
  return;
73
80
  }
74
81
  default: return;
@@ -166,6 +173,12 @@ var URating = class URating extends UFormControlElement {
166
173
  onChangeValue() {
167
174
  this.buffer = -1;
168
175
  this.internals?.setFormValue(this.value?.toString() || "");
176
+ }
177
+ /** 사용자 상호작용으로 값이 바뀐 경로에서만 호출한다 — 프로그램적 value 세팅은
178
+ * 네이티브 폼 컨트롤과 동일하게 change를 발화하지 않는다.
179
+ * UI 재렌더를 동반한 validate()도 이 경로에서만 수행한다(v1.5.1 검증 아키텍처 —
180
+ * updated() 경로는 base의 silent setValidity()만 수행해 Lit 중복 업데이트를 피한다). */
181
+ emitChange() {
169
182
  if (!this.novalidate) this.validate();
170
183
  this.dispatchEvent(new Event("change", {
171
184
  bubbles: true,
@@ -183,6 +196,7 @@ var URating = class URating extends UFormControlElement {
183
196
  __decorate([property({ type: Number }), __decorateMetadata("design:type", Object)], URating.prototype, "min", void 0);
184
197
  __decorate([property({ type: Number }), __decorateMetadata("design:type", Object)], URating.prototype, "max", void 0);
185
198
  __decorate([property({ type: Number }), __decorateMetadata("design:type", Object)], URating.prototype, "precision", void 0);
199
+ __decorate([property({ type: Number }), __decorateMetadata("design:type", Number)], URating.prototype, "value", void 0);
186
200
  __decorate([state(), __decorateMetadata("design:type", Object)], URating.prototype, "buffer", void 0);
187
201
  __decorate([state(), __decorateMetadata("design:type", Object)], URating.prototype, "symbol", void 0);
188
202
  __decorate([state(), __decorateMetadata("design:type", Object)], URating.prototype, "symbolOff", void 0);
@@ -22,7 +22,8 @@ export type SelectVariant = 'outlined' | 'filled' | 'underlined' | 'borderless';
22
22
  * @cssprop --select-popover-min-height - 팝오버의 최소 높이 (기본값: 0px)
23
23
  * @cssprop --select-popover-max-height - 팝오버의 최대 높이 (기본값: 50vh)
24
24
  *
25
- * @event change - 선택 값이 변경될 때 발생
25
+ * @event change - 사용자 상호작용(옵션 클릭·칩 제거·지우기)으로 선택 값이 변경될 때 발생.
26
+ * 네이티브 select와 동일하게 프로그램적 value 세팅·옵션 등록으로는 발화하지 않는다.
26
27
  */
27
28
  export declare class USelect extends UFormControlElement<string | string[]> {
28
29
  static styles: import('lit').CSSResultGroup[];
@@ -42,6 +43,8 @@ export declare class USelect extends UFormControlElement<string | string[]> {
42
43
  maxCount?: number;
43
44
  /** placeholder 텍스트 */
44
45
  placeholder?: string;
46
+ /** 폼 제출 시 사용되는 값. attribute로는 단일 값 문자열 또는 JSON 배열(`value='["a","b"]'`)을 지원한다. */
47
+ value?: string | string[];
45
48
  containerEl?: HTMLElement;
46
49
  popoverEl?: UPopover;
47
50
  private options;
@@ -58,6 +61,11 @@ export declare class USelect extends UFormControlElement<string | string[]> {
58
61
  private setup;
59
62
  private cleanup;
60
63
  private onChangeValue;
64
+ /** 사용자 상호작용으로 값이 바뀐 경로에서만 호출한다 — 프로그램적 value 세팅은
65
+ * 네이티브 폼 컨트롤과 동일하게 change를 발화하지 않는다.
66
+ * UI 재렌더를 동반한 validate()도 이 경로에서만 수행한다(v1.5.1 검증 아키텍처 —
67
+ * updated() 경로는 base의 silent setValidity()만 수행해 Lit 중복 업데이트를 피한다). */
68
+ private emitChange;
61
69
  private handleSlotChange;
62
70
  private handleOptionClick;
63
71
  private handleOptionKeydown;
@@ -1,5 +1,5 @@
1
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
2
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
3
3
  import { UFormControlElement } from "../UFormControlElement.js";
4
4
  import "../spinner/USpinner.js";
5
5
  import "../icon/UIcon.js";
@@ -36,8 +36,11 @@ var USelect = class USelect extends UFormControlElement {
36
36
  if (this.maxCount != null && values.length >= this.maxCount) return;
37
37
  this.value = [...values, option.value];
38
38
  }
39
+ this.emitChange();
39
40
  } else {
41
+ const changed = option.value !== this.value;
40
42
  this.value = option.value;
43
+ if (changed) this.emitChange();
41
44
  this.popoverEl?.hide();
42
45
  }
43
46
  };
@@ -104,12 +107,14 @@ var USelect = class USelect extends UFormControlElement {
104
107
  e.preventDefault();
105
108
  e.stopPropagation();
106
109
  this.reset();
110
+ this.emitChange();
107
111
  this.containerEl?.click();
108
112
  };
109
113
  this.handleChipRemove = (e) => {
110
114
  const value = e.currentTarget.dataset.value;
111
115
  if (!value) return;
112
116
  this.value = this.valueAsArray.filter((v) => v !== value);
117
+ this.emitChange();
113
118
  };
114
119
  }
115
120
  static {
@@ -263,6 +268,12 @@ var USelect = class USelect extends UFormControlElement {
263
268
  for (const option of this.options) if (this.multiple) option.selected = values.includes(option.value);
264
269
  else option.selected = option.value === this.value;
265
270
  this.internals?.setFormValue(this.valueAsString);
271
+ }
272
+ /** 사용자 상호작용으로 값이 바뀐 경로에서만 호출한다 — 프로그램적 value 세팅은
273
+ * 네이티브 폼 컨트롤과 동일하게 change를 발화하지 않는다.
274
+ * UI 재렌더를 동반한 validate()도 이 경로에서만 수행한다(v1.5.1 검증 아키텍처 —
275
+ * updated() 경로는 base의 silent setValidity()만 수행해 Lit 중복 업데이트를 피한다). */
276
+ emitChange() {
266
277
  if (!this.novalidate) this.validate();
267
278
  this.dispatchEvent(new Event("change", {
268
279
  bubbles: true,
@@ -299,6 +310,15 @@ __decorate([property({
299
310
  attribute: "max-count"
300
311
  }), __decorateMetadata("design:type", Number)], USelect.prototype, "maxCount", void 0);
301
312
  __decorate([property({ type: String }), __decorateMetadata("design:type", String)], USelect.prototype, "placeholder", void 0);
313
+ __decorate([property({ converter: { fromAttribute: (value) => {
314
+ if (value == null) return void 0;
315
+ if (value.trim().startsWith("[")) try {
316
+ return JSON.parse(value);
317
+ } catch {
318
+ return value;
319
+ }
320
+ return value;
321
+ } } }), __decorateMetadata("design:type", Object)], USelect.prototype, "value", void 0);
302
322
  __decorate([query(".container", true), __decorateMetadata("design:type", typeof HTMLElement === "undefined" ? Object : HTMLElement)], USelect.prototype, "containerEl", void 0);
303
323
  __decorate([query("u-popover", true), __decorateMetadata("design:type", typeof UPopover === "undefined" ? Object : UPopover)], USelect.prototype, "popoverEl", void 0);
304
324
  __decorate([state(), __decorateMetadata("design:type", Array)], USelect.prototype, "options", void 0);
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
4
4
  import { styles } from "./USkeleton.styles.js";
5
5
  import { html } from "lit";
6
6
  import { customElement, property } from "lit/decorators.js";
@@ -32,7 +32,8 @@ export type SliderFormatter = (value: number) => string;
32
32
  * @cssprop --slider-mark-color - 마크 색상
33
33
  * @cssprop --slider-mark-border-color - 마크 테두리 색상
34
34
  *
35
- * @event change - 드래그 완료 값이 확정됐을 때 발생
35
+ * @event change - 사용자 상호작용으로 값이 확정됐을 때 발생 — 드래그는 완료(pointerup) 시,
36
+ * 키보드는 조작마다. 프로그램적 value 세팅으로는 발화하지 않는다.
36
37
  */
37
38
  export declare class USlider extends UFormControlElement<number | number[]> {
38
39
  static styles: import('lit').CSSResultGroup[];
@@ -54,6 +55,8 @@ export declare class USlider extends UFormControlElement<number | number[]> {
54
55
  max: number;
55
56
  /** 값 변경 단위 */
56
57
  step: number;
58
+ /** 슬라이더 값. attribute로는 숫자 또는 range용 JSON 배열(`value='[10,20]'`)을 지원한다. */
59
+ value?: number | number[];
57
60
  private dragging;
58
61
  private trackEl;
59
62
  private containerEl?;
@@ -72,6 +75,9 @@ export declare class USlider extends UFormControlElement<number | number[]> {
72
75
  protected setValidity(): void;
73
76
  reset(): void;
74
77
  private onChangeValue;
78
+ /** 사용자 상호작용으로 값이 확정된 경로에서만 호출한다 — 프로그램적 value 세팅은
79
+ * 네이티브 폼 컨트롤과 동일하게 change를 발화하지 않는다. */
80
+ private emitChange;
75
81
  private renderThumb;
76
82
  private formatDisplay;
77
83
  private formatValue;
@@ -1,5 +1,5 @@
1
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
2
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
3
3
  import { UFormControlElement } from "../UFormControlElement.js";
4
4
  import "../tooltip/UTooltip.js";
5
5
  import { Locale } from "../../utilities/Locale.js";
@@ -26,6 +26,7 @@ var USlider = class USlider extends UFormControlElement {
26
26
  const pct = Math.max(0, Math.min(rect.width, ev.clientX - rect.left)) / rect.width * 100;
27
27
  return this.percentToVal(pct);
28
28
  };
29
+ const before = JSON.stringify(this.value);
29
30
  const val = getPointerValue(e);
30
31
  if (this.range) {
31
32
  const closer = Math.abs(val - this.minVal) <= Math.abs(val - this.maxVal) ? "min" : "max";
@@ -47,6 +48,7 @@ var USlider = class USlider extends UFormControlElement {
47
48
  document.removeEventListener("pointermove", handleDocumentMove);
48
49
  document.removeEventListener("pointerup", handleDocumentUp);
49
50
  this.dragging = null;
51
+ if (JSON.stringify(this.value) !== before) this.emitChange();
50
52
  };
51
53
  document.addEventListener("pointermove", handleDocumentMove);
52
54
  document.addEventListener("pointerup", handleDocumentUp);
@@ -82,9 +84,11 @@ var USlider = class USlider extends UFormControlElement {
82
84
  }
83
85
  e.preventDefault();
84
86
  const newVal = this.snap(currentVal + delta);
87
+ const before = JSON.stringify(this.value);
85
88
  if (thumb === "min") if (this.range) this.minVal = Math.min(newVal, this.maxVal);
86
89
  else this.value = newVal;
87
90
  else this.maxVal = Math.max(newVal, this.minVal);
91
+ if (JSON.stringify(this.value) !== before) this.emitChange();
88
92
  };
89
93
  }
90
94
  static {
@@ -197,6 +201,10 @@ var USlider = class USlider extends UFormControlElement {
197
201
  if (Array.isArray(this.value)) this.value = [this.snap(this.value[0]), this.snap(this.value[1])];
198
202
  else if (typeof this.value === "number") this.value = this.snap(this.value);
199
203
  this.internals?.setFormValue(this.valueAsNumber.toString());
204
+ }
205
+ /** 사용자 상호작용으로 값이 확정된 경로에서만 호출한다 — 프로그램적 value 세팅은
206
+ * 네이티브 폼 컨트롤과 동일하게 change를 발화하지 않는다. */
207
+ emitChange() {
200
208
  this.dispatchEvent(new Event("change", {
201
209
  bubbles: true,
202
210
  composed: true
@@ -229,7 +237,7 @@ var USlider = class USlider extends UFormControlElement {
229
237
  `;
230
238
  }
231
239
  formatDisplay() {
232
- if (this.range) return `${this.formatValue(this.minVal)} ??${this.formatValue(this.maxVal)}`;
240
+ if (this.range) return `${this.formatValue(this.minVal)} ~ ${this.formatValue(this.maxVal)}`;
233
241
  else return this.formatValue(this.valueAsNumber);
234
242
  }
235
243
  formatValue(val) {
@@ -269,6 +277,16 @@ __decorate([property({ type: Number }), __decorateMetadata("design:type", Number
269
277
  __decorate([property({ type: Number }), __decorateMetadata("design:type", Number)], USlider.prototype, "min", void 0);
270
278
  __decorate([property({ type: Number }), __decorateMetadata("design:type", Number)], USlider.prototype, "max", void 0);
271
279
  __decorate([property({ type: Number }), __decorateMetadata("design:type", Number)], USlider.prototype, "step", void 0);
280
+ __decorate([property({ converter: { fromAttribute: (value) => {
281
+ if (value == null) return void 0;
282
+ if (value.trim().startsWith("[")) try {
283
+ return JSON.parse(value);
284
+ } catch {
285
+ return;
286
+ }
287
+ const n = Number(value);
288
+ return Number.isNaN(n) ? void 0 : n;
289
+ } } }), __decorateMetadata("design:type", Object)], USlider.prototype, "value", void 0);
272
290
  __decorate([state(), __decorateMetadata("design:type", Object)], USlider.prototype, "dragging", void 0);
273
291
  __decorate([query(".track"), __decorateMetadata("design:type", typeof HTMLElement === "undefined" ? Object : HTMLElement)], USlider.prototype, "trackEl", void 0);
274
292
  __decorate([query(".container"), __decorateMetadata("design:type", typeof HTMLElement === "undefined" ? Object : HTMLElement)], USlider.prototype, "containerEl", void 0);
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
4
4
  import { styles } from "./USpinner.styles.js";
5
5
  import { html } from "lit";
6
6
  import { customElement, property, state } from "lit/decorators.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
4
4
  import { arrayAttrConverter } from "../../utilities/converters.js";
5
5
  import { styles } from "./USplitPanel.styles.js";
6
6
  import { html } from "lit";
@@ -1,5 +1,5 @@
1
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
2
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
3
3
  import { UFormControlElement } from "../UFormControlElement.js";
4
4
  import { Locale } from "../../utilities/Locale.js";
5
5
  import { styles } from "./USwitch.styles.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
4
4
  import "../button/UButton.js";
5
5
  import "../icon/UIcon.js";
6
6
  import { styles } from "./UTab.styles.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
4
4
  import { UPanel } from "../panel/UPanel.js";
5
5
  import { UTab } from "../tab/UTab.js";
6
6
  import { styles } from "./UTabPanel.styles.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
4
4
  import { styles } from "./UTag.styles.js";
5
5
  import { html } from "lit";
6
6
  import { customElement, property } from "lit/decorators.js";
@@ -1,5 +1,5 @@
1
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
2
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
3
3
  import { UFormControlElement } from "../UFormControlElement.js";
4
4
  import { Locale } from "../../utilities/Locale.js";
5
5
  import "../field/UField.js";
@@ -1,5 +1,5 @@
1
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
2
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
3
3
  import { UFloatingElement } from "../UFloatingElement.js";
4
4
  import { styles } from "./UTooltip.styles.js";
5
5
  import { html } from "lit";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
4
4
  import { UTreeItem } from "../tree-item/UTreeItem.js";
5
5
  import { styles } from "./UTree.styles.js";
6
6
  import { html } from "lit";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
4
4
  import "../spinner/USpinner.js";
5
5
  import "../icon/UIcon.js";
6
6
  import { styles } from "./UTreeItem.styles.js";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@iyulab/components",
3
3
  "description": "web-components library based on lit-element made by iyulab",
4
- "version": "1.5.1",
4
+ "version": "1.7.0",
5
5
  "keywords": [
6
6
  "iyulab",
7
7
  "components",
@@ -46,8 +46,8 @@
46
46
  "build": "eslint && vite build && npm run build:plugins"
47
47
  },
48
48
  "dependencies": {
49
- "@floating-ui/dom": "^1.7.6",
50
- "focus-trap": "^8.2.0",
49
+ "@floating-ui/dom": "^1.8.0",
50
+ "focus-trap": "^8.2.2",
51
51
  "lit": "^3.3.3"
52
52
  },
53
53
  "peerDependencies": {
@@ -64,18 +64,18 @@
64
64
  },
65
65
  "devDependencies": {
66
66
  "@eslint/js": "^9.39.4",
67
- "@types/node": "^25.8.0",
68
- "@vitest/browser-playwright": "^4.1.8",
67
+ "@types/node": "^26.1.1",
68
+ "@vitest/browser-playwright": "^4.1.10",
69
69
  "eslint": "^9.39.4",
70
70
  "eslint-plugin-lit": "^2.3.1",
71
71
  "glob": "^13.0.6",
72
- "globals": "^17.6.0",
73
- "react": "^19.2.6",
72
+ "globals": "^17.7.0",
73
+ "react": "^19.2.7",
74
74
  "typescript": "^5.9.3",
75
- "typescript-eslint": "^8.59.3",
76
- "vite": "^8.0.13",
77
- "vite-plugin-dts": "^5.0.0",
78
- "vite-plugin-static-copy": "^4.1.0",
79
- "vitest": "^4.1.8"
75
+ "typescript-eslint": "^8.64.0",
76
+ "vite": "^8.1.4",
77
+ "vite-plugin-dts": "^5.0.3",
78
+ "vite-plugin-static-copy": "^4.1.1",
79
+ "vitest": "^4.1.10"
80
80
  }
81
81
  }