@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.js","names":[],"sources":["../../../src/components/popover/style.css?inline"],"sourcesContent":["*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n:host {\n display: inline-flex;\n}\n\n:host([disabled]) {\n cursor: not-allowed;\n}\n\n.popover-trigger {\n display: inline-flex;\n}\n\n.popover-anchor {\n position: relative;\n display: inline-flex;\n}\n\n.popover-panel {\n --wui-glass-shadow: var(--wui-shadow-
|
|
1
|
+
{"version":3,"file":"style.js","names":[],"sources":["../../../src/components/popover/style.css?inline"],"sourcesContent":["*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n:host {\n display: inline-flex;\n}\n\n:host([disabled]) {\n cursor: not-allowed;\n}\n\n.popover-trigger {\n display: inline-flex;\n}\n\n.popover-anchor {\n position: relative;\n display: inline-flex;\n}\n\n.popover-panel {\n --wui-internal-glass-shadow: var(--wui-shadow-panel, 0 3px 9px rgb(0 0 0 / 0.27));\n --wui-glass-corner-radius: 20px;\n position: absolute;\n z-index: var(--wui-layer-inline-overlay, 1);\n top: -9999px;\n left: -9999px;\n\n box-sizing: border-box;\n width: max-content;\n max-width: min(90vw, 400px);\n padding: 8px 12px;\n border-radius: 20px;\n\n font-size: var(--wui-font-size, 14px);\n line-height: 1.5;\n color: var(--wui-color-text, #1b1b1b);\n\n background-color: var(--wui-color-surface-menu, rgb(246 246 246 / 0.82));\n\n &:where([hidden]) {\n display: none;\n }\n\n &:focus-visible {\n outline: var(--wui-focus-ring-width, 3px) solid var(--wui-color-focus-ring, rgb(0 136 255 / 0.4));\n outline-offset: 2px;\n }\n}\n\n.popover-panel.portal {\n position: fixed;\n z-index: var(--wui-layer-menu, 100);\n}\n\n:host([portal]) .popover-panel {\n display: none;\n}\n"],"mappings":""}
|
|
@@ -2,9 +2,7 @@ import { LitElement } from 'lit';
|
|
|
2
2
|
export declare class WebUiRadio extends LitElement {
|
|
3
3
|
static styles: import('lit').CSSResult;
|
|
4
4
|
static formAssociated: boolean;
|
|
5
|
-
private
|
|
6
|
-
private _formDisabled;
|
|
7
|
-
private _groupDisabled;
|
|
5
|
+
private readonly _groupManagement;
|
|
8
6
|
private _checked;
|
|
9
7
|
get checked(): boolean;
|
|
10
8
|
set checked(v: boolean);
|
|
@@ -14,12 +12,11 @@ export declare class WebUiRadio extends LitElement {
|
|
|
14
12
|
required: boolean;
|
|
15
13
|
private get _isDisabled();
|
|
16
14
|
private get _isManagedByGroup();
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
private readonly _formAssociation;
|
|
16
|
+
private readonly _formAssociationController;
|
|
19
17
|
formResetCallback(): void;
|
|
20
18
|
formDisabledCallback(disabled: boolean): void;
|
|
21
|
-
|
|
22
|
-
private _syncFormValue;
|
|
19
|
+
formStateRestoreCallback(state: string | File | FormData | null): void;
|
|
23
20
|
private _syncValidity;
|
|
24
21
|
private handleClick;
|
|
25
22
|
private handleKeyDown;
|
|
@@ -1,15 +1,36 @@
|
|
|
1
|
-
import e from "../../_virtual/_@oxc-project_runtime@0.
|
|
2
|
-
import t from "
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
1
|
+
import e from "../../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorate.js";
|
|
2
|
+
import { FormAssociationController as t, defineFormAssociation as n } from "../../shared/form-association/index.js";
|
|
3
|
+
import { defineGroupManaged as r, selectionGroupContextKey as i } from "../../shared/group-management/index.js";
|
|
4
|
+
import a from "./style.js";
|
|
5
|
+
import { LitElement as o, html as s, unsafeCSS as c } from "lit";
|
|
6
|
+
import { customElement as l, property as u, state as d } from "lit/decorators.js";
|
|
7
|
+
import { classMap as f } from "lit/directives/class-map.js";
|
|
6
8
|
//#region src/components/radio/index.ts
|
|
7
|
-
var
|
|
9
|
+
var p = class extends o {
|
|
8
10
|
constructor(...e) {
|
|
9
|
-
super(...e), this.
|
|
11
|
+
super(...e), this._groupManagement = r(this, {
|
|
12
|
+
context: i,
|
|
13
|
+
requestUpdate: () => this.requestUpdate()
|
|
14
|
+
}).make(), this._checked = !1, this.value = "", this.name = "", this.disabled = !1, this.required = !1, this._formAssociation = n({
|
|
15
|
+
host: this,
|
|
16
|
+
initialize: () => {
|
|
17
|
+
this.hasAttribute("checked") && (this._checked = !0);
|
|
18
|
+
},
|
|
19
|
+
getState: () => this._checked,
|
|
20
|
+
setState: (e) => {
|
|
21
|
+
this.checked = e;
|
|
22
|
+
},
|
|
23
|
+
getFormValue: () => !this._isManagedByGroup && this._checked ? this.value || "on" : null,
|
|
24
|
+
getFormState: () => String(this._checked),
|
|
25
|
+
restoreState: (e) => {
|
|
26
|
+
typeof e == "string" && (this.checked = e === "true");
|
|
27
|
+
},
|
|
28
|
+
isStateManaged: () => this._isManagedByGroup,
|
|
29
|
+
syncValidity: () => this._syncValidity()
|
|
30
|
+
}).make(), this._formAssociationController = new t(this, this._formAssociation);
|
|
10
31
|
}
|
|
11
32
|
static {
|
|
12
|
-
this.styles =
|
|
33
|
+
this.styles = c(a);
|
|
13
34
|
}
|
|
14
35
|
static {
|
|
15
36
|
this.formAssociated = !0;
|
|
@@ -19,44 +40,36 @@ var l = class extends n {
|
|
|
19
40
|
}
|
|
20
41
|
set checked(e) {
|
|
21
42
|
let t = this._checked;
|
|
22
|
-
this._checked = e, this.
|
|
43
|
+
this._checked = e, this._formAssociation.sync(), this.requestUpdate("checked", t);
|
|
23
44
|
}
|
|
24
45
|
get _isDisabled() {
|
|
25
|
-
return this.disabled || this.
|
|
46
|
+
return this.disabled || this._formAssociation.isFormDisabled() || this._groupManagement.getContext()?.disabled === !0;
|
|
26
47
|
}
|
|
27
48
|
get _isManagedByGroup() {
|
|
28
|
-
return this.
|
|
29
|
-
}
|
|
30
|
-
setGroupDisabled(e) {
|
|
31
|
-
this._groupDisabled = e;
|
|
32
|
-
}
|
|
33
|
-
connectedCallback() {
|
|
34
|
-
super.connectedCallback(), !this._internals && (this._internals = this.attachInternals(), this.hasAttribute("checked") && (this._checked = !0), this._syncFormValue());
|
|
49
|
+
return this._groupManagement.getContext() !== void 0;
|
|
35
50
|
}
|
|
36
51
|
formResetCallback() {
|
|
37
|
-
this.
|
|
52
|
+
this._formAssociation.reset();
|
|
38
53
|
}
|
|
39
54
|
formDisabledCallback(e) {
|
|
40
|
-
this.
|
|
41
|
-
}
|
|
42
|
-
updated() {
|
|
43
|
-
this._syncFormValue(), this._syncValidity();
|
|
55
|
+
this._formAssociation.setDisabled(e);
|
|
44
56
|
}
|
|
45
|
-
|
|
46
|
-
this.
|
|
57
|
+
formStateRestoreCallback(e) {
|
|
58
|
+
this._formAssociation.restore(e);
|
|
47
59
|
}
|
|
48
60
|
_syncValidity() {
|
|
49
|
-
|
|
61
|
+
let e = this._formAssociation.getInternals();
|
|
62
|
+
if (!(!e || typeof e.setValidity != "function")) {
|
|
50
63
|
if (this._isDisabled || this._isManagedByGroup || !this.required || this._checked) {
|
|
51
|
-
|
|
64
|
+
e.setValidity({});
|
|
52
65
|
return;
|
|
53
66
|
}
|
|
54
|
-
|
|
67
|
+
e.setValidity({ valueMissing: !0 }, "请选择一项");
|
|
55
68
|
}
|
|
56
69
|
}
|
|
57
70
|
handleClick() {
|
|
58
71
|
if (this._isDisabled || this._checked) return;
|
|
59
|
-
this._checked = !0, this.
|
|
72
|
+
this._checked = !0, this._formAssociation.sync(), this.requestUpdate("checked", !1);
|
|
60
73
|
let e = this._isManagedByGroup ? {
|
|
61
74
|
bubbles: !1,
|
|
62
75
|
composed: !1
|
|
@@ -70,13 +83,14 @@ var l = class extends n {
|
|
|
70
83
|
(e.key === "Enter" || e.key === " ") && (e.preventDefault(), this.handleClick());
|
|
71
84
|
}
|
|
72
85
|
render() {
|
|
73
|
-
|
|
74
|
-
<label
|
|
75
|
-
class=${c({
|
|
86
|
+
let e = {
|
|
76
87
|
"wui-radio": !0,
|
|
77
88
|
"is-checked": this._checked,
|
|
78
89
|
"is-disabled": this._isDisabled
|
|
79
|
-
}
|
|
90
|
+
};
|
|
91
|
+
return s`
|
|
92
|
+
<label
|
|
93
|
+
class=${f(e)}
|
|
80
94
|
tabindex=${this._isDisabled ? "-1" : "0"}
|
|
81
95
|
role="radio"
|
|
82
96
|
aria-checked=${String(this._checked)}
|
|
@@ -92,17 +106,17 @@ var l = class extends n {
|
|
|
92
106
|
`;
|
|
93
107
|
}
|
|
94
108
|
};
|
|
95
|
-
e([
|
|
109
|
+
e([d()], p.prototype, "_checked", void 0), e([u({ type: String })], p.prototype, "value", void 0), e([u({
|
|
96
110
|
type: String,
|
|
97
111
|
reflect: !0
|
|
98
|
-
})],
|
|
112
|
+
})], p.prototype, "name", void 0), e([u({
|
|
99
113
|
type: Boolean,
|
|
100
114
|
reflect: !0
|
|
101
|
-
})],
|
|
115
|
+
})], p.prototype, "disabled", void 0), e([u({
|
|
102
116
|
type: Boolean,
|
|
103
117
|
reflect: !0
|
|
104
|
-
})],
|
|
118
|
+
})], p.prototype, "required", void 0), p = e([l("web-ui-radio")], p);
|
|
105
119
|
//#endregion
|
|
106
|
-
export {
|
|
120
|
+
export { p as WebUiRadio };
|
|
107
121
|
|
|
108
122
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/radio/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 style from './style.css?inline'\n\n@customElement('web-ui-radio')\nexport class WebUiRadio extends LitElement {\n static override styles = unsafeCSS(style)\n static formAssociated = true\n\n
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/radio/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 { defineFormAssociation, FormAssociationController } from '@/shared/form-association'\nimport { defineGroupManaged, selectionGroupContextKey, type SelectionGroupContext } from '@/shared/group-management'\n\nimport style from './style.css?inline'\n\n@customElement('web-ui-radio')\nexport class WebUiRadio extends LitElement {\n static override styles = unsafeCSS(style)\n static formAssociated = true\n\n private readonly _groupManagement = defineGroupManaged<SelectionGroupContext>(this, {\n context: selectionGroupContextKey,\n requestUpdate: () => this.requestUpdate()\n }).make()\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 }) value = ''\n @property({ type: String, reflect: true }) name = ''\n @property({ type: Boolean, reflect: true }) disabled = false\n @property({ type: Boolean, reflect: true }) required = false\n\n private get _isDisabled(): boolean {\n return (\n this.disabled || this._formAssociation.isFormDisabled() || this._groupManagement.getContext()?.disabled === true\n )\n }\n\n private get _isManagedByGroup(): boolean {\n return this._groupManagement.getContext() !== undefined\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._isManagedByGroup && 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 isStateManaged: () => this._isManagedByGroup,\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._isManagedByGroup || !this.required || this._checked) {\n internals.setValidity({})\n return\n }\n internals.setValidity({ valueMissing: true }, '请选择一项')\n }\n\n private handleClick() {\n if (this._isDisabled || this._checked) return\n this._checked = true\n this._formAssociation.sync()\n this.requestUpdate('checked', false)\n // group-managed 时事件不冒泡/不组合,由 group 统一派发一次 host 事件\n const opts: EventInit = this._isManagedByGroup\n ? { bubbles: false, composed: false }\n : { bubbles: true, composed: true }\n this.dispatchEvent(new Event('input', opts))\n this.dispatchEvent(new Event('change', opts))\n }\n\n private handleKeyDown(e: KeyboardEvent) {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n this.handleClick()\n }\n }\n\n override render() {\n const cls = {\n 'wui-radio': true,\n 'is-checked': this._checked,\n 'is-disabled': this._isDisabled\n }\n\n return html`\n <label\n class=${classMap(cls)}\n tabindex=${this._isDisabled ? '-1' : '0'}\n role=\"radio\"\n aria-checked=${String(this._checked)}\n aria-disabled=${String(this._isDisabled)}\n @click=${this.handleClick}\n @keydown=${this.handleKeyDown}\n >\n <span class=\"wui-radio-circle\">\n <span class=\"wui-radio-dot\"></span>\n </span>\n <span class=\"wui-radio-label\"><slot></slot></span>\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-radio': WebUiRadio\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region src/components/radio/style.css?inline
|
|
2
|
-
var e = "*,:before,:after{box-sizing:border-box}:host{cursor:
|
|
2
|
+
var e = "*,:before,:after{box-sizing:border-box}:host{cursor:default;display:inline-block}:host([disabled]){cursor:not-allowed}.wui-radio{cursor:default;-webkit-user-select:none;user-select:none;font-size:var(--wui-font-size,14px);color:var(--wui-color-text,#1b1b1b);align-items:center;gap:10px;line-height:1;display:inline-flex}.wui-radio:focus-visible{outline:var(--wui-focus-ring-width,3px) solid var(--wui-color-focus-ring,#08f6);outline-offset:2px;border-radius:2147483647px}.wui-radio.is-disabled{cursor:not-allowed;color:var(--wui-color-text-secondary,#6a6a6a);opacity:.4}.wui-radio-circle{background-color:var(--wui-color-surface-raised,#f2f2f7);border-radius:2147483647px;flex-shrink:0;justify-content:center;align-items:center;width:18px;height:18px;transition:background-color .2s,border-color .2s;display:flex}.is-checked .wui-radio-circle{background-color:var(--wui-color-accent,#08f)}.wui-radio-dot{opacity:0;background-color:var(--wui-color-on-control,#fff);width:8px;height:8px;transition:opacity var(--wui-duration-trigger,.16s) ease, transform var(--wui-duration-trigger,.16s) var(--wui-ease-enter,cubic-bezier(.23, 1, .32, 1));border-radius:2147483647px;transform:scale(.85);box-shadow:inset 0 -1px 2px #0000001f,inset 0 1px 2px #ffffff80,0 0 4px #0088ff4d}.is-checked .wui-radio-dot{opacity:1;transform:scale(1)}.wui-radio-label{pointer-events:none}@media (prefers-reduced-motion:reduce){.wui-radio-dot,.is-checked .wui-radio-dot{transform:none}}";
|
|
3
3
|
//#endregion
|
|
4
4
|
export { e as default };
|
|
5
5
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.js","names":[],"sources":["../../../src/components/radio/style.css?inline"],"sourcesContent":["*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n:host {\n cursor:
|
|
1
|
+
{"version":3,"file":"style.js","names":[],"sources":["../../../src/components/radio/style.css?inline"],"sourcesContent":["*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n:host {\n cursor: default;\n display: inline-block;\n}\n\n:host([disabled]) {\n cursor: not-allowed;\n}\n\n.wui-radio {\n cursor: default;\n user-select: none;\n\n display: inline-flex;\n gap: 10px;\n align-items: center;\n\n font-size: var(--wui-font-size, 14px);\n line-height: 1;\n color: var(--wui-color-text, #1b1b1b);\n\n &:focus-visible {\n border-radius: calc(infinity * 1px);\n outline: var(--wui-focus-ring-width, 3px) solid var(--wui-color-focus-ring, rgb(0 136 255 / 0.4));\n outline-offset: 2px;\n }\n}\n\n.wui-radio.is-disabled {\n cursor: not-allowed;\n color: var(--wui-color-text-secondary, #6a6a6a);\n opacity: 0.4;\n}\n\n.wui-radio-circle {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n\n width: 18px;\n height: 18px;\n border-radius: calc(infinity * 1px);\n\n background-color: var(--wui-color-surface-raised, #f2f2f7);\n\n transition:\n background-color 0.2s ease,\n border-color 0.2s ease;\n}\n\n.is-checked .wui-radio-circle {\n background-color: var(--wui-color-accent, #08f);\n}\n\n.wui-radio-dot {\n transform: scale(0.85);\n\n width: 8px;\n height: 8px;\n border-radius: calc(infinity * 1px);\n\n opacity: 0;\n background-color: var(--wui-color-on-control, #fff);\n box-shadow:\n inset 0 -1px 2px rgb(0 0 0 / 0.12),\n inset 0 1px 2px rgb(255 255 255 / 0.5),\n 0 0 4px rgb(0 136 255 / 0.3);\n\n transition:\n opacity var(--wui-duration-trigger, 160ms) ease,\n transform var(--wui-duration-trigger, 160ms) var(--wui-ease-enter, cubic-bezier(0.23, 1, 0.32, 1));\n}\n\n.is-checked .wui-radio-dot {\n transform: scale(1);\n opacity: 1;\n}\n\n.wui-radio-label {\n pointer-events: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .wui-radio-dot,\n .is-checked .wui-radio-dot {\n transform: none;\n }\n}\n"],"mappings":""}
|
|
@@ -5,23 +5,17 @@ export declare class WebUiRadioGroup extends LitElement {
|
|
|
5
5
|
name: string;
|
|
6
6
|
disabled: boolean;
|
|
7
7
|
required: boolean;
|
|
8
|
-
private _internals?;
|
|
9
8
|
private _value;
|
|
10
|
-
private
|
|
11
|
-
private _initialValue;
|
|
9
|
+
private readonly _groupController;
|
|
12
10
|
get value(): string;
|
|
13
11
|
set value(v: string);
|
|
14
12
|
private get _isDisabled();
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
updated(changed: Map<string, unknown>): void;
|
|
13
|
+
private readonly _formAssociation;
|
|
14
|
+
private readonly _formAssociationController;
|
|
18
15
|
formResetCallback(): void;
|
|
19
16
|
formDisabledCallback(disabled: boolean): void;
|
|
20
|
-
|
|
17
|
+
formStateRestoreCallback(state: string | File | FormData | null): void;
|
|
21
18
|
private _syncValidity;
|
|
22
|
-
private _syncValueToChildren;
|
|
23
|
-
private _handleChildChange;
|
|
24
|
-
private _handleSlotChange;
|
|
25
19
|
render(): import('lit').TemplateResult<1>;
|
|
26
20
|
readonly $events: {
|
|
27
21
|
input: Event;
|
|
@@ -1,14 +1,57 @@
|
|
|
1
|
-
import e from "../../_virtual/_@oxc-project_runtime@0.
|
|
2
|
-
import t from "
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
1
|
+
import e from "../../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/decorate.js";
|
|
2
|
+
import { FormAssociationController as t, defineFormAssociation as n } from "../../shared/form-association/index.js";
|
|
3
|
+
import { GroupController as r, defineGroupCoordinator as i } from "../../shared/group-management/index.js";
|
|
4
|
+
import a from "./style.js";
|
|
5
|
+
import { LitElement as o, html as s, unsafeCSS as c } from "lit";
|
|
6
|
+
import { customElement as l, property as u, state as d } from "lit/decorators.js";
|
|
5
7
|
//#region src/components/radio-group/index.ts
|
|
6
|
-
var
|
|
8
|
+
var f = class extends o {
|
|
7
9
|
constructor(...e) {
|
|
8
|
-
super(...e), this.name = "", this.disabled = !1, this.required = !1, this._value = "", this.
|
|
10
|
+
super(...e), this.name = "", this.disabled = !1, this.required = !1, this._value = "", this._groupController = new r(this, i({
|
|
11
|
+
host: this,
|
|
12
|
+
getItems: () => [...this.querySelectorAll("web-ui-radio")],
|
|
13
|
+
getValue: () => this._value,
|
|
14
|
+
setValue: (e) => {
|
|
15
|
+
this.value = e;
|
|
16
|
+
},
|
|
17
|
+
getDisabled: () => this._isDisabled,
|
|
18
|
+
isItem: (e) => e instanceof HTMLElement && e.matches("web-ui-radio"),
|
|
19
|
+
isItemSelected: (e, t) => e.value === t,
|
|
20
|
+
getNextValue: (e, t) => e.checked ? e.value : t,
|
|
21
|
+
valuesEqual: (e, t) => e === t,
|
|
22
|
+
copyValue: (e) => e,
|
|
23
|
+
setItemSelected: (e, t) => {
|
|
24
|
+
e.checked = t;
|
|
25
|
+
},
|
|
26
|
+
dispatchValueChange: () => {
|
|
27
|
+
this.dispatchEvent(new Event("input", {
|
|
28
|
+
bubbles: !0,
|
|
29
|
+
composed: !0
|
|
30
|
+
})), this.dispatchEvent(new Event("change", {
|
|
31
|
+
bubbles: !0,
|
|
32
|
+
composed: !0
|
|
33
|
+
}));
|
|
34
|
+
}
|
|
35
|
+
}).make()), this._formAssociation = n({
|
|
36
|
+
host: this,
|
|
37
|
+
initialize: () => {
|
|
38
|
+
let e = this.getAttribute("value");
|
|
39
|
+
e !== null && (this.value = e);
|
|
40
|
+
},
|
|
41
|
+
getState: () => this._value,
|
|
42
|
+
setState: (e) => {
|
|
43
|
+
this.value = e;
|
|
44
|
+
},
|
|
45
|
+
getFormValue: () => this.name && this._value ? this._value : null,
|
|
46
|
+
getFormState: () => this._value,
|
|
47
|
+
restoreState: (e) => {
|
|
48
|
+
typeof e == "string" && (this.value = e);
|
|
49
|
+
},
|
|
50
|
+
syncValidity: () => this._syncValidity()
|
|
51
|
+
}).make(), this._formAssociationController = new t(this, this._formAssociation);
|
|
9
52
|
}
|
|
10
53
|
static {
|
|
11
|
-
this.styles =
|
|
54
|
+
this.styles = c(a);
|
|
12
55
|
}
|
|
13
56
|
static {
|
|
14
57
|
this.formAssociated = !0;
|
|
@@ -18,70 +61,45 @@ var c = class extends n {
|
|
|
18
61
|
}
|
|
19
62
|
set value(e) {
|
|
20
63
|
let t = this._value;
|
|
21
|
-
this._value = e, this.
|
|
64
|
+
this._value = e, this._formAssociation.sync(), this.requestUpdate("value", t);
|
|
22
65
|
}
|
|
23
66
|
get _isDisabled() {
|
|
24
|
-
return this.disabled || this.
|
|
25
|
-
}
|
|
26
|
-
connectedCallback() {
|
|
27
|
-
super.connectedCallback(), this._internals ||= this.attachInternals();
|
|
28
|
-
let e = this.getAttribute("value");
|
|
29
|
-
e !== null && (this.value = e), this._initialValue = this._value, this.addEventListener("change", this._handleChildChange, !0);
|
|
30
|
-
}
|
|
31
|
-
disconnectedCallback() {
|
|
32
|
-
super.disconnectedCallback(), this.removeEventListener("change", this._handleChildChange, !0);
|
|
33
|
-
}
|
|
34
|
-
updated(e) {
|
|
35
|
-
(e.has("value") || e.has("disabled") || e.has("_formDisabled")) && this._syncValueToChildren(), this._syncFormValue(), this._syncValidity();
|
|
67
|
+
return this.disabled || this._formAssociation.isFormDisabled();
|
|
36
68
|
}
|
|
37
69
|
formResetCallback() {
|
|
38
|
-
this.
|
|
70
|
+
this._formAssociation.reset();
|
|
39
71
|
}
|
|
40
72
|
formDisabledCallback(e) {
|
|
41
|
-
this.
|
|
73
|
+
this._formAssociation.setDisabled(e), this._groupController.sync();
|
|
42
74
|
}
|
|
43
|
-
|
|
44
|
-
this.
|
|
75
|
+
formStateRestoreCallback(e) {
|
|
76
|
+
this._formAssociation.restore(e);
|
|
45
77
|
}
|
|
46
78
|
_syncValidity() {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
if (this._isDisabled) return;
|
|
56
|
-
let t = e.target;
|
|
57
|
-
if (!t.matches?.("web-ui-radio")) return;
|
|
58
|
-
let n = t;
|
|
59
|
-
!n.checked || n.value === this._value || (this.value = n.value, this.dispatchEvent(new Event("input", {
|
|
60
|
-
bubbles: !0,
|
|
61
|
-
composed: !0
|
|
62
|
-
})), this.dispatchEvent(new Event("change", {
|
|
63
|
-
bubbles: !0,
|
|
64
|
-
composed: !0
|
|
65
|
-
})));
|
|
66
|
-
}
|
|
67
|
-
_handleSlotChange() {
|
|
68
|
-
this._syncValueToChildren();
|
|
79
|
+
let e = this._formAssociation.getInternals();
|
|
80
|
+
if (!(!e || typeof e.setValidity != "function")) {
|
|
81
|
+
if (this._isDisabled || !this.required || this._value) {
|
|
82
|
+
e.setValidity({});
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
e.setValidity({ valueMissing: !0 }, "请选择一项");
|
|
86
|
+
}
|
|
69
87
|
}
|
|
70
88
|
render() {
|
|
71
|
-
return
|
|
89
|
+
return s`<div class="wui-radio-group"><slot></slot></div>`;
|
|
72
90
|
}
|
|
73
91
|
};
|
|
74
|
-
e([
|
|
92
|
+
e([u({
|
|
75
93
|
type: String,
|
|
76
94
|
reflect: !0
|
|
77
|
-
})],
|
|
95
|
+
})], f.prototype, "name", void 0), e([u({
|
|
78
96
|
type: Boolean,
|
|
79
97
|
reflect: !0
|
|
80
|
-
})],
|
|
98
|
+
})], f.prototype, "disabled", void 0), e([u({
|
|
81
99
|
type: Boolean,
|
|
82
100
|
reflect: !0
|
|
83
|
-
})],
|
|
101
|
+
})], f.prototype, "required", void 0), e([d()], f.prototype, "_value", void 0), f = e([l("web-ui-radio-group")], f);
|
|
84
102
|
//#endregion
|
|
85
|
-
export {
|
|
103
|
+
export { f as WebUiRadioGroup };
|
|
86
104
|
|
|
87
105
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/radio-group/index.ts"],"sourcesContent":["import { html, LitElement, unsafeCSS } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\n\nimport type { WebUiRadio } from '../radio'\n\nimport style from './style.css?inline'\n\n@customElement('web-ui-radio-group')\nexport class WebUiRadioGroup extends LitElement {\n static override styles = unsafeCSS(style)\n static formAssociated = true\n\n @property({ type: String, reflect: true }) name = ''\n @property({ type: Boolean, reflect: true }) disabled = false\n @property({ type: Boolean, reflect: true }) required = false\n\n
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/radio-group/index.ts"],"sourcesContent":["import { html, LitElement, unsafeCSS } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\n\nimport { defineFormAssociation, FormAssociationController } from '@/shared/form-association'\nimport { defineGroupCoordinator, GroupController } from '@/shared/group-management'\n\nimport type { WebUiRadio } from '../radio'\n\nimport style from './style.css?inline'\n\n@customElement('web-ui-radio-group')\nexport class WebUiRadioGroup extends LitElement {\n static override styles = unsafeCSS(style)\n static formAssociated = true\n\n @property({ type: String, reflect: true }) name = ''\n @property({ type: Boolean, reflect: true }) disabled = false\n @property({ type: Boolean, reflect: true }) required = false\n\n @state() private _value = ''\n\n private readonly _groupController = new GroupController(\n this,\n defineGroupCoordinator<WebUiRadio, string>({\n host: this,\n getItems: () => [...this.querySelectorAll<WebUiRadio>('web-ui-radio')],\n getValue: () => this._value,\n setValue: value => {\n this.value = value\n },\n getDisabled: () => this._isDisabled,\n isItem: (target): target is WebUiRadio => target instanceof HTMLElement && target.matches('web-ui-radio'),\n isItemSelected: (radio, value) => radio.value === value,\n getNextValue: (radio, value) => (radio.checked ? radio.value : value),\n valuesEqual: (a, b) => a === b,\n copyValue: value => value,\n setItemSelected: (radio, selected) => {\n radio.checked = selected\n },\n dispatchValueChange: () => {\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }))\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }))\n }\n }).make()\n )\n\n get value(): string {\n return this._value\n }\n\n set value(v: string) {\n const old = this._value\n this._value = v\n this._formAssociation.sync()\n this.requestUpdate('value', old)\n }\n\n private get _isDisabled(): boolean {\n return this.disabled || this._formAssociation.isFormDisabled()\n }\n\n private readonly _formAssociation = defineFormAssociation<string>({\n host: this,\n initialize: () => {\n const attributeValue = this.getAttribute('value')\n if (attributeValue !== null) this.value = attributeValue\n },\n getState: () => this._value,\n setState: value => {\n this.value = value\n },\n getFormValue: () => (this.name && this._value ? this._value : null),\n getFormState: () => this._value,\n restoreState: state => {\n if (typeof state === 'string') this.value = state\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 this._groupController.sync()\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._value) {\n internals.setValidity({})\n return\n }\n internals.setValidity({ valueMissing: true }, '请选择一项')\n }\n\n override render() {\n return html`<div class=\"wui-radio-group\"><slot></slot></div>`\n }\n\n declare readonly $events: {\n input: Event\n change: Event\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'web-ui-radio-group': WebUiRadioGroup\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,27 +1,29 @@
|
|
|
1
|
-
import { LitElement
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
2
|
export declare class WebUiSegmented extends LitElement {
|
|
3
|
-
static styles: import('lit').CSSResult
|
|
3
|
+
static styles: import('lit').CSSResult;
|
|
4
4
|
static formAssociated: boolean;
|
|
5
5
|
name: string;
|
|
6
6
|
disabled: boolean;
|
|
7
7
|
required: boolean;
|
|
8
|
-
private _internals?;
|
|
9
8
|
private _value;
|
|
10
|
-
private
|
|
11
|
-
private
|
|
9
|
+
private _indicatorReady;
|
|
10
|
+
private _pressed;
|
|
11
|
+
private _isDragging;
|
|
12
|
+
private _dragGestureHandle;
|
|
13
|
+
disconnectedCallback(): void;
|
|
14
|
+
private readonly _groupController;
|
|
12
15
|
get value(): string;
|
|
13
16
|
set value(v: string);
|
|
14
|
-
private readonly childObserver;
|
|
15
|
-
private _syncPropsToChildren;
|
|
16
17
|
private get _isDisabled();
|
|
17
18
|
private _updateIndicator;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
private
|
|
19
|
+
private handlePointerDown;
|
|
20
|
+
private handlePointerUp;
|
|
21
|
+
private handlePointerLeave;
|
|
22
|
+
private readonly _formAssociation;
|
|
23
|
+
private readonly _formAssociationController;
|
|
23
24
|
formResetCallback(): void;
|
|
24
25
|
formDisabledCallback(disabled: boolean): void;
|
|
26
|
+
formStateRestoreCallback(state: string | File | FormData | null): void;
|
|
25
27
|
render(): import('lit').TemplateResult<1>;
|
|
26
28
|
readonly $events: {
|
|
27
29
|
input: Event;
|