@greypan/web-ui 3.0.1 → 5.0.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.
- package/README.CN.md +495 -125
- package/README.md +504 -125
- package/dist/_virtual/{_@oxc-project_runtime@0.140.0 → _@oxc-project_runtime@0.146.0}/helpers/esm/decorate.js +1 -1
- package/dist/assets/glass.js +1 -1
- package/dist/assets/glass.js.map +1 -1
- package/dist/assets/menu-portal.js +1 -1
- package/dist/assets/menu-portal.js.map +1 -1
- package/dist/assets/overlay-motion.js +1 -1
- package/dist/assets/overlay-motion.js.map +1 -1
- package/dist/assets/toast-containers.js +1 -1
- package/dist/assets/toast-containers.js.map +1 -1
- package/dist/components/autocomplete/index.d.ts +12 -12
- package/dist/components/autocomplete/index.js +162 -111
- package/dist/components/autocomplete/index.js.map +1 -1
- package/dist/components/autocomplete/style.js +1 -1
- package/dist/components/autocomplete/style.js.map +1 -1
- package/dist/components/avatar/index.d.ts +0 -1
- package/dist/components/avatar/index.js +8 -13
- package/dist/components/avatar/index.js.map +1 -1
- package/dist/components/back-top/index.js +2 -2
- package/dist/components/back-top/index.js.map +1 -1
- package/dist/components/back-top/style.js +1 -1
- package/dist/components/back-top/style.js.map +1 -1
- package/dist/components/badge/index.d.ts +1 -0
- package/dist/components/badge/index.js +12 -14
- package/dist/components/badge/index.js.map +1 -1
- package/dist/components/button/index.d.ts +2 -0
- package/dist/components/button/index.js +52 -38
- package/dist/components/button/index.js.map +1 -1
- package/dist/components/button/style.js +1 -1
- package/dist/components/button/style.js.map +1 -1
- package/dist/components/button-group/index.d.ts +1 -2
- package/dist/components/button-group/index.js +21 -23
- package/dist/components/button-group/index.js.map +1 -1
- package/dist/components/button-group/style.js +1 -1
- package/dist/components/button-group/style.js.map +1 -1
- package/dist/components/checkbox/index.d.ts +4 -7
- package/dist/components/checkbox/index.js +56 -38
- package/dist/components/checkbox/index.js.map +1 -1
- package/dist/components/checkbox/style.js +1 -1
- package/dist/components/checkbox/style.js.map +1 -1
- package/dist/components/checkbox-group/index.d.ts +4 -10
- package/dist/components/checkbox-group/index.js +74 -60
- package/dist/components/checkbox-group/index.js.map +1 -1
- package/dist/components/collapse/index.d.ts +66 -0
- package/dist/components/collapse/index.js +159 -0
- package/dist/components/collapse/index.js.map +1 -0
- package/dist/components/collapse/style.js +6 -0
- package/dist/components/collapse/style.js.map +1 -0
- package/dist/components/context-menu/index.d.ts +29 -0
- package/dist/components/context-menu/index.js +168 -53
- package/dist/components/context-menu/index.js.map +1 -1
- package/dist/components/dialog/index.d.ts +6 -0
- package/dist/components/dialog/index.js +34 -13
- package/dist/components/dialog/index.js.map +1 -1
- package/dist/components/dialog/style.js +1 -1
- package/dist/components/dialog/style.js.map +1 -1
- package/dist/components/drawer/index.d.ts +45 -0
- package/dist/components/drawer/index.js +270 -56
- package/dist/components/drawer/index.js.map +1 -1
- package/dist/components/drawer/style.js +1 -1
- package/dist/components/drawer/style.js.map +1 -1
- package/dist/components/dropdown/index.d.ts +2 -0
- package/dist/components/dropdown/index.js +24 -14
- package/dist/components/dropdown/index.js.map +1 -1
- package/dist/components/dropdown-divider/index.js +1 -1
- package/dist/components/dropdown-header/index.js +1 -1
- package/dist/components/dropdown-header/style.js +1 -1
- package/dist/components/dropdown-header/style.js.map +1 -1
- package/dist/components/dropdown-item/index.js +3 -2
- package/dist/components/dropdown-item/index.js.map +1 -1
- package/dist/components/dropdown-item/style.js +1 -1
- package/dist/components/dropdown-item/style.js.map +1 -1
- package/dist/components/empty/index.d.ts +1 -0
- package/dist/components/empty/index.js +24 -22
- package/dist/components/empty/index.js.map +1 -1
- package/dist/components/empty/style.js +1 -1
- package/dist/components/empty/style.js.map +1 -1
- package/dist/components/icon/index.js +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +21 -20
- package/dist/components/input/index.d.ts +2 -3
- package/dist/components/input/index.js +62 -52
- package/dist/components/input/index.js.map +1 -1
- package/dist/components/input/style.js +1 -1
- package/dist/components/input/style.js.map +1 -1
- package/dist/components/input-number/index.d.ts +2 -3
- package/dist/components/input-number/index.js +58 -38
- package/dist/components/input-number/index.js.map +1 -1
- package/dist/components/input-number/style.js +1 -1
- package/dist/components/input-number/style.js.map +1 -1
- package/dist/components/layout/index.d.ts +76 -3
- package/dist/components/layout/index.js +250 -39
- package/dist/components/layout/index.js.map +1 -1
- package/dist/components/layout/style.js +1 -1
- package/dist/components/layout/style.js.map +1 -1
- package/dist/components/option/index.js +1 -1
- package/dist/components/option/style.js +1 -1
- package/dist/components/option/style.js.map +1 -1
- package/dist/components/popover/index.d.ts +2 -1
- package/dist/components/popover/index.js +14 -8
- package/dist/components/popover/index.js.map +1 -1
- package/dist/components/popover/style.js +1 -1
- package/dist/components/popover/style.js.map +1 -1
- package/dist/components/radio/index.d.ts +4 -7
- package/dist/components/radio/index.js +51 -37
- package/dist/components/radio/index.js.map +1 -1
- package/dist/components/radio/style.js +1 -1
- package/dist/components/radio/style.js.map +1 -1
- package/dist/components/radio-group/index.d.ts +4 -10
- package/dist/components/radio-group/index.js +70 -52
- package/dist/components/radio-group/index.js.map +1 -1
- package/dist/components/segmented/index.d.ts +14 -12
- package/dist/components/segmented/index.js +132 -54
- package/dist/components/segmented/index.js.map +1 -1
- package/dist/components/segmented/style.js +1 -1
- package/dist/components/segmented/style.js.map +1 -1
- package/dist/components/segmented-trigger/index.d.ts +1 -2
- package/dist/components/segmented-trigger/index.js +23 -21
- package/dist/components/segmented-trigger/index.js.map +1 -1
- package/dist/components/segmented-trigger/style.js +1 -1
- package/dist/components/segmented-trigger/style.js.map +1 -1
- package/dist/components/select/index.d.ts +13 -8
- package/dist/components/select/index.js +114 -75
- package/dist/components/select/index.js.map +1 -1
- package/dist/components/select/style.js +1 -1
- package/dist/components/select/style.js.map +1 -1
- package/dist/components/slider/index.d.ts +6 -7
- package/dist/components/slider/index.js +99 -64
- package/dist/components/slider/index.js.map +1 -1
- package/dist/components/slider/style.js +1 -1
- package/dist/components/slider/style.js.map +1 -1
- package/dist/components/spinner/index.d.ts +0 -2
- package/dist/components/spinner/index.js +14 -13
- package/dist/components/spinner/index.js.map +1 -1
- package/dist/components/spinner/style.js +1 -1
- package/dist/components/spinner/style.js.map +1 -1
- package/dist/components/svg-draw-lines/index.js +1 -1
- package/dist/components/switch/index.d.ts +13 -6
- package/dist/components/switch/index.js +102 -41
- package/dist/components/switch/index.js.map +1 -1
- package/dist/components/switch/style.js +1 -1
- package/dist/components/switch/style.js.map +1 -1
- package/dist/components/textarea/index.d.ts +5 -6
- package/dist/components/textarea/index.js +74 -67
- package/dist/components/textarea/index.js.map +1 -1
- package/dist/components/textarea/style.js +1 -1
- package/dist/components/textarea/style.js.map +1 -1
- package/dist/components/theme/index.js +1 -1
- package/dist/components/theme/style.js +1 -1
- package/dist/components/theme/style.js.map +1 -1
- package/dist/components/toast/style.js +1 -1
- package/dist/components/toast/style.js.map +1 -1
- package/dist/components/toast/toast.js +12 -12
- package/dist/components/toast/toast.js.map +1 -1
- package/dist/components/tooltip/index.js +3 -3
- package/dist/components/tooltip/index.js.map +1 -1
- package/dist/components/tooltip/style.js +1 -1
- package/dist/components/tooltip/style.js.map +1 -1
- package/dist/icons/generated/heroicons-arrow-down-16-solid.d.ts +6 -0
- package/dist/icons/generated/heroicons-arrow-up-16-solid.d.ts +6 -0
- package/dist/icons/generated/heroicons-bars-arrow-down-16-solid.d.ts +6 -0
- package/dist/icons/generated/heroicons-bars-arrow-down-16-solid.js +10 -0
- package/dist/icons/generated/heroicons-bars-arrow-down-16-solid.js.map +1 -0
- package/dist/icons/generated/heroicons-bars-arrow-up-16-solid.d.ts +6 -0
- package/dist/icons/generated/heroicons-bars-arrow-up-16-solid.js +10 -0
- package/dist/icons/generated/heroicons-bars-arrow-up-16-solid.js.map +1 -0
- package/dist/icons/generated/lucide-clapperboard.d.ts +6 -0
- package/dist/icons/generated/lucide-clapperboard.js +10 -0
- package/dist/icons/generated/lucide-clapperboard.js.map +1 -0
- package/dist/icons/generated/lucide-code.d.ts +6 -0
- package/dist/icons/generated/lucide-code.js +10 -0
- package/dist/icons/generated/lucide-code.js.map +1 -0
- package/dist/icons/generated/lucide-ellipsis-vertical.d.ts +6 -0
- package/dist/icons/generated/lucide-ellipsis-vertical.js +10 -0
- package/dist/icons/generated/lucide-ellipsis-vertical.js.map +1 -0
- package/dist/icons/generated/lucide-eye.d.ts +6 -0
- package/dist/icons/generated/lucide-eye.js +10 -0
- package/dist/icons/generated/lucide-eye.js.map +1 -0
- package/dist/icons/generated/lucide-headphones.d.ts +6 -0
- package/dist/icons/generated/lucide-headphones.js +10 -0
- package/dist/icons/generated/lucide-headphones.js.map +1 -0
- package/dist/icons/generated/lucide-link.d.ts +6 -0
- package/dist/icons/generated/lucide-link.js +10 -0
- package/dist/icons/generated/lucide-link.js.map +1 -0
- package/dist/icons/generated/lucide-list-filter.d.ts +6 -0
- package/dist/icons/generated/lucide-list-filter.js +10 -0
- package/dist/icons/generated/lucide-list-filter.js.map +1 -0
- package/dist/icons/generated/lucide-list-restart.d.ts +6 -0
- package/dist/icons/generated/lucide-list-restart.js +10 -0
- package/dist/icons/generated/lucide-list-restart.js.map +1 -0
- package/dist/icons/generated/lucide-pen-line.d.ts +6 -0
- package/dist/icons/generated/lucide-pen-line.js +10 -0
- package/dist/icons/generated/lucide-pen-line.js.map +1 -0
- package/dist/icons/generated/lucide-play.d.ts +6 -0
- package/dist/icons/generated/lucide-play.js +10 -0
- package/dist/icons/generated/lucide-play.js.map +1 -0
- package/dist/icons/generated/lucide-sliders-horizontal.d.ts +6 -0
- package/dist/icons/generated/lucide-sliders-horizontal.js +10 -0
- package/dist/icons/generated/lucide-sliders-horizontal.js.map +1 -0
- package/dist/icons/generated/lucide-tag.d.ts +6 -0
- package/dist/icons/generated/lucide-tag.js +10 -0
- package/dist/icons/generated/lucide-tag.js.map +1 -0
- package/dist/icons/generated/tabler-sort-ascending-letters.d.ts +6 -0
- package/dist/icons/generated/tabler-sort-ascending-letters.js +10 -0
- package/dist/icons/generated/tabler-sort-ascending-letters.js.map +1 -0
- package/dist/icons/index.d.ts +15 -0
- package/dist/icons/index.js +18 -3
- package/dist/node_modules/.pnpm/@floating-ui_core@1.8.0/node_modules/@floating-ui/core/dist/floating-ui.core.js +1 -3
- package/dist/node_modules/.pnpm/@floating-ui_core@1.8.0/node_modules/@floating-ui/core/dist/floating-ui.core.js.map +1 -1
- package/dist/node_modules/.pnpm/@floating-ui_utils@0.2.12/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js +2 -1
- package/dist/node_modules/.pnpm/@floating-ui_utils@0.2.12/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js.map +1 -1
- package/dist/shared/events/user-change.js.map +1 -1
- package/dist/shared/form-association/index.js +41 -0
- package/dist/shared/form-association/index.js.map +1 -0
- package/dist/shared/gesture/drag-gesture.js +133 -0
- package/dist/shared/gesture/drag-gesture.js.map +1 -0
- package/dist/shared/gesture/physics.js +45 -0
- package/dist/shared/gesture/physics.js.map +1 -0
- package/dist/shared/group-management/index.js +111 -0
- package/dist/shared/group-management/index.js.map +1 -0
- package/dist/shared/menu-portal/menu-portal.js +22 -10
- package/dist/shared/menu-portal/menu-portal.js.map +1 -1
- package/dist/shared/menu-portal/menu-tree.js +22 -7
- package/dist/shared/menu-portal/menu-tree.js.map +1 -1
- package/dist/shared/option-portal/index.js +65 -0
- package/dist/shared/option-portal/index.js.map +1 -0
- package/dist/shared/overlay/native-dialog-presence.js.map +1 -1
- package/dist/shared/overlay/nested-drawer-layers.js +55 -0
- package/dist/shared/overlay/nested-drawer-layers.js.map +1 -0
- package/dist/shared/overlay/overlay.js +1 -1
- package/dist/shared/overlay/overlay.js.map +1 -1
- package/dist/shared/overlay/portal.js +47 -13
- package/dist/shared/overlay/portal.js.map +1 -1
- package/dist/shared/overlay/presence.js.map +1 -1
- package/dist/shared/visible-area/index.js +69 -0
- package/dist/shared/visible-area/index.js.map +1 -0
- package/package.json +8 -4
|
@@ -1,18 +1,37 @@
|
|
|
1
|
-
import e from "../../_virtual/_@oxc-project_runtime@0.
|
|
1
|
+
import e from "../../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorate.js";
|
|
2
2
|
import "../icon/index.js";
|
|
3
3
|
import t from "../../icons/generated/lucide-loader-circle.js";
|
|
4
4
|
import n from "../../assets/glass.js";
|
|
5
|
-
import r from "
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import
|
|
5
|
+
import { FormAssociationController as r, defineFormAssociation as i } from "../../shared/form-association/index.js";
|
|
6
|
+
import { attachDragGesture as a } from "../../shared/gesture/drag-gesture.js";
|
|
7
|
+
import { clamp as o, normalizeProgress as s } from "../../shared/gesture/physics.js";
|
|
8
|
+
import c from "./style.js";
|
|
9
|
+
import { LitElement as l, html as u, unsafeCSS as d } from "lit";
|
|
10
|
+
import { customElement as f, property as p, state as m } from "lit/decorators.js";
|
|
11
|
+
import { classMap as h } from "lit/directives/class-map.js";
|
|
12
|
+
import { styleMap as g } from "lit/directives/style-map.js";
|
|
9
13
|
//#region src/components/switch/index.ts
|
|
10
|
-
var
|
|
14
|
+
var _ = class extends l {
|
|
11
15
|
constructor(...e) {
|
|
12
|
-
super(...e), this.
|
|
16
|
+
super(...e), this._checked = !1, this.name = "", this.value = "", this.disabled = !1, this.required = !1, this.loading = !1, this._pressed = !1, this._isDragging = !1, this._dragOffset = 0, this._dragProgress = 0, this._dragged = !1, this._maxTravel = 20, this._startOffset = 0, this._dragGestureHandle = null, this._formAssociation = i({
|
|
17
|
+
host: this,
|
|
18
|
+
initialize: () => {
|
|
19
|
+
this.hasAttribute("checked") && (this._checked = !0);
|
|
20
|
+
},
|
|
21
|
+
getState: () => this._checked,
|
|
22
|
+
setState: (e) => {
|
|
23
|
+
this.checked = e;
|
|
24
|
+
},
|
|
25
|
+
getFormValue: () => this._checked ? this.value || "on" : null,
|
|
26
|
+
getFormState: () => String(this._checked),
|
|
27
|
+
restoreState: (e) => {
|
|
28
|
+
typeof e == "string" && (this.checked = e === "true");
|
|
29
|
+
},
|
|
30
|
+
syncValidity: () => this._syncValidity()
|
|
31
|
+
}).make(), this._formAssociationController = new r(this, this._formAssociation);
|
|
13
32
|
}
|
|
14
33
|
static {
|
|
15
|
-
this.styles = [
|
|
34
|
+
this.styles = [d(n), d(c)];
|
|
16
35
|
}
|
|
17
36
|
static {
|
|
18
37
|
this.formAssociated = !0;
|
|
@@ -22,30 +41,35 @@ var d = class extends i {
|
|
|
22
41
|
}
|
|
23
42
|
set checked(e) {
|
|
24
43
|
let t = this._checked;
|
|
25
|
-
this._checked = e, this.
|
|
44
|
+
this._checked = e, this._formAssociation.sync(), this.requestUpdate("checked", t);
|
|
26
45
|
}
|
|
27
|
-
|
|
28
|
-
|
|
46
|
+
disconnectedCallback() {
|
|
47
|
+
super.disconnectedCallback(), this._dragGestureHandle?.destroy(), this._dragGestureHandle = null;
|
|
29
48
|
}
|
|
30
|
-
|
|
31
|
-
|
|
49
|
+
get _isDisabled() {
|
|
50
|
+
return this.disabled || this._formAssociation.isFormDisabled();
|
|
32
51
|
}
|
|
33
52
|
formResetCallback() {
|
|
34
|
-
this.
|
|
53
|
+
this._formAssociation.reset();
|
|
35
54
|
}
|
|
36
55
|
formDisabledCallback(e) {
|
|
37
|
-
this.
|
|
56
|
+
this._formAssociation.setDisabled(e);
|
|
38
57
|
}
|
|
39
|
-
|
|
40
|
-
this.
|
|
58
|
+
formStateRestoreCallback(e) {
|
|
59
|
+
this._formAssociation.restore(e);
|
|
41
60
|
}
|
|
42
|
-
|
|
43
|
-
|
|
61
|
+
_syncValidity() {
|
|
62
|
+
let e = this._formAssociation.getInternals();
|
|
63
|
+
!e || typeof e.setValidity != "function" || (this._isDisabled || !this.required || this._checked ? e.setValidity({}) : e.setValidity({ valueMissing: !0 }, "请启用此项"));
|
|
44
64
|
}
|
|
45
65
|
handleClick(e) {
|
|
46
|
-
if (e.preventDefault(), this.
|
|
66
|
+
if (e.preventDefault(), this._dragged) {
|
|
67
|
+
this._dragged = !1;
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
if (this._isDisabled || this.loading) return;
|
|
47
71
|
let t = this._checked;
|
|
48
|
-
this._checked = !t, this.
|
|
72
|
+
this._checked = !t, this._formAssociation.sync(), this.requestUpdate("checked", t), this.dispatchEvent(new Event("input", {
|
|
49
73
|
bubbles: !0,
|
|
50
74
|
composed: !0
|
|
51
75
|
})), this.dispatchEvent(new Event("change", {
|
|
@@ -53,28 +77,65 @@ var d = class extends i {
|
|
|
53
77
|
composed: !0
|
|
54
78
|
}));
|
|
55
79
|
}
|
|
56
|
-
handlePointerDown() {
|
|
57
|
-
this._isDisabled || this.loading
|
|
80
|
+
handlePointerDown(e) {
|
|
81
|
+
if (this._isDisabled || this.loading) return;
|
|
82
|
+
this._pressed = !0;
|
|
83
|
+
let t = this.renderRoot.querySelector(".wui-switch-track");
|
|
84
|
+
if (t) {
|
|
85
|
+
let e = t.getBoundingClientRect().width || 40;
|
|
86
|
+
this._maxTravel = Math.max(1, e - 4 - 20);
|
|
87
|
+
} else this._maxTravel = 16;
|
|
88
|
+
this._startOffset = this._checked ? this._maxTravel : 0, this._dragOffset = this._startOffset, this._dragProgress = +!!this._checked, this._dragGestureHandle?.destroy(), this._dragGestureHandle = a(e, {
|
|
89
|
+
axis: "x",
|
|
90
|
+
threshold: 6,
|
|
91
|
+
onMove: (e) => {
|
|
92
|
+
this._isDragging = !0;
|
|
93
|
+
let t = o(this._startOffset + e.deltaX, 0, this._maxTravel);
|
|
94
|
+
this._dragOffset = t, this._dragProgress = s(t, 0, this._maxTravel), this.requestUpdate();
|
|
95
|
+
},
|
|
96
|
+
onEnd: (e) => {
|
|
97
|
+
let t = this._isDragging;
|
|
98
|
+
if (this._isDragging = !1, this._pressed = !1, t) {
|
|
99
|
+
this._dragged = !0;
|
|
100
|
+
let t = this._checked;
|
|
101
|
+
if (t = e.velocityX > 300 ? !0 : e.velocityX < -300 ? !1 : this._dragProgress >= .5, t !== this._checked) {
|
|
102
|
+
let e = this._checked;
|
|
103
|
+
this._checked = t, this._formAssociation.sync(), this.requestUpdate("checked", e), this.dispatchEvent(new Event("input", {
|
|
104
|
+
bubbles: !0,
|
|
105
|
+
composed: !0
|
|
106
|
+
})), this.dispatchEvent(new Event("change", {
|
|
107
|
+
bubbles: !0,
|
|
108
|
+
composed: !0
|
|
109
|
+
}));
|
|
110
|
+
} else this.requestUpdate();
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
onCancel: () => {
|
|
114
|
+
this._isDragging = !1, this._pressed = !1, this.requestUpdate();
|
|
115
|
+
}
|
|
116
|
+
});
|
|
58
117
|
}
|
|
59
118
|
handlePointerUp() {
|
|
60
|
-
this.
|
|
119
|
+
this._pressed = !1;
|
|
61
120
|
}
|
|
62
121
|
handlePointerLeave() {
|
|
63
|
-
this.
|
|
122
|
+
this._isDragging || (this._pressed = !1);
|
|
64
123
|
}
|
|
65
124
|
render() {
|
|
66
125
|
let e = {
|
|
67
126
|
"wui-switch-track": !0,
|
|
68
|
-
"is-open": this._checked,
|
|
127
|
+
"is-open": this._isDragging ? this._dragProgress >= .5 : this._checked,
|
|
128
|
+
"is-dragging": this._isDragging,
|
|
69
129
|
"is-disabled": this._isDisabled || this.loading
|
|
70
130
|
}, n = {
|
|
71
131
|
"wui-switch-thumb": !0,
|
|
72
|
-
"wui-glass": this.
|
|
73
|
-
"is-pressed": this.
|
|
74
|
-
};
|
|
75
|
-
return
|
|
132
|
+
"wui-glass": this._pressed || this._isDragging,
|
|
133
|
+
"is-pressed": this._pressed || this._isDragging
|
|
134
|
+
}, r = this._isDragging ? { "--wui-switch-drag-offset": `${this._dragOffset}px` } : {};
|
|
135
|
+
return u`
|
|
76
136
|
<label
|
|
77
|
-
class=${
|
|
137
|
+
class=${h(e)}
|
|
138
|
+
style=${g(r)}
|
|
78
139
|
role="switch"
|
|
79
140
|
aria-checked=${String(this._checked)}
|
|
80
141
|
@click=${this.handleClick}
|
|
@@ -89,29 +150,29 @@ var d = class extends i {
|
|
|
89
150
|
?disabled=${this._isDisabled || this.loading}
|
|
90
151
|
class="sr-only"
|
|
91
152
|
/>
|
|
92
|
-
<div class=${
|
|
93
|
-
${this.loading ?
|
|
94
|
-
|
|
95
|
-
|
|
153
|
+
<div class=${h(n)}>
|
|
154
|
+
${this.loading ? u`<div class="wui-switch-loading">
|
|
155
|
+
<web-ui-icon .icon=${t} size="14" color="#08f" spin></web-ui-icon>
|
|
156
|
+
</div>` : ""}
|
|
96
157
|
</div>
|
|
97
158
|
</label>
|
|
98
159
|
`;
|
|
99
160
|
}
|
|
100
161
|
};
|
|
101
|
-
e([
|
|
162
|
+
e([m()], _.prototype, "_checked", void 0), e([p({
|
|
102
163
|
type: String,
|
|
103
164
|
reflect: !0
|
|
104
|
-
})],
|
|
165
|
+
})], _.prototype, "name", void 0), e([p({ type: String })], _.prototype, "value", void 0), e([p({
|
|
105
166
|
type: Boolean,
|
|
106
167
|
reflect: !0
|
|
107
|
-
})],
|
|
168
|
+
})], _.prototype, "disabled", void 0), e([p({
|
|
108
169
|
type: Boolean,
|
|
109
170
|
reflect: !0
|
|
110
|
-
})],
|
|
171
|
+
})], _.prototype, "required", void 0), e([p({
|
|
111
172
|
type: Boolean,
|
|
112
173
|
reflect: !0
|
|
113
|
-
})],
|
|
174
|
+
})], _.prototype, "loading", void 0), e([m()], _.prototype, "_pressed", void 0), e([m()], _.prototype, "_isDragging", void 0), e([m()], _.prototype, "_dragOffset", void 0), e([m()], _.prototype, "_dragProgress", void 0), _ = e([f("web-ui-switch")], _);
|
|
114
175
|
//#endregion
|
|
115
|
-
export {
|
|
176
|
+
export { _ as WebUiSwitch };
|
|
116
177
|
|
|
117
178
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/switch/index.ts"],"sourcesContent":["import { html, LitElement, unsafeCSS } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\n\nimport '@/components/icon'\nimport glass from '@/assets/glass.css?inline'\nimport { lucideLoaderCircle } from '@/icons'\n\nimport style from './style.css?inline'\n\n@customElement('web-ui-switch')\nexport class WebUiSwitch extends LitElement {\n static override styles = [unsafeCSS(glass), unsafeCSS(style)]\n static formAssociated = true\n\n private _internals?: ElementInternals\n @state() private _formDisabled = false\n\n @state() private _checked = false\n\n get checked(): boolean {\n return this._checked\n }\n\n set checked(v: boolean) {\n const old = this._checked\n this._checked = v\n this._syncFormValue()\n this.requestUpdate('checked', old)\n }\n\n @property({ type: String, reflect: true }) name = ''\n @property({ type: String }) value = ''\n @property({ type: Boolean, reflect: true }) disabled = false\n @property({ type: Boolean, reflect: true }) required = false\n @property({ type: Boolean, reflect: true }) loading = false\n @state() private pressed = false\n\n private get _isDisabled(): boolean {\n return this.disabled || this._formDisabled\n }\n\n override connectedCallback() {\n super.connectedCallback()\n if (this._internals) return\n this._internals = this.attachInternals()\n if (this.hasAttribute('checked')) {\n this._checked = true\n }\n this._syncFormValue()\n }\n\n formResetCallback() {\n this.checked = this.hasAttribute('checked')\n }\n\n formDisabledCallback(disabled: boolean) {\n this._formDisabled = disabled\n }\n\n override updated() {\n this._syncFormValue()\n if (!this._internals || typeof this._internals.setValidity !== 'function') return\n if (this._isDisabled || !this.required || this._checked) this._internals.setValidity({})\n else this._internals.setValidity({ valueMissing: true }, '请启用此项')\n }\n\n private _syncFormValue() {\n this._internals?.setFormValue?.(this._checked ? this.value || 'on' : null)\n }\n\n // 用户点击切换开关状态,阻止 label 默认行为避免原生 checkbox 重复触发\n private handleClick(e: Event) {\n e.preventDefault()\n if (this._isDisabled || this.loading) return\n const old = this._checked\n this._checked = !old\n this._syncFormValue()\n this.requestUpdate('checked', old)\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }))\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }))\n }\n\n private handlePointerDown() {\n if (this._isDisabled || this.loading) return\n this.pressed = true\n }\n\n private handlePointerUp() {\n this.pressed = false\n }\n\n private handlePointerLeave() {\n this.pressed = false\n }\n\n override render() {\n const trackCls = {\n 'wui-switch-track': true,\n 'is-open': this._checked,\n 'is-disabled': this._isDisabled || this.loading\n }\n const thumbCls = {\n 'wui-switch-thumb': true,\n 'wui-glass': this.pressed,\n 'is-pressed': this.pressed\n }\n\n return html`\n <label\n class=${classMap(trackCls)}\n role=\"switch\"\n aria-checked=${String(this._checked)}\n @click=${this.handleClick}\n @pointerdown=${this.handlePointerDown}\n @pointerup=${this.handlePointerUp}\n @pointercancel=${this.handlePointerUp}\n @pointerleave=${this.handlePointerLeave}\n >\n <input\n type=\"checkbox\"\n .checked=${this._checked}\n ?disabled=${this._isDisabled || this.loading}\n class=\"sr-only\"\n />\n <div class=${classMap(thumbCls)}>\n ${this.loading\n ? html`<div class=\"wui-switch-loading\">\n <web-ui-icon .icon=${lucideLoaderCircle} size=\"14\" color=\"#08f\" spin></web-ui-icon>\n </div>`\n : ''}\n </div>\n </label>\n `\n }\n\n declare readonly $events: {\n input: Event\n change: Event\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'web-ui-switch': WebUiSwitch\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/switch/index.ts"],"sourcesContent":["import { html, LitElement, unsafeCSS } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { styleMap } from 'lit/directives/style-map.js'\n\nimport '@/components/icon'\nimport glass from '@/assets/glass.css?inline'\nimport { lucideLoaderCircle } from '@/icons'\nimport { defineFormAssociation, FormAssociationController } from '@/shared/form-association'\nimport { attachDragGesture, type DragGestureHandle } from '@/shared/gesture/drag-gesture'\nimport { clamp, normalizeProgress } from '@/shared/gesture/physics'\n\nimport style from './style.css?inline'\n\n@customElement('web-ui-switch')\nexport class WebUiSwitch extends LitElement {\n static override styles = [unsafeCSS(glass), unsafeCSS(style)]\n static formAssociated = true\n\n @state() private _checked = false\n\n get checked(): boolean {\n return this._checked\n }\n\n set checked(v: boolean) {\n const old = this._checked\n this._checked = v\n this._formAssociation.sync()\n this.requestUpdate('checked', old)\n }\n\n @property({ type: String, reflect: true }) name = ''\n @property({ type: String }) value = ''\n @property({ type: Boolean, reflect: true }) disabled = false\n @property({ type: Boolean, reflect: true }) required = false\n @property({ type: Boolean, reflect: true }) loading = false\n @state() private _pressed = false\n @state() private _isDragging = false\n @state() private _dragOffset = 0\n @state() private _dragProgress = 0\n\n private _dragged = false\n private _maxTravel = 20\n private _startOffset = 0\n private _dragGestureHandle: DragGestureHandle | null = null\n\n override disconnectedCallback() {\n super.disconnectedCallback()\n this._dragGestureHandle?.destroy()\n this._dragGestureHandle = null\n }\n\n private get _isDisabled(): boolean {\n return this.disabled || this._formAssociation.isFormDisabled()\n }\n\n private readonly _formAssociation = defineFormAssociation<boolean>({\n host: this,\n initialize: () => {\n if (this.hasAttribute('checked')) this._checked = true\n },\n getState: () => this._checked,\n setState: checked => {\n this.checked = checked\n },\n getFormValue: () => (this._checked ? this.value || 'on' : null),\n getFormState: () => String(this._checked),\n restoreState: state => {\n if (typeof state === 'string') this.checked = state === 'true'\n },\n syncValidity: () => this._syncValidity()\n }).make()\n\n private readonly _formAssociationController = new FormAssociationController(this, this._formAssociation)\n\n formResetCallback() {\n this._formAssociation.reset()\n }\n\n formDisabledCallback(disabled: boolean) {\n this._formAssociation.setDisabled(disabled)\n }\n\n formStateRestoreCallback(state: string | File | FormData | null) {\n this._formAssociation.restore(state)\n }\n\n private _syncValidity() {\n const internals = this._formAssociation.getInternals()\n if (!internals || typeof internals.setValidity !== 'function') return\n if (this._isDisabled || !this.required || this._checked) internals.setValidity({})\n else internals.setValidity({ valueMissing: true }, '请启用此项')\n }\n\n // 阻止 label 默认行为,避免原生 checkbox 重复触发点击。\n private handleClick(e: Event) {\n e.preventDefault()\n if (this._dragged) {\n this._dragged = false\n return\n }\n if (this._isDisabled || this.loading) return\n const old = this._checked\n this._checked = !old\n this._formAssociation.sync()\n this.requestUpdate('checked', old)\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }))\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }))\n }\n\n private handlePointerDown(e: PointerEvent) {\n if (this._isDisabled || this.loading) return\n this._pressed = true\n\n const track = this.renderRoot.querySelector<HTMLElement>('.wui-switch-track')\n if (track) {\n const trackWidth = track.getBoundingClientRect().width || 40\n // 拖拽时 thumb 的 pressed 布局盒为 20px(scale(1.5) 视觉放大),因此行程按 20px 布局盒钳制;\n // 释放后的 checked 静止位移为 20px(16px thumb),两者由 transition 衔接。\n this._maxTravel = Math.max(1, trackWidth - 4 - 20)\n } else {\n this._maxTravel = 16\n }\n\n this._startOffset = this._checked ? this._maxTravel : 0\n this._dragOffset = this._startOffset\n this._dragProgress = this._checked ? 1 : 0\n\n this._dragGestureHandle?.destroy()\n this._dragGestureHandle = attachDragGesture(e, {\n axis: 'x',\n threshold: 6,\n onMove: info => {\n this._isDragging = true\n const current = clamp(this._startOffset + info.deltaX, 0, this._maxTravel)\n this._dragOffset = current\n this._dragProgress = normalizeProgress(current, 0, this._maxTravel)\n this.requestUpdate()\n },\n onEnd: info => {\n const wasDragging = this._isDragging\n this._isDragging = false\n this._pressed = false\n\n if (wasDragging) {\n this._dragged = true\n let targetChecked = this._checked\n if (info.velocityX > 300) {\n targetChecked = true\n } else if (info.velocityX < -300) {\n targetChecked = false\n } else {\n targetChecked = this._dragProgress >= 0.5\n }\n\n if (targetChecked !== this._checked) {\n const old = this._checked\n this._checked = targetChecked\n this._formAssociation.sync()\n this.requestUpdate('checked', old)\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }))\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }))\n } else {\n this.requestUpdate()\n }\n }\n },\n onCancel: () => {\n this._isDragging = false\n this._pressed = false\n this.requestUpdate()\n }\n })\n }\n\n private handlePointerUp() {\n this._pressed = false\n }\n\n private handlePointerLeave() {\n if (!this._isDragging) {\n this._pressed = false\n }\n }\n\n override render() {\n const isOpen = this._isDragging ? this._dragProgress >= 0.5 : this._checked\n const trackCls = {\n 'wui-switch-track': true,\n 'is-open': isOpen,\n 'is-dragging': this._isDragging,\n 'is-disabled': this._isDisabled || this.loading\n }\n const thumbCls = {\n 'wui-switch-thumb': true,\n 'wui-glass': this._pressed || this._isDragging,\n 'is-pressed': this._pressed || this._isDragging\n }\n const trackStyle = this._isDragging ? { '--wui-switch-drag-offset': `${this._dragOffset}px` } : {}\n\n return html`\n <label\n class=${classMap(trackCls)}\n style=${styleMap(trackStyle)}\n role=\"switch\"\n aria-checked=${String(this._checked)}\n @click=${this.handleClick}\n @pointerdown=${this.handlePointerDown}\n @pointerup=${this.handlePointerUp}\n @pointercancel=${this.handlePointerUp}\n @pointerleave=${this.handlePointerLeave}\n >\n <input\n type=\"checkbox\"\n .checked=${this._checked}\n ?disabled=${this._isDisabled || this.loading}\n class=\"sr-only\"\n />\n <div class=${classMap(thumbCls)}>\n ${\n this.loading\n ? html`<div class=\"wui-switch-loading\">\n <web-ui-icon .icon=${lucideLoaderCircle} size=\"14\" color=\"#08f\" spin></web-ui-icon>\n </div>`\n : ''\n }\n </div>\n </label>\n `\n }\n\n declare readonly $events: {\n input: Event\n change: Event\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'web-ui-switch': WebUiSwitch\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region src/components/switch/style.css?inline
|
|
2
|
-
var e = "*,:before,:after{box-sizing:border-box}:host{display:inline-block}:host([disabled]){cursor:not-allowed}.sr-only{white-space:nowrap;clip-path:inset(50%);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.wui-switch-track{cursor:
|
|
2
|
+
var e = "*,:before,:after{box-sizing:border-box}:host{display:inline-block}:host([disabled]){cursor:not-allowed}.sr-only{white-space:nowrap;clip-path:inset(50%);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.wui-switch-track{touch-action:pan-y;cursor:default;-webkit-user-select:none;user-select:none;background-color:var(--wui-color-surface-track,#e5e5ea);outline:var(--wui-focus-ring-width,3px) solid transparent;outline-offset:2px;width:40px;height:20px;transition:background-color var(--wui-duration-trigger,.16s) ease;border-radius:2147483647px;justify-content:space-between;align-items:center;display:flex;position:relative}.wui-switch-track:focus-within{outline-color:var(--wui-color-focus-ring,#08f6)}.wui-switch-track.is-open{background-color:var(--wui-color-accent,#08f)}.wui-switch-track.is-disabled{cursor:not-allowed;opacity:.4}.wui-switch-thumb{transform-origin:50%;width:16px;height:16px;transition:width var(--wui-duration-press,80ms) cubic-bezier(.4, 0, .2, 1), transform var(--wui-duration-trigger,.16s) cubic-bezier(.4, 0, .2, 1), border-radius var(--wui-duration-press,80ms) cubic-bezier(.4, 0, .2, 1), background-color var(--wui-duration-press,80ms) ease;border-radius:2147483647px;position:absolute;top:2px;left:2px;overflow:hidden;transform:translate(0)scale(1)}.wui-switch-thumb.is-pressed{background-color:#0000;border-radius:2147483647px;width:20px;transform:translate(0)scale(1.5)}.wui-switch-thumb:not(.is-pressed){background-color:var(--wui-color-on-control,#fff);box-shadow:1px 2px 6px #0003}.wui-switch-track.is-open .wui-switch-thumb{transform:translate(20px)scale(1)}.wui-switch-track.is-open .wui-switch-thumb.is-pressed{transform:translate(16px)scale(1.5)}.wui-switch-track.is-dragging{cursor:grabbing}.wui-switch-track.is-dragging .wui-switch-thumb,.wui-switch-track.is-dragging .wui-switch-thumb.is-pressed{transform:translateX(var(--wui-switch-drag-offset,0)) scale(1.5);transition:none}.wui-switch-loading{pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}";
|
|
3
3
|
//#endregion
|
|
4
4
|
export { e as default };
|
|
5
5
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.js","names":[],"sources":["../../../src/components/switch/style.css?inline"],"sourcesContent":["*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n:host {\n display: inline-block;\n}\n\n:host([disabled]) {\n cursor: not-allowed;\n}\n\n/*\n标准视觉隐藏技术(sr-only):\n业内标准的“屏幕阅读器专用”隐藏方案。\n把复选框缩放到 1x1 像素,但保留在 dom 中,\n既让肉眼看不见,又能让读屏软件识别,并允许键盘用户通过空格键切换状态。\n*/\n.sr-only {\n position: absolute;\n\n overflow: hidden;\n\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n border: 0;\n\n white-space: nowrap;\n\n clip-path: inset(50%);\n}\n\n.wui-switch-track {\n cursor:
|
|
1
|
+
{"version":3,"file":"style.js","names":[],"sources":["../../../src/components/switch/style.css?inline"],"sourcesContent":["*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n:host {\n display: inline-block;\n}\n\n:host([disabled]) {\n cursor: not-allowed;\n}\n\n/*\n标准视觉隐藏技术(sr-only):\n业内标准的“屏幕阅读器专用”隐藏方案。\n把复选框缩放到 1x1 像素,但保留在 dom 中,\n既让肉眼看不见,又能让读屏软件识别,并允许键盘用户通过空格键切换状态。\n*/\n.sr-only {\n position: absolute;\n\n overflow: hidden;\n\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n border: 0;\n\n white-space: nowrap;\n\n clip-path: inset(50%);\n}\n\n.wui-switch-track {\n touch-action: pan-y;\n cursor: default;\n user-select: none;\n\n position: relative;\n\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n width: 40px;\n height: 20px;\n border-radius: calc(infinity * 1px);\n\n background-color: var(--wui-color-surface-track, #e5e5ea);\n outline: var(--wui-focus-ring-width, 3px) solid transparent;\n outline-offset: 2px;\n\n transition: background-color var(--wui-duration-trigger, 160ms) ease;\n\n /* 实际获得焦点的是内部 sr-only 的 checkbox,track 本身不可聚焦;\n :focus-visible 在 track 上永不匹配,需用 :focus-within 让键盘焦点环生效 */\n &:focus-within {\n outline-color: var(--wui-color-focus-ring, rgb(0 136 255 / 0.4));\n }\n\n &.is-open {\n background-color: var(--wui-color-accent, #08f);\n }\n\n &.is-disabled {\n cursor: not-allowed;\n opacity: 0.4;\n }\n}\n\n.wui-switch-thumb {\n position: absolute;\n top: 2px;\n left: 2px;\n transform-origin: center center;\n transform: translateX(0) scale(1);\n\n overflow: hidden;\n\n width: 16px;\n height: 16px;\n border-radius: calc(infinity * 1px);\n\n transition:\n width var(--wui-duration-press, 80ms) cubic-bezier(0.4, 0, 0.2, 1),\n transform var(--wui-duration-trigger, 160ms) cubic-bezier(0.4, 0, 0.2, 1),\n border-radius var(--wui-duration-press, 80ms) cubic-bezier(0.4, 0, 0.2, 1),\n background-color var(--wui-duration-press, 80ms) ease;\n\n &.is-pressed {\n transform: translateX(0) scale(1.5);\n width: 20px;\n border-radius: calc(infinity * 1px);\n background-color: transparent;\n }\n\n &:not(.is-pressed) {\n background-color: var(--wui-color-on-control, #fff);\n box-shadow: 1px 2px 6px rgb(0 0 0 / 0.2);\n }\n}\n\n.wui-switch-track.is-open .wui-switch-thumb {\n transform: translateX(20px) scale(1);\n\n &.is-pressed {\n transform: translateX(16px) scale(1.5);\n }\n}\n\n.wui-switch-track.is-dragging {\n cursor: grabbing;\n}\n\n.wui-switch-track.is-dragging .wui-switch-thumb,\n.wui-switch-track.is-dragging .wui-switch-thumb.is-pressed {\n transform: translateX(var(--wui-switch-drag-offset, 0)) scale(1.5);\n transition: none;\n}\n\n.wui-switch-loading {\n pointer-events: none;\n\n position: absolute;\n inset: 0;\n\n display: flex;\n align-items: center;\n justify-content: center;\n}\n"],"mappings":""}
|
|
@@ -19,22 +19,21 @@ export declare class WebUiTextarea extends LitElement {
|
|
|
19
19
|
ariaLabelledby: string | undefined;
|
|
20
20
|
private _value;
|
|
21
21
|
private _focused;
|
|
22
|
-
private _formDisabled;
|
|
23
22
|
private _hasPrefix;
|
|
24
23
|
private _hasSuffix;
|
|
25
24
|
private _textarea;
|
|
26
25
|
private _resizeObserver;
|
|
27
|
-
private _internals?;
|
|
28
26
|
get value(): string;
|
|
29
27
|
set value(v: string);
|
|
30
28
|
private get _isDisabled();
|
|
31
|
-
|
|
29
|
+
private readonly _formAssociation;
|
|
30
|
+
private readonly _formAssociationController;
|
|
31
|
+
formResetCallback(): void;
|
|
32
|
+
formDisabledCallback(disabled: boolean): void;
|
|
33
|
+
formStateRestoreCallback(state: string | File | FormData | null): void;
|
|
32
34
|
disconnectedCallback(): void;
|
|
33
35
|
firstUpdated(): void;
|
|
34
36
|
updated(changed: Map<string, unknown>): void;
|
|
35
|
-
formDisabledCallback(disabled: boolean): void;
|
|
36
|
-
formResetCallback(): void;
|
|
37
|
-
formStateRestoreCallback(state: string | File | FormData | null): void;
|
|
38
37
|
private _getTextarea;
|
|
39
38
|
private _syncValidity;
|
|
40
39
|
private _setupAutosize;
|
|
@@ -1,37 +1,56 @@
|
|
|
1
|
-
import e from "../../_virtual/_@oxc-project_runtime@0.
|
|
1
|
+
import e from "../../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorate.js";
|
|
2
2
|
import "../icon/index.js";
|
|
3
3
|
import t from "../../icons/generated/jam-close-circle-f.js";
|
|
4
4
|
import n from "../../assets/glass.js";
|
|
5
|
+
import { FormAssociationController as r, defineFormAssociation as i } from "../../shared/form-association/index.js";
|
|
5
6
|
import "../button/index.js";
|
|
6
|
-
import
|
|
7
|
-
import { LitElement as
|
|
8
|
-
import { customElement as
|
|
9
|
-
import { ifDefined as
|
|
10
|
-
import { classMap as
|
|
11
|
-
import { styleMap as
|
|
7
|
+
import a from "./style.js";
|
|
8
|
+
import { LitElement as o, html as s, nothing as c, unsafeCSS as l } from "lit";
|
|
9
|
+
import { customElement as u, property as d, state as f } from "lit/decorators.js";
|
|
10
|
+
import { ifDefined as p } from "lit/directives/if-defined.js";
|
|
11
|
+
import { classMap as m } from "lit/directives/class-map.js";
|
|
12
|
+
import { styleMap as h } from "lit/directives/style-map.js";
|
|
12
13
|
//#region src/components/textarea/index.ts
|
|
13
|
-
var
|
|
14
|
+
var g = class extends o {
|
|
14
15
|
constructor(...e) {
|
|
15
|
-
super(...e), this.placeholder = "", this.name = "", this.disabled = !1, this.readonly = !1, this.required = !1, this.full = !1, this.clearable = !1, this.borderless = !1, this.rows = 3, this.autosize = !1, this.maxHeight = 0, this.ariaLabel = null, this._value = "", this._focused = !1, this.
|
|
16
|
+
super(...e), this.placeholder = "", this.name = "", this.disabled = !1, this.readonly = !1, this.required = !1, this.full = !1, this.clearable = !1, this.borderless = !1, this.rows = 3, this.autosize = !1, this.maxHeight = 0, this.ariaLabel = null, this._value = "", this._focused = !1, this._hasPrefix = !1, this._hasSuffix = !1, this._textarea = null, this._resizeObserver = null, this._formAssociation = i({
|
|
17
|
+
host: this,
|
|
18
|
+
getState: () => this._value,
|
|
19
|
+
setState: (e) => {
|
|
20
|
+
this.value = e;
|
|
21
|
+
},
|
|
22
|
+
getFormValue: () => this._value,
|
|
23
|
+
getFormState: () => this._value,
|
|
24
|
+
restoreState: (e) => {
|
|
25
|
+
typeof e == "string" && (this.value = e);
|
|
26
|
+
},
|
|
27
|
+
syncValidity: () => this._syncValidity()
|
|
28
|
+
}).make(), this._formAssociationController = new r(this, this._formAssociation);
|
|
16
29
|
}
|
|
17
30
|
static {
|
|
18
31
|
this.formAssociated = !0;
|
|
19
32
|
}
|
|
20
33
|
static {
|
|
21
|
-
this.styles = [
|
|
34
|
+
this.styles = [l(n), l(a)];
|
|
22
35
|
}
|
|
23
36
|
get value() {
|
|
24
37
|
return this._value;
|
|
25
38
|
}
|
|
26
39
|
set value(e) {
|
|
27
40
|
let t = this._value;
|
|
28
|
-
this._value = e, this.
|
|
41
|
+
this._value = e, this._formAssociation.sync(), this.requestUpdate("value", t);
|
|
29
42
|
}
|
|
30
43
|
get _isDisabled() {
|
|
31
|
-
return this.disabled || this.
|
|
44
|
+
return this.disabled || this._formAssociation.isFormDisabled();
|
|
32
45
|
}
|
|
33
|
-
|
|
34
|
-
|
|
46
|
+
formResetCallback() {
|
|
47
|
+
this._formAssociation.reset();
|
|
48
|
+
}
|
|
49
|
+
formDisabledCallback(e) {
|
|
50
|
+
this._formAssociation.setDisabled(e);
|
|
51
|
+
}
|
|
52
|
+
formStateRestoreCallback(e) {
|
|
53
|
+
this._formAssociation.restore(e);
|
|
35
54
|
}
|
|
36
55
|
disconnectedCallback() {
|
|
37
56
|
super.disconnectedCallback(), this._teardownAutosize();
|
|
@@ -46,20 +65,11 @@ var m = class extends i {
|
|
|
46
65
|
}
|
|
47
66
|
e.has("autosize") && (this.autosize ? this._setupAutosize() : this._teardownAutosize(!0)), this._syncValidity(), this.toggleAttribute("focused", this._focused);
|
|
48
67
|
}
|
|
49
|
-
formDisabledCallback(e) {
|
|
50
|
-
this._formDisabled = e;
|
|
51
|
-
}
|
|
52
|
-
formResetCallback() {
|
|
53
|
-
this.value = this.getAttribute("value") || "";
|
|
54
|
-
}
|
|
55
|
-
formStateRestoreCallback(e) {
|
|
56
|
-
typeof e == "string" && (this.value = e);
|
|
57
|
-
}
|
|
58
68
|
_getTextarea() {
|
|
59
69
|
return this._textarea ??= this.shadowRoot?.querySelector("textarea") ?? null, this._textarea;
|
|
60
70
|
}
|
|
61
71
|
_syncValidity() {
|
|
62
|
-
let e = this.
|
|
72
|
+
let e = this._formAssociation.getInternals(), t = this._getTextarea();
|
|
63
73
|
if (!e || !t || typeof e.setValidity != "function") return;
|
|
64
74
|
if (this._isDisabled || t.validity.valid) {
|
|
65
75
|
e.setValidity({});
|
|
@@ -81,13 +91,10 @@ var m = class extends i {
|
|
|
81
91
|
this._resizeObserver?.disconnect(), this._resizeObserver = null, e && this._textarea?.style.removeProperty("height");
|
|
82
92
|
}
|
|
83
93
|
_autosize() {
|
|
84
|
-
|
|
85
|
-
this._textarea.style.height = "auto";
|
|
86
|
-
let e = this.rows * 20, t = this._textarea.scrollHeight, n = Math.max(t, e);
|
|
87
|
-
this._textarea.style.height = `${n}px`;
|
|
94
|
+
!this._textarea || !this.autosize || (this._textarea.style.height = "auto", this._textarea.style.height = `${this._textarea.scrollHeight}px`);
|
|
88
95
|
}
|
|
89
96
|
handleInput(e) {
|
|
90
|
-
e.target instanceof HTMLTextAreaElement && (this._value = e.target.value, this.
|
|
97
|
+
e.target instanceof HTMLTextAreaElement && (this._value = e.target.value, this._formAssociation.sync(), this._syncValidity(), this._autosize());
|
|
91
98
|
}
|
|
92
99
|
handleFocus() {
|
|
93
100
|
this._isDisabled || (this._focused = !0);
|
|
@@ -96,7 +103,7 @@ var m = class extends i {
|
|
|
96
103
|
this._focused = !1;
|
|
97
104
|
}
|
|
98
105
|
handleNativeChange(e) {
|
|
99
|
-
e.target instanceof HTMLTextAreaElement && (this._value = e.target.value, this.
|
|
106
|
+
e.target instanceof HTMLTextAreaElement && (this._value = e.target.value, this._formAssociation.sync(), this._syncValidity(), this.dispatchEvent(new Event("change", {
|
|
100
107
|
bubbles: !0,
|
|
101
108
|
composed: !0
|
|
102
109
|
})));
|
|
@@ -119,7 +126,7 @@ var m = class extends i {
|
|
|
119
126
|
t.name === "prefix" && (this._hasPrefix = n), t.name === "suffix" && (this._hasSuffix = n);
|
|
120
127
|
}
|
|
121
128
|
handleClear() {
|
|
122
|
-
this._isDisabled || this.readonly || (this._value = "", this.
|
|
129
|
+
this._isDisabled || this.readonly || (this._value = "", this._formAssociation.sync(), this.dispatchEvent(new Event("input", {
|
|
123
130
|
bubbles: !0,
|
|
124
131
|
composed: !0
|
|
125
132
|
})));
|
|
@@ -129,93 +136,93 @@ var m = class extends i {
|
|
|
129
136
|
}
|
|
130
137
|
render() {
|
|
131
138
|
let e = this.clearable && this._value && !this.readonly;
|
|
132
|
-
return
|
|
139
|
+
return s`
|
|
133
140
|
<div class="wui-glass wui-textarea-inner" @click=${this.focusTextarea}>
|
|
134
|
-
<slot name="prefix" class=${
|
|
141
|
+
<slot name="prefix" class=${m({ empty: !this._hasPrefix })} @slotchange=${this._onSlotChange}></slot>
|
|
135
142
|
<textarea
|
|
136
143
|
placeholder=${this.placeholder}
|
|
137
144
|
name=${this.name}
|
|
138
|
-
aria-label=${
|
|
139
|
-
aria-labelledby=${
|
|
145
|
+
aria-label=${p(this.ariaLabel)}
|
|
146
|
+
aria-labelledby=${p(this.ariaLabelledby)}
|
|
140
147
|
.rows=${this.rows}
|
|
141
|
-
minlength=${
|
|
142
|
-
maxlength=${
|
|
148
|
+
minlength=${p(this.minlength)}
|
|
149
|
+
maxlength=${p(this.maxlength)}
|
|
143
150
|
?disabled=${this._isDisabled}
|
|
144
151
|
?readonly=${this.readonly}
|
|
145
152
|
?required=${this.required}
|
|
146
153
|
.value=${this._value}
|
|
147
|
-
style=${this.maxHeight > 0 ?
|
|
154
|
+
style=${this.maxHeight > 0 ? h({ "max-height": `${this.maxHeight}px` }) : c}
|
|
148
155
|
@input=${this.handleInput}
|
|
149
156
|
@change=${this.handleNativeChange}
|
|
150
157
|
@focus=${this.handleFocus}
|
|
151
158
|
@blur=${this.handleBlur}
|
|
152
159
|
></textarea>
|
|
153
|
-
${e ?
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
<slot name="suffix" class=${
|
|
160
|
+
${e ? s`<web-ui-button
|
|
161
|
+
icon
|
|
162
|
+
variant="ghost"
|
|
163
|
+
size="24"
|
|
164
|
+
aria-label="清除"
|
|
165
|
+
@pointerdown=${this.preventMouseDownBlur}
|
|
166
|
+
@click=${this.handleClear}
|
|
167
|
+
>
|
|
168
|
+
<web-ui-icon .icon=${t}></web-ui-icon>
|
|
169
|
+
</web-ui-button>` : ""}
|
|
170
|
+
<slot name="suffix" class=${m({ empty: !this._hasSuffix })} @slotchange=${this._onSlotChange}></slot>
|
|
164
171
|
</div>
|
|
165
172
|
`;
|
|
166
173
|
}
|
|
167
174
|
};
|
|
168
|
-
e([
|
|
175
|
+
e([d({
|
|
169
176
|
type: String,
|
|
170
177
|
reflect: !0
|
|
171
|
-
})],
|
|
178
|
+
})], g.prototype, "placeholder", void 0), e([d({
|
|
172
179
|
type: String,
|
|
173
180
|
reflect: !0
|
|
174
|
-
})],
|
|
181
|
+
})], g.prototype, "name", void 0), e([d({
|
|
175
182
|
type: Boolean,
|
|
176
183
|
reflect: !0
|
|
177
|
-
})],
|
|
184
|
+
})], g.prototype, "disabled", void 0), e([d({
|
|
178
185
|
type: Boolean,
|
|
179
186
|
reflect: !0
|
|
180
|
-
})],
|
|
187
|
+
})], g.prototype, "readonly", void 0), e([d({
|
|
181
188
|
type: Boolean,
|
|
182
189
|
reflect: !0
|
|
183
|
-
})],
|
|
190
|
+
})], g.prototype, "required", void 0), e([d({
|
|
184
191
|
type: Boolean,
|
|
185
192
|
reflect: !0
|
|
186
|
-
})],
|
|
193
|
+
})], g.prototype, "full", void 0), e([d({
|
|
187
194
|
type: Boolean,
|
|
188
195
|
reflect: !0
|
|
189
|
-
})],
|
|
196
|
+
})], g.prototype, "clearable", void 0), e([d({
|
|
190
197
|
type: Boolean,
|
|
191
198
|
reflect: !0
|
|
192
|
-
})],
|
|
199
|
+
})], g.prototype, "borderless", void 0), e([d({
|
|
193
200
|
type: Number,
|
|
194
201
|
reflect: !0
|
|
195
|
-
})],
|
|
202
|
+
})], g.prototype, "rows", void 0), e([d({
|
|
196
203
|
type: Number,
|
|
197
204
|
reflect: !0
|
|
198
|
-
})],
|
|
205
|
+
})], g.prototype, "minlength", void 0), e([d({
|
|
199
206
|
type: Number,
|
|
200
207
|
reflect: !0
|
|
201
|
-
})],
|
|
208
|
+
})], g.prototype, "maxlength", void 0), e([d({
|
|
202
209
|
type: Boolean,
|
|
203
210
|
reflect: !0
|
|
204
|
-
})],
|
|
211
|
+
})], g.prototype, "autosize", void 0), e([d({
|
|
205
212
|
type: Number,
|
|
206
213
|
reflect: !0,
|
|
207
214
|
attribute: "max-height"
|
|
208
|
-
})],
|
|
215
|
+
})], g.prototype, "maxHeight", void 0), e([d({
|
|
209
216
|
type: String,
|
|
210
217
|
attribute: "aria-label"
|
|
211
|
-
})],
|
|
218
|
+
})], g.prototype, "ariaLabel", void 0), e([d({
|
|
212
219
|
type: String,
|
|
213
220
|
attribute: "aria-labelledby"
|
|
214
|
-
})],
|
|
221
|
+
})], g.prototype, "ariaLabelledby", void 0), e([f()], g.prototype, "_value", void 0), e([f()], g.prototype, "_focused", void 0), e([f()], g.prototype, "_hasPrefix", void 0), e([f()], g.prototype, "_hasSuffix", void 0), e([d({
|
|
215
222
|
type: String,
|
|
216
223
|
reflect: !0
|
|
217
|
-
})],
|
|
224
|
+
})], g.prototype, "value", null), g = e([u("web-ui-textarea")], g);
|
|
218
225
|
//#endregion
|
|
219
|
-
export {
|
|
226
|
+
export { g as WebUiTextarea };
|
|
220
227
|
|
|
221
228
|
//# sourceMappingURL=index.js.map
|