@greypan/web-ui 5.0.0 → 6.1.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 +97 -23
- package/README.md +112 -21
- 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/components/autocomplete/index.d.ts +367 -4
- package/dist/components/autocomplete/index.js +83 -77
- 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/style.js +1 -1
- package/dist/components/avatar/style.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/style.js +1 -1
- package/dist/components/badge/style.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/style.js +1 -1
- package/dist/components/button-group/style.js.map +1 -1
- package/dist/components/checkbox/index.d.ts +366 -5
- package/dist/components/checkbox/index.js +19 -31
- 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 +366 -4
- package/dist/components/checkbox-group/index.js +16 -25
- package/dist/components/checkbox-group/index.js.map +1 -1
- package/dist/components/collapse/index.js +24 -27
- package/dist/components/collapse/index.js.map +1 -1
- package/dist/components/context-menu/index.d.ts +6 -34
- package/dist/components/context-menu/index.js +88 -201
- package/dist/components/context-menu/index.js.map +1 -1
- package/dist/components/dialog/index.js +20 -23
- 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.js +54 -57
- 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 +11 -14
- package/dist/components/dropdown/index.js +128 -155
- package/dist/components/dropdown/index.js.map +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/style.js +1 -1
- package/dist/components/dropdown-item/style.js.map +1 -1
- package/dist/components/empty/style.js +1 -1
- package/dist/components/empty/style.js.map +1 -1
- package/dist/components/input/index.d.ts +366 -5
- package/dist/components/input/index.js +35 -47
- 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 +366 -5
- package/dist/components/input-number/index.js +31 -44
- 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/style.js +1 -1
- package/dist/components/layout/style.js.map +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 -0
- package/dist/components/popover/index.js +33 -44
- 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 +366 -5
- package/dist/components/radio/index.js +19 -31
- 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 +366 -4
- package/dist/components/radio-group/index.js +16 -25
- package/dist/components/radio-group/index.js.map +1 -1
- package/dist/components/segmented/index.d.ts +366 -4
- package/dist/components/segmented/index.js +26 -35
- 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/style.js +1 -1
- package/dist/components/segmented-trigger/style.js.map +1 -1
- package/dist/components/select/index.d.ts +368 -5
- package/dist/components/select/index.js +65 -67
- 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 +366 -5
- package/dist/components/slider/index.js +38 -50
- 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/style.js +1 -1
- package/dist/components/spinner/style.js.map +1 -1
- package/dist/components/switch/index.d.ts +366 -5
- package/dist/components/switch/index.js +26 -38
- 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 +366 -5
- package/dist/components/textarea/index.js +43 -57
- 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/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/tooltip/index.d.ts +1 -0
- package/dist/components/tooltip/index.js +32 -46
- 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/shared/form-association/index.js +31 -4
- package/dist/shared/form-association/index.js.map +1 -1
- package/dist/shared/menu-behavior/index.js +112 -0
- package/dist/shared/menu-behavior/index.js.map +1 -0
- package/dist/shared/menu-portal/menu-tree.js +60 -1
- package/dist/shared/menu-portal/menu-tree.js.map +1 -1
- package/dist/shared/open-state/index.js +12 -0
- package/dist/shared/open-state/index.js.map +1 -0
- package/dist/shared/option-portal/combobox-shell.js +41 -0
- package/dist/shared/option-portal/combobox-shell.js.map +1 -0
- package/dist/shared/option-portal/index.js +23 -22
- package/dist/shared/option-portal/index.js.map +1 -1
- package/dist/shared/overlay/overlay.js.map +1 -1
- package/dist/shared/overlay/placement-props.js +19 -0
- package/dist/shared/overlay/placement-props.js.map +1 -0
- package/dist/shared/overlay/portal.js +94 -20
- package/dist/shared/overlay/portal.js.map +1 -1
- package/package.json +6 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.js","names":[],"sources":["../../../src/components/input/style.css?inline"],"sourcesContent":["*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n:host {\n --wui-input-clear-color: var(--wui-color-text-tertiary,
|
|
1
|
+
{"version":3,"file":"style.js","names":[],"sources":["../../../src/components/input/style.css?inline"],"sourcesContent":["*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n:host {\n --wui-input-clear-color: var(--wui-color-text-tertiary, color-mix(in srgb, var(--wui-color-text) 35%, transparent));\n display: inline-block;\n}\n\n:host([disabled]) {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.wui-input-inner {\n --wui-glass-corner-radius: calc(var(--wui-control-size, 36px) / 2);\n position: relative;\n\n display: flex;\n gap: 8px;\n align-items: center;\n\n box-sizing: border-box;\n width: var(--wui-input-width, 200px);\n min-width: var(--wui-control-size, 36px);\n height: var(--wui-control-size, 36px);\n padding: 0 12px;\n border-radius: var(--wui-radius-control, calc(infinity * 1px));\n}\n\n:host([full]) {\n display: block;\n}\n\n:host([full]) .wui-input-inner {\n width: 100%;\n}\n\n/* ===== Borderless ===== */\n\n:host([borderless]) .wui-input-inner {\n border: none;\n\n background: transparent;\n\n /* stylelint-disable-next-line property-no-vendor-prefix */\n -webkit-backdrop-filter: none;\n backdrop-filter: none;\n box-shadow: none;\n}\n\n/* borderless 必须移除 glass 描边环(.wui-glass::before 底环 + 对角光泽),\n 否则无框后仍残留 1px 胶囊描边 */\n:host([borderless]) .wui-input-inner::before {\n content: none;\n}\n\n/* Focus ring 独立成 ::after 层:base/focused 都是显式 box-shadow,保证所有变体都能过渡 */\n.wui-input-inner::after {\n pointer-events: none;\n content: '';\n\n position: absolute;\n inset: 0;\n\n border-radius: inherit;\n\n box-shadow:\n inset 0 0 0 1px transparent,\n 0 0 0 var(--wui-focus-ring-width, 3px) transparent;\n\n transition: box-shadow var(--wui-duration-focus, 200ms);\n}\n\n:host([focused]) .wui-input-inner::after {\n box-shadow:\n inset 0 0 0 1px var(--wui-color-accent, #08f),\n 0 0 0 var(--wui-focus-ring-width, 3px) var(--wui-color-focus-ring, rgb(0 136 255 / 0.4));\n}\n\n/* ===== Input ===== */\n\ninput {\n flex: 1;\n\n min-width: 0;\n height: 100%;\n margin: 0;\n padding: 0;\n border: none;\n\n /* 表单控件不继承字体;显式继承以对齐宿主排版,避免 UA 默认字体差异 */\n font: inherit;\n font-size: var(--wui-font-size, 14px);\n color: var(--wui-color-text, #1b1b1b);\n\n background: transparent;\n outline: none;\n\n &::placeholder {\n color: var(--wui-color-text-secondary, #6a6a6a);\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n }\n}\n\n/* ===== Prefix / Suffix ===== */\n\nslot {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n\n font-size: var(--wui-font-size, 14px);\n color: var(--wui-color-text-secondary, #6a6a6a);\n}\n\n/* slot 无 slotted 内容时折叠 */\nslot.empty {\n display: none;\n}\n\n/* ===== Clear button ===== */\n\n/* 复用 web-ui-button icon ghost:仅覆盖颜色为 faint,保持弱意图清除图标观感;\n 负 margin-left 抵消容器 flex gap,让清除按钮紧贴输入文本\n 负 margin-right 抵消 button padding,让清除按钮右侧 spacing 视觉上协调 */\n.wui-input-inner web-ui-button[variant='ghost'] {\n --wui-button-color: var(--wui-input-clear-color);\n margin-right: -4px;\n margin-left: -8px;\n}\n\n/* ===== Disabled ===== */\n"],"mappings":""}
|
|
@@ -1,6 +1,369 @@
|
|
|
1
1
|
import { LitElement } from 'lit';
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
declare const WebUiInputNumber_base: {
|
|
3
|
+
new (...args: any[]): {
|
|
4
|
+
formResetCallback(): void;
|
|
5
|
+
formDisabledCallback(disabled: boolean): void;
|
|
6
|
+
formStateRestoreCallback(state: File | FormData | string | null): void;
|
|
7
|
+
accessKey: string;
|
|
8
|
+
readonly accessKeyLabel: string;
|
|
9
|
+
autocapitalize: string;
|
|
10
|
+
autocorrect: boolean;
|
|
11
|
+
dir: string;
|
|
12
|
+
draggable: boolean;
|
|
13
|
+
hidden: boolean | "until-found";
|
|
14
|
+
inert: boolean;
|
|
15
|
+
innerText: string;
|
|
16
|
+
lang: string;
|
|
17
|
+
readonly offsetHeight: number;
|
|
18
|
+
readonly offsetLeft: number;
|
|
19
|
+
readonly offsetParent: Element | null;
|
|
20
|
+
readonly offsetTop: number;
|
|
21
|
+
readonly offsetWidth: number;
|
|
22
|
+
outerText: string;
|
|
23
|
+
popover: string | null;
|
|
24
|
+
spellcheck: boolean;
|
|
25
|
+
title: string;
|
|
26
|
+
translate: boolean;
|
|
27
|
+
writingSuggestions: string;
|
|
28
|
+
attachInternals(): ElementInternals;
|
|
29
|
+
click(): void;
|
|
30
|
+
hidePopover(): void;
|
|
31
|
+
showPopover(options?: ShowPopoverOptions): void;
|
|
32
|
+
togglePopover(options?: TogglePopoverOptions | boolean): boolean;
|
|
33
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
34
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
35
|
+
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
36
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
37
|
+
readonly attributes: NamedNodeMap;
|
|
38
|
+
get classList(): DOMTokenList;
|
|
39
|
+
set classList(value: string);
|
|
40
|
+
className: string;
|
|
41
|
+
readonly clientHeight: number;
|
|
42
|
+
readonly clientLeft: number;
|
|
43
|
+
readonly clientTop: number;
|
|
44
|
+
readonly clientWidth: number;
|
|
45
|
+
readonly currentCSSZoom: number;
|
|
46
|
+
readonly customElementRegistry: CustomElementRegistry | null;
|
|
47
|
+
id: string;
|
|
48
|
+
innerHTML: string;
|
|
49
|
+
readonly localName: string;
|
|
50
|
+
readonly namespaceURI: string | null;
|
|
51
|
+
onfullscreenchange: ((this: Element, ev: Event) => any) | null;
|
|
52
|
+
onfullscreenerror: ((this: Element, ev: Event) => any) | null;
|
|
53
|
+
outerHTML: string;
|
|
54
|
+
readonly ownerDocument: Document;
|
|
55
|
+
get part(): DOMTokenList;
|
|
56
|
+
set part(value: string);
|
|
57
|
+
readonly prefix: string | null;
|
|
58
|
+
readonly scrollHeight: number;
|
|
59
|
+
scrollLeft: number;
|
|
60
|
+
scrollTop: number;
|
|
61
|
+
readonly scrollWidth: number;
|
|
62
|
+
readonly shadowRoot: ShadowRoot | null;
|
|
63
|
+
slot: string;
|
|
64
|
+
readonly tagName: string;
|
|
65
|
+
attachShadow(init: ShadowRootInit): ShadowRoot;
|
|
66
|
+
checkVisibility(options?: CheckVisibilityOptions): boolean;
|
|
67
|
+
closest<K extends keyof HTMLElementTagNameMap>(selector: K): HTMLElementTagNameMap[K] | null;
|
|
68
|
+
closest<K extends keyof SVGElementTagNameMap>(selector: K): SVGElementTagNameMap[K] | null;
|
|
69
|
+
closest<K extends keyof MathMLElementTagNameMap>(selector: K): MathMLElementTagNameMap[K] | null;
|
|
70
|
+
closest<E extends Element = Element>(selectors: string): E | null;
|
|
71
|
+
computedStyleMap(): StylePropertyMapReadOnly;
|
|
72
|
+
getAttribute(qualifiedName: string): string | null;
|
|
73
|
+
getAttributeNS(namespace: string | null, localName: string): string | null;
|
|
74
|
+
getAttributeNames(): string[];
|
|
75
|
+
getAttributeNode(qualifiedName: string): Attr | null;
|
|
76
|
+
getAttributeNodeNS(namespace: string | null, localName: string): Attr | null;
|
|
77
|
+
getBoundingClientRect(): DOMRect;
|
|
78
|
+
getClientRects(): DOMRectList;
|
|
79
|
+
getElementsByClassName(classNames: string): HTMLCollectionOf<Element>;
|
|
80
|
+
getElementsByTagName<K extends keyof HTMLElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<HTMLElementTagNameMap[K]>;
|
|
81
|
+
getElementsByTagName<K extends keyof SVGElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<SVGElementTagNameMap[K]>;
|
|
82
|
+
getElementsByTagName<K extends keyof MathMLElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<MathMLElementTagNameMap[K]>;
|
|
83
|
+
getElementsByTagName<K extends keyof HTMLElementDeprecatedTagNameMap>(qualifiedName: K): HTMLCollectionOf<HTMLElementDeprecatedTagNameMap[K]>;
|
|
84
|
+
getElementsByTagName(qualifiedName: string): HTMLCollectionOf<Element>;
|
|
85
|
+
getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollectionOf<HTMLElement>;
|
|
86
|
+
getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollectionOf<SVGElement>;
|
|
87
|
+
getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1998/Math/MathML", localName: string): HTMLCollectionOf<MathMLElement>;
|
|
88
|
+
getElementsByTagNameNS(namespace: string | null, localName: string): HTMLCollectionOf<Element>;
|
|
89
|
+
getHTML(options?: GetHTMLOptions): string;
|
|
90
|
+
hasAttribute(qualifiedName: string): boolean;
|
|
91
|
+
hasAttributeNS(namespace: string | null, localName: string): boolean;
|
|
92
|
+
hasAttributes(): boolean;
|
|
93
|
+
hasPointerCapture(pointerId: number): boolean;
|
|
94
|
+
insertAdjacentElement(where: InsertPosition, element: Element): Element | null;
|
|
95
|
+
insertAdjacentHTML(position: InsertPosition, string: string): void;
|
|
96
|
+
insertAdjacentText(where: InsertPosition, data: string): void;
|
|
97
|
+
matches<K extends keyof HTMLElementTagNameMap>(selectors: K): this is HTMLElementTagNameMap[K];
|
|
98
|
+
matches<K extends keyof SVGElementTagNameMap>(selectors: K): this is SVGElementTagNameMap[K];
|
|
99
|
+
matches<K extends keyof MathMLElementTagNameMap>(selectors: K): this is MathMLElementTagNameMap[K];
|
|
100
|
+
matches(selectors: string): boolean;
|
|
101
|
+
releasePointerCapture(pointerId: number): void;
|
|
102
|
+
removeAttribute(qualifiedName: string): void;
|
|
103
|
+
removeAttributeNS(namespace: string | null, localName: string): void;
|
|
104
|
+
removeAttributeNode(attr: Attr): Attr;
|
|
105
|
+
requestFullscreen(options?: FullscreenOptions): Promise<void>;
|
|
106
|
+
requestPointerLock(options?: PointerLockOptions): Promise<void>;
|
|
107
|
+
scroll(options?: ScrollToOptions): void;
|
|
108
|
+
scroll(x: number, y: number): void;
|
|
109
|
+
scrollBy(options?: ScrollToOptions): void;
|
|
110
|
+
scrollBy(x: number, y: number): void;
|
|
111
|
+
scrollIntoView(arg?: boolean | ScrollIntoViewOptions): void;
|
|
112
|
+
scrollTo(options?: ScrollToOptions): void;
|
|
113
|
+
scrollTo(x: number, y: number): void;
|
|
114
|
+
setAttribute(qualifiedName: string, value: string): void;
|
|
115
|
+
setAttributeNS(namespace: string | null, qualifiedName: string, value: string): void;
|
|
116
|
+
setAttributeNode(attr: Attr): Attr | null;
|
|
117
|
+
setAttributeNodeNS(attr: Attr): Attr | null;
|
|
118
|
+
setHTMLUnsafe(html: string): void;
|
|
119
|
+
setPointerCapture(pointerId: number): void;
|
|
120
|
+
toggleAttribute(qualifiedName: string, force?: boolean): boolean;
|
|
121
|
+
webkitMatchesSelector(selectors: string): boolean;
|
|
122
|
+
get textContent(): string;
|
|
123
|
+
set textContent(value: string | null);
|
|
124
|
+
readonly baseURI: string;
|
|
125
|
+
readonly childNodes: NodeListOf<ChildNode>;
|
|
126
|
+
readonly firstChild: ChildNode | null;
|
|
127
|
+
readonly isConnected: boolean;
|
|
128
|
+
readonly lastChild: ChildNode | null;
|
|
129
|
+
readonly nextSibling: ChildNode | null;
|
|
130
|
+
readonly nodeName: string;
|
|
131
|
+
readonly nodeType: number;
|
|
132
|
+
nodeValue: string | null;
|
|
133
|
+
readonly parentElement: HTMLElement | null;
|
|
134
|
+
readonly parentNode: ParentNode | null;
|
|
135
|
+
readonly previousSibling: ChildNode | null;
|
|
136
|
+
appendChild<T extends Node>(node: T): T;
|
|
137
|
+
cloneNode(subtree?: boolean): Node;
|
|
138
|
+
compareDocumentPosition(other: Node): number;
|
|
139
|
+
contains(other: Node | null): boolean;
|
|
140
|
+
getRootNode(options?: GetRootNodeOptions): Node;
|
|
141
|
+
hasChildNodes(): boolean;
|
|
142
|
+
insertBefore<T extends Node>(node: T, child: Node | null): T;
|
|
143
|
+
isDefaultNamespace(namespace: string | null): boolean;
|
|
144
|
+
isEqualNode(otherNode: Node | null): boolean;
|
|
145
|
+
isSameNode(otherNode: Node | null): boolean;
|
|
146
|
+
lookupNamespaceURI(prefix: string | null): string | null;
|
|
147
|
+
lookupPrefix(namespace: string | null): string | null;
|
|
148
|
+
normalize(): void;
|
|
149
|
+
removeChild<T extends Node>(child: T): T;
|
|
150
|
+
replaceChild<T extends Node>(node: Node, child: T): T;
|
|
151
|
+
readonly ELEMENT_NODE: 1;
|
|
152
|
+
readonly ATTRIBUTE_NODE: 2;
|
|
153
|
+
readonly TEXT_NODE: 3;
|
|
154
|
+
readonly CDATA_SECTION_NODE: 4;
|
|
155
|
+
readonly ENTITY_REFERENCE_NODE: 5;
|
|
156
|
+
readonly ENTITY_NODE: 6;
|
|
157
|
+
readonly PROCESSING_INSTRUCTION_NODE: 7;
|
|
158
|
+
readonly COMMENT_NODE: 8;
|
|
159
|
+
readonly DOCUMENT_NODE: 9;
|
|
160
|
+
readonly DOCUMENT_TYPE_NODE: 10;
|
|
161
|
+
readonly DOCUMENT_FRAGMENT_NODE: 11;
|
|
162
|
+
readonly NOTATION_NODE: 12;
|
|
163
|
+
readonly DOCUMENT_POSITION_DISCONNECTED: 1;
|
|
164
|
+
readonly DOCUMENT_POSITION_PRECEDING: 2;
|
|
165
|
+
readonly DOCUMENT_POSITION_FOLLOWING: 4;
|
|
166
|
+
readonly DOCUMENT_POSITION_CONTAINS: 8;
|
|
167
|
+
readonly DOCUMENT_POSITION_CONTAINED_BY: 16;
|
|
168
|
+
readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: 32;
|
|
169
|
+
dispatchEvent(event: Event): boolean;
|
|
170
|
+
ariaActiveDescendantElement: Element | null;
|
|
171
|
+
ariaAtomic: string | null;
|
|
172
|
+
ariaAutoComplete: string | null;
|
|
173
|
+
ariaBrailleLabel: string | null;
|
|
174
|
+
ariaBrailleRoleDescription: string | null;
|
|
175
|
+
ariaBusy: string | null;
|
|
176
|
+
ariaChecked: string | null;
|
|
177
|
+
ariaColCount: string | null;
|
|
178
|
+
ariaColIndex: string | null;
|
|
179
|
+
ariaColIndexText: string | null;
|
|
180
|
+
ariaColSpan: string | null;
|
|
181
|
+
ariaControlsElements: ReadonlyArray<Element> | null;
|
|
182
|
+
ariaCurrent: string | null;
|
|
183
|
+
ariaDescribedByElements: ReadonlyArray<Element> | null;
|
|
184
|
+
ariaDescription: string | null;
|
|
185
|
+
ariaDetailsElements: ReadonlyArray<Element> | null;
|
|
186
|
+
ariaDisabled: string | null;
|
|
187
|
+
ariaErrorMessageElements: ReadonlyArray<Element> | null;
|
|
188
|
+
ariaExpanded: string | null;
|
|
189
|
+
ariaFlowToElements: ReadonlyArray<Element> | null;
|
|
190
|
+
ariaHasPopup: string | null;
|
|
191
|
+
ariaHidden: string | null;
|
|
192
|
+
ariaInvalid: string | null;
|
|
193
|
+
ariaKeyShortcuts: string | null;
|
|
194
|
+
ariaLabel: string | null;
|
|
195
|
+
ariaLabelledByElements: ReadonlyArray<Element> | null;
|
|
196
|
+
ariaLevel: string | null;
|
|
197
|
+
ariaLive: string | null;
|
|
198
|
+
ariaModal: string | null;
|
|
199
|
+
ariaMultiLine: string | null;
|
|
200
|
+
ariaMultiSelectable: string | null;
|
|
201
|
+
ariaOrientation: string | null;
|
|
202
|
+
ariaOwnsElements: ReadonlyArray<Element> | null;
|
|
203
|
+
ariaPlaceholder: string | null;
|
|
204
|
+
ariaPosInSet: string | null;
|
|
205
|
+
ariaPressed: string | null;
|
|
206
|
+
ariaReadOnly: string | null;
|
|
207
|
+
ariaRelevant: string | null;
|
|
208
|
+
ariaRequired: string | null;
|
|
209
|
+
ariaRoleDescription: string | null;
|
|
210
|
+
ariaRowCount: string | null;
|
|
211
|
+
ariaRowIndex: string | null;
|
|
212
|
+
ariaRowIndexText: string | null;
|
|
213
|
+
ariaRowSpan: string | null;
|
|
214
|
+
ariaSelected: string | null;
|
|
215
|
+
ariaSetSize: string | null;
|
|
216
|
+
ariaSort: string | null;
|
|
217
|
+
ariaValueMax: string | null;
|
|
218
|
+
ariaValueMin: string | null;
|
|
219
|
+
ariaValueNow: string | null;
|
|
220
|
+
ariaValueText: string | null;
|
|
221
|
+
role: string | null;
|
|
222
|
+
animate(keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeAnimationOptions): Animation;
|
|
223
|
+
getAnimations(options?: GetAnimationsOptions): Animation[];
|
|
224
|
+
after(...nodes: (Node | string)[]): void;
|
|
225
|
+
before(...nodes: (Node | string)[]): void;
|
|
226
|
+
remove(): void;
|
|
227
|
+
replaceWith(...nodes: (Node | string)[]): void;
|
|
228
|
+
readonly nextElementSibling: Element | null;
|
|
229
|
+
readonly previousElementSibling: Element | null;
|
|
230
|
+
readonly childElementCount: number;
|
|
231
|
+
readonly children: HTMLCollection;
|
|
232
|
+
readonly firstElementChild: Element | null;
|
|
233
|
+
readonly lastElementChild: Element | null;
|
|
234
|
+
append(...nodes: (Node | string)[]): void;
|
|
235
|
+
moveBefore(node: Node, child: Node | null): void;
|
|
236
|
+
prepend(...nodes: (Node | string)[]): void;
|
|
237
|
+
querySelector<K extends keyof HTMLElementTagNameMap>(selectors: K): HTMLElementTagNameMap[K] | null;
|
|
238
|
+
querySelector<K extends keyof SVGElementTagNameMap>(selectors: K): SVGElementTagNameMap[K] | null;
|
|
239
|
+
querySelector<K extends keyof MathMLElementTagNameMap>(selectors: K): MathMLElementTagNameMap[K] | null;
|
|
240
|
+
querySelector<K extends keyof HTMLElementDeprecatedTagNameMap>(selectors: K): HTMLElementDeprecatedTagNameMap[K] | null;
|
|
241
|
+
querySelector<E extends Element = Element>(selectors: string): E | null;
|
|
242
|
+
querySelectorAll<K extends keyof HTMLElementTagNameMap>(selectors: K): NodeListOf<HTMLElementTagNameMap[K]>;
|
|
243
|
+
querySelectorAll<K extends keyof SVGElementTagNameMap>(selectors: K): NodeListOf<SVGElementTagNameMap[K]>;
|
|
244
|
+
querySelectorAll<K extends keyof MathMLElementTagNameMap>(selectors: K): NodeListOf<MathMLElementTagNameMap[K]>;
|
|
245
|
+
querySelectorAll<K extends keyof HTMLElementDeprecatedTagNameMap>(selectors: K): NodeListOf<HTMLElementDeprecatedTagNameMap[K]>;
|
|
246
|
+
querySelectorAll<E extends Element = Element>(selectors: string): NodeListOf<E>;
|
|
247
|
+
replaceChildren(...nodes: (Node | string)[]): void;
|
|
248
|
+
readonly assignedSlot: HTMLSlotElement | null;
|
|
249
|
+
readonly attributeStyleMap: StylePropertyMap;
|
|
250
|
+
get style(): CSSStyleDeclaration;
|
|
251
|
+
set style(cssText: string);
|
|
252
|
+
contentEditable: string;
|
|
253
|
+
enterKeyHint: string;
|
|
254
|
+
inputMode: string;
|
|
255
|
+
readonly isContentEditable: boolean;
|
|
256
|
+
onabort: ((this: GlobalEventHandlers, ev: UIEvent) => any) | null;
|
|
257
|
+
onanimationcancel: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
|
|
258
|
+
onanimationend: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
|
|
259
|
+
onanimationiteration: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
|
|
260
|
+
onanimationstart: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
|
|
261
|
+
onauxclick: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
262
|
+
onbeforeinput: ((this: GlobalEventHandlers, ev: InputEvent) => any) | null;
|
|
263
|
+
onbeforematch: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
264
|
+
onbeforetoggle: ((this: GlobalEventHandlers, ev: ToggleEvent) => any) | null;
|
|
265
|
+
onblur: ((this: GlobalEventHandlers, ev: FocusEvent) => any) | null;
|
|
266
|
+
oncancel: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
267
|
+
oncanplay: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
268
|
+
oncanplaythrough: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
269
|
+
onchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
270
|
+
onclick: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
271
|
+
onclose: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
272
|
+
oncommand: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
273
|
+
oncontextlost: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
274
|
+
oncontextmenu: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
275
|
+
oncontextrestored: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
276
|
+
oncopy: ((this: GlobalEventHandlers, ev: ClipboardEvent) => any) | null;
|
|
277
|
+
oncuechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
278
|
+
oncut: ((this: GlobalEventHandlers, ev: ClipboardEvent) => any) | null;
|
|
279
|
+
ondblclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
|
|
280
|
+
ondrag: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
|
|
281
|
+
ondragend: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
|
|
282
|
+
ondragenter: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
|
|
283
|
+
ondragleave: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
|
|
284
|
+
ondragover: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
|
|
285
|
+
ondragstart: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
|
|
286
|
+
ondrop: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
|
|
287
|
+
ondurationchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
288
|
+
onemptied: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
289
|
+
onended: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
290
|
+
onerror: OnErrorEventHandler;
|
|
291
|
+
onfocus: ((this: GlobalEventHandlers, ev: FocusEvent) => any) | null;
|
|
292
|
+
onformdata: ((this: GlobalEventHandlers, ev: FormDataEvent) => any) | null;
|
|
293
|
+
ongotpointercapture: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
294
|
+
oninput: ((this: GlobalEventHandlers, ev: InputEvent) => any) | null;
|
|
295
|
+
oninvalid: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
296
|
+
onkeydown: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;
|
|
297
|
+
onkeypress: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;
|
|
298
|
+
onkeyup: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;
|
|
299
|
+
onload: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
300
|
+
onloadeddata: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
301
|
+
onloadedmetadata: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
302
|
+
onloadstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
303
|
+
onlostpointercapture: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
304
|
+
onmousedown: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
|
|
305
|
+
onmouseenter: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
|
|
306
|
+
onmouseleave: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
|
|
307
|
+
onmousemove: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
|
|
308
|
+
onmouseout: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
|
|
309
|
+
onmouseover: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
|
|
310
|
+
onmouseup: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
|
|
311
|
+
onpaste: ((this: GlobalEventHandlers, ev: ClipboardEvent) => any) | null;
|
|
312
|
+
onpause: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
313
|
+
onplay: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
314
|
+
onplaying: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
315
|
+
onpointercancel: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
316
|
+
onpointerdown: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
317
|
+
onpointerenter: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
318
|
+
onpointerleave: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
319
|
+
onpointermove: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
320
|
+
onpointerout: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
321
|
+
onpointerover: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
322
|
+
onpointerrawupdate: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
323
|
+
onpointerup: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
324
|
+
onprogress: ((this: GlobalEventHandlers, ev: ProgressEvent) => any) | null;
|
|
325
|
+
onratechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
326
|
+
onreset: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
327
|
+
onresize: ((this: GlobalEventHandlers, ev: UIEvent) => any) | null;
|
|
328
|
+
onscroll: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
329
|
+
onscrollend: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
330
|
+
onsecuritypolicyviolation: ((this: GlobalEventHandlers, ev: SecurityPolicyViolationEvent) => any) | null;
|
|
331
|
+
onseeked: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
332
|
+
onseeking: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
333
|
+
onselect: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
334
|
+
onselectionchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
335
|
+
onselectstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
336
|
+
onslotchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
337
|
+
onstalled: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
338
|
+
onsubmit: ((this: GlobalEventHandlers, ev: SubmitEvent) => any) | null;
|
|
339
|
+
onsuspend: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
340
|
+
ontimeupdate: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
341
|
+
ontoggle: ((this: GlobalEventHandlers, ev: ToggleEvent) => any) | null;
|
|
342
|
+
ontouchcancel?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;
|
|
343
|
+
ontouchend?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;
|
|
344
|
+
ontouchmove?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;
|
|
345
|
+
ontouchstart?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;
|
|
346
|
+
ontransitioncancel: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
|
|
347
|
+
ontransitionend: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
|
|
348
|
+
ontransitionrun: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
|
|
349
|
+
ontransitionstart: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
|
|
350
|
+
onvolumechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
351
|
+
onwaiting: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
352
|
+
onwebkitanimationend: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
353
|
+
onwebkitanimationiteration: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
354
|
+
onwebkitanimationstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
355
|
+
onwebkittransitionend: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
356
|
+
onwheel: ((this: GlobalEventHandlers, ev: WheelEvent) => any) | null;
|
|
357
|
+
autofocus: boolean;
|
|
358
|
+
readonly dataset: DOMStringMap;
|
|
359
|
+
nonce: string;
|
|
360
|
+
tabIndex: number;
|
|
361
|
+
blur(): void;
|
|
362
|
+
focus(options?: FocusOptions): void;
|
|
363
|
+
};
|
|
364
|
+
formAssociated: boolean;
|
|
365
|
+
} & typeof LitElement;
|
|
366
|
+
export declare class WebUiInputNumber extends WebUiInputNumber_base {
|
|
4
367
|
static styles: import('lit').CSSResult[];
|
|
5
368
|
placeholder: string;
|
|
6
369
|
name: string;
|
|
@@ -29,9 +392,6 @@ export declare class WebUiInputNumber extends LitElement {
|
|
|
29
392
|
private get atMax();
|
|
30
393
|
private readonly _formAssociation;
|
|
31
394
|
private readonly _formAssociationController;
|
|
32
|
-
formResetCallback(): void;
|
|
33
|
-
formDisabledCallback(disabled: boolean): void;
|
|
34
|
-
formStateRestoreCallback(state: string | File | FormData | null): void;
|
|
35
395
|
updated(): void;
|
|
36
396
|
private _syncValidity;
|
|
37
397
|
private clamp;
|
|
@@ -54,3 +414,4 @@ declare global {
|
|
|
54
414
|
'web-ui-input-number': WebUiInputNumber;
|
|
55
415
|
}
|
|
56
416
|
}
|
|
417
|
+
export {};
|
|
@@ -3,15 +3,15 @@ import "../icon/index.js";
|
|
|
3
3
|
import t from "../../icons/generated/lucide-plus.js";
|
|
4
4
|
import n from "../../icons/generated/lucide-minus.js";
|
|
5
5
|
import r from "../../assets/glass.js";
|
|
6
|
-
import {
|
|
7
|
-
import { normalizeNumber as
|
|
8
|
-
import
|
|
9
|
-
import { LitElement as
|
|
10
|
-
import { customElement as
|
|
6
|
+
import { FormAssociated as i, FormAssociationController as a, defineFormAssociation as o, forwardInputValidity as s } from "../../shared/form-association/index.js";
|
|
7
|
+
import { normalizeNumber as c } from "../../shared/normalize/index.js";
|
|
8
|
+
import l from "./style.js";
|
|
9
|
+
import { LitElement as u, html as d, unsafeCSS as f } from "lit";
|
|
10
|
+
import { customElement as p, property as m, state as h } from "lit/decorators.js";
|
|
11
11
|
//#region src/components/input-number/index.ts
|
|
12
|
-
var
|
|
12
|
+
var g = class extends i(u) {
|
|
13
13
|
constructor(...e) {
|
|
14
|
-
super(...e), this.placeholder = "", this.name = "", this.disabled = !1, this.readonly = !1, this.required = !1, this._value = 0, this._min = 0, this._max = Infinity, this._step = 1, this._focused = !1, this._precision = 0, this._formAssociation =
|
|
14
|
+
super(...e), this.placeholder = "", this.name = "", this.disabled = !1, this.readonly = !1, this.required = !1, this._value = 0, this._min = 0, this._max = Infinity, this._step = 1, this._focused = !1, this._precision = 0, this._formAssociation = o({
|
|
15
15
|
host: this,
|
|
16
16
|
getState: () => this._value,
|
|
17
17
|
setState: (e) => {
|
|
@@ -25,13 +25,10 @@ var m = class extends c {
|
|
|
25
25
|
Number.isFinite(t) && (this.value = t);
|
|
26
26
|
},
|
|
27
27
|
syncValidity: () => this._syncValidity()
|
|
28
|
-
}).make(), this._formAssociationController = new
|
|
28
|
+
}).make(), this._formAssociationController = new a(this, this._formAssociation);
|
|
29
29
|
}
|
|
30
30
|
static {
|
|
31
|
-
this.
|
|
32
|
-
}
|
|
33
|
-
static {
|
|
34
|
-
this.styles = [u(r), u(s)];
|
|
31
|
+
this.styles = [f(r), f(l)];
|
|
35
32
|
}
|
|
36
33
|
get precision() {
|
|
37
34
|
return this._precision;
|
|
@@ -56,19 +53,19 @@ var m = class extends c {
|
|
|
56
53
|
return this._min;
|
|
57
54
|
}
|
|
58
55
|
set min(e) {
|
|
59
|
-
this._min =
|
|
56
|
+
this._min = c(e, -Infinity, Infinity, 0);
|
|
60
57
|
}
|
|
61
58
|
get max() {
|
|
62
59
|
return this._max;
|
|
63
60
|
}
|
|
64
61
|
set max(e) {
|
|
65
|
-
this._max =
|
|
62
|
+
this._max = c(e, -Infinity, Infinity, Infinity);
|
|
66
63
|
}
|
|
67
64
|
get step() {
|
|
68
65
|
return this._step;
|
|
69
66
|
}
|
|
70
67
|
set step(e) {
|
|
71
|
-
this._step =
|
|
68
|
+
this._step = c(e, 0, Infinity, 1);
|
|
72
69
|
}
|
|
73
70
|
get _effectiveStep() {
|
|
74
71
|
return this._step;
|
|
@@ -79,27 +76,17 @@ var m = class extends c {
|
|
|
79
76
|
get atMax() {
|
|
80
77
|
return this._value >= this._max;
|
|
81
78
|
}
|
|
82
|
-
formResetCallback() {
|
|
83
|
-
this._formAssociation.reset();
|
|
84
|
-
}
|
|
85
|
-
formDisabledCallback(e) {
|
|
86
|
-
this._formAssociation.setDisabled(e);
|
|
87
|
-
}
|
|
88
|
-
formStateRestoreCallback(e) {
|
|
89
|
-
this._formAssociation.restore(e);
|
|
90
|
-
}
|
|
91
79
|
updated() {
|
|
92
80
|
this._syncValidity(), this.toggleAttribute("focused", this._focused);
|
|
93
81
|
}
|
|
94
82
|
_syncValidity() {
|
|
95
83
|
let e = this.shadowRoot?.querySelector("input"), t = this._formAssociation.getInternals();
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
e.validity.valueMissing && (n.valueMissing = !0), e.validity.rangeUnderflow && (n.rangeUnderflow = !0), e.validity.rangeOverflow && (n.rangeOverflow = !0), e.validity.stepMismatch && (n.stepMismatch = !0), t.setValidity(n, e.validationMessage, e);
|
|
84
|
+
!t || !e || typeof t.setValidity != "function" || s(t, e, [
|
|
85
|
+
"valueMissing",
|
|
86
|
+
"rangeUnderflow",
|
|
87
|
+
"rangeOverflow",
|
|
88
|
+
"stepMismatch"
|
|
89
|
+
], this._isDisabled);
|
|
103
90
|
}
|
|
104
91
|
clamp(e) {
|
|
105
92
|
return Math.min(this._max, Math.max(this._min, e));
|
|
@@ -146,7 +133,7 @@ var m = class extends c {
|
|
|
146
133
|
this._focused = !1;
|
|
147
134
|
}
|
|
148
135
|
render() {
|
|
149
|
-
return
|
|
136
|
+
return d`
|
|
150
137
|
<div class="wui-glass wui-input-inner">
|
|
151
138
|
<button
|
|
152
139
|
class="num-btn"
|
|
@@ -182,38 +169,38 @@ var m = class extends c {
|
|
|
182
169
|
`;
|
|
183
170
|
}
|
|
184
171
|
};
|
|
185
|
-
e([
|
|
172
|
+
e([m({
|
|
186
173
|
type: String,
|
|
187
174
|
reflect: !0
|
|
188
|
-
})],
|
|
175
|
+
})], g.prototype, "placeholder", void 0), e([m({
|
|
189
176
|
type: String,
|
|
190
177
|
reflect: !0
|
|
191
|
-
})],
|
|
178
|
+
})], g.prototype, "name", void 0), e([m({
|
|
192
179
|
type: Boolean,
|
|
193
180
|
reflect: !0
|
|
194
|
-
})],
|
|
181
|
+
})], g.prototype, "disabled", void 0), e([m({
|
|
195
182
|
type: Boolean,
|
|
196
183
|
reflect: !0
|
|
197
|
-
})],
|
|
184
|
+
})], g.prototype, "readonly", void 0), e([m({
|
|
198
185
|
type: Boolean,
|
|
199
186
|
reflect: !0
|
|
200
|
-
})],
|
|
187
|
+
})], g.prototype, "required", void 0), e([m({
|
|
201
188
|
type: Number,
|
|
202
189
|
reflect: !0
|
|
203
|
-
})],
|
|
190
|
+
})], g.prototype, "precision", null), e([h()], g.prototype, "_value", void 0), e([h()], g.prototype, "_min", void 0), e([h()], g.prototype, "_max", void 0), e([h()], g.prototype, "_step", void 0), e([h()], g.prototype, "_focused", void 0), e([m({
|
|
204
191
|
type: Number,
|
|
205
192
|
reflect: !0
|
|
206
|
-
})],
|
|
193
|
+
})], g.prototype, "value", null), e([m({
|
|
207
194
|
type: Number,
|
|
208
195
|
reflect: !0
|
|
209
|
-
})],
|
|
196
|
+
})], g.prototype, "min", null), e([m({
|
|
210
197
|
type: Number,
|
|
211
198
|
reflect: !0
|
|
212
|
-
})],
|
|
199
|
+
})], g.prototype, "max", null), e([m({
|
|
213
200
|
type: Number,
|
|
214
201
|
reflect: !0
|
|
215
|
-
})],
|
|
202
|
+
})], g.prototype, "step", null), g = e([p("web-ui-input-number")], g);
|
|
216
203
|
//#endregion
|
|
217
|
-
export {
|
|
204
|
+
export { g as WebUiInputNumber };
|
|
218
205
|
|
|
219
206
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/input-number/index.ts"],"sourcesContent":["import { html, LitElement, unsafeCSS } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\n\nimport '@/components/icon'\nimport glass from '@/assets/glass.css?inline'\nimport { lucideMinus, lucidePlus } from '@/icons'\nimport { defineFormAssociation, FormAssociationController } from '@/shared/form-association'\nimport { normalizeNumber } from '@/shared/normalize'\n\nimport style from './style.css?inline'\n\n@customElement('web-ui-input-number')\nexport class WebUiInputNumber extends LitElement {\n static formAssociated = true\n static override styles = [unsafeCSS(glass), unsafeCSS(style)]\n\n @property({ type: String, reflect: true }) placeholder = ''\n @property({ type: String, reflect: true }) name = ''\n @property({ type: Boolean, reflect: true }) disabled = false\n @property({ type: Boolean, reflect: true }) readonly = false\n @property({ type: Boolean, reflect: true }) required = false\n @property({ type: Number, reflect: true })\n get precision(): number {\n return this._precision\n }\n // 精度变化时重算现有值,避免浮点累积误差\n set precision(v: number) {\n const old = this._precision\n this._precision = v\n const current = this.clamp(this.round(this._value))\n if (current !== this._value) {\n this._value = current\n this._formAssociation.sync()\n }\n this.requestUpdate('precision', old)\n }\n\n @state() private _value = 0\n @state() private _min = 0\n @state() private _max = Infinity\n @state() private _step = 1\n @state() private _focused = false\n private _precision = 0\n\n @property({ type: Number, reflect: true })\n get value(): number {\n return this._value\n }\n\n set value(v: number) {\n const clamped = this.clamp(this.round(v))\n const old = this._value\n this._value = clamped\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 @property({ type: Number, reflect: true })\n get min(): number {\n return this._min\n }\n\n set min(v: unknown) {\n this._min = normalizeNumber(v, -Infinity, Infinity, 0)\n }\n\n @property({ type: Number, reflect: true })\n get max(): number {\n return this._max\n }\n\n set max(v: unknown) {\n this._max = normalizeNumber(v, -Infinity, Infinity, Infinity)\n }\n\n @property({ type: Number, reflect: true })\n get step(): number {\n return this._step\n }\n\n // 步进值,默认 1;若声明了 precision 则以 precision 退化步进\n set step(v: unknown) {\n this._step = normalizeNumber(v, 0, Infinity, 1)\n }\n\n private get _effectiveStep(): number {\n return this._step\n }\n\n private get atMin(): boolean {\n return this._value <= this._min\n }\n\n private get atMax(): boolean {\n return this._value >= this._max\n }\n\n private readonly _formAssociation = defineFormAssociation<number>({\n host: this,\n getState: () => this._value,\n setState: value => {\n this.value = value\n },\n getFormValue: () => String(this._value),\n getFormState: () => String(this._value),\n restoreState: state => {\n if (typeof state !== 'string') return\n const value = Number(state)\n if (Number.isFinite(value)) this.value = value\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 override updated() {\n this._syncValidity()\n this.toggleAttribute('focused', this._focused)\n }\n\n private _syncValidity() {\n const input = this.shadowRoot?.querySelector('input')\n const internals = this._formAssociation.getInternals()\n if (!internals || !input || typeof internals.setValidity !== 'function') return\n if (this._isDisabled || input.validity.valid) {\n internals.setValidity({})\n return\n }\n const flags: ValidityStateFlags = {}\n if (input.validity.valueMissing) flags.valueMissing = true\n if (input.validity.rangeUnderflow) flags.rangeUnderflow = true\n if (input.validity.rangeOverflow) flags.rangeOverflow = true\n if (input.validity.stepMismatch) flags.stepMismatch = true\n internals.setValidity(flags, input.validationMessage, input)\n }\n\n private clamp(v: number): number {\n return Math.min(this._max, Math.max(this._min, v))\n }\n\n private round(v: number): number {\n const f = 10 ** this.precision\n return Math.round(v * f) / f\n }\n\n private setValueAndNotify(v: number) {\n this.value = this.clamp(this.round(v))\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }))\n }\n\n private handleStep(direction: 1 | -1) {\n if (this._isDisabled || this.readonly) return\n this.setValueAndNotify(this._value + direction * this._effectiveStep)\n }\n\n private handleInput(e: Event) {\n if (this.readonly) return\n if (!(e.target instanceof HTMLInputElement)) return\n const raw = e.target.value\n if (raw === '' || raw === '-') return\n this._value = this.clamp(this.round(Number(raw)))\n this._formAssociation.sync()\n this._syncValidity()\n }\n\n // 原生 change 不 composed,被 shadow root 挡住;文本失焦提交时补发 composed 事件,\n // 与 ArrowUp/ArrowDown 的 change 行为对齐。\n private handleNativeChange(e: Event) {\n if (this.readonly) return\n if (!(e.target instanceof HTMLInputElement)) return\n const raw = e.target.value\n if (raw === '' || raw === '-') return\n this._value = this.clamp(this.round(Number(raw)))\n this._formAssociation.sync()\n this._syncValidity()\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }))\n }\n\n private handleKeydown(e: KeyboardEvent) {\n if (this._isDisabled || this.readonly) return\n if (e.key === 'ArrowUp') {\n e.preventDefault()\n this.setValueAndNotify(this._value + this._effectiveStep)\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }))\n } else if (e.key === 'ArrowDown') {\n e.preventDefault()\n this.setValueAndNotify(this._value - this._effectiveStep)\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }))\n }\n }\n\n private handleFocus() {\n if (!this._isDisabled) this._focused = true\n }\n\n private handleBlur() {\n this._focused = false\n }\n\n override render() {\n return html`\n <div class=\"wui-glass wui-input-inner\">\n <button\n class=\"num-btn\"\n aria-label=\"Decrease\"\n ?disabled=${this._isDisabled || this.readonly || this.atMin}\n @click=${() => this.handleStep(-1)}\n >\n <web-ui-icon .icon=${lucideMinus}></web-ui-icon>\n </button>\n <input\n type=\"number\"\n placeholder=${this.placeholder}\n name=${this.name}\n .value=${String(this._value)}\n ?disabled=${this._isDisabled}\n ?readonly=${this.readonly}\n ?required=${this.required}\n @input=${this.handleInput}\n @change=${this.handleNativeChange}\n @keydown=${this.handleKeydown}\n @focus=${this.handleFocus}\n @blur=${this.handleBlur}\n />\n <button\n class=\"num-btn\"\n aria-label=\"Increase\"\n ?disabled=${this._isDisabled || this.readonly || this.atMax}\n @click=${() => this.handleStep(1)}\n >\n <web-ui-icon .icon=${lucidePlus}></web-ui-icon>\n </button>\n </div>\n `\n }\n\n declare readonly $events: {\n input: Event\n change: Event\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'web-ui-input-number': WebUiInputNumber\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/input-number/index.ts"],"sourcesContent":["import { html, LitElement, unsafeCSS } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\n\nimport '@/components/icon'\nimport glass from '@/assets/glass.css?inline'\nimport { lucideMinus, lucidePlus } from '@/icons'\nimport {\n FormAssociated,\n defineFormAssociation,\n forwardInputValidity,\n FormAssociationController\n} from '@/shared/form-association'\nimport { normalizeNumber } from '@/shared/normalize'\n\nimport style from './style.css?inline'\n\n@customElement('web-ui-input-number')\nexport class WebUiInputNumber extends FormAssociated(LitElement) {\n static override styles = [unsafeCSS(glass), unsafeCSS(style)]\n\n @property({ type: String, reflect: true }) placeholder = ''\n @property({ type: String, reflect: true }) name = ''\n @property({ type: Boolean, reflect: true }) disabled = false\n @property({ type: Boolean, reflect: true }) readonly = false\n @property({ type: Boolean, reflect: true }) required = false\n @property({ type: Number, reflect: true })\n get precision(): number {\n return this._precision\n }\n // 精度变化时重算现有值,避免浮点累积误差\n set precision(v: number) {\n const old = this._precision\n this._precision = v\n const current = this.clamp(this.round(this._value))\n if (current !== this._value) {\n this._value = current\n this._formAssociation.sync()\n }\n this.requestUpdate('precision', old)\n }\n\n @state() private _value = 0\n @state() private _min = 0\n @state() private _max = Infinity\n @state() private _step = 1\n @state() private _focused = false\n private _precision = 0\n\n @property({ type: Number, reflect: true })\n get value(): number {\n return this._value\n }\n\n set value(v: number) {\n const clamped = this.clamp(this.round(v))\n const old = this._value\n this._value = clamped\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 @property({ type: Number, reflect: true })\n get min(): number {\n return this._min\n }\n\n set min(v: unknown) {\n this._min = normalizeNumber(v, -Infinity, Infinity, 0)\n }\n\n @property({ type: Number, reflect: true })\n get max(): number {\n return this._max\n }\n\n set max(v: unknown) {\n this._max = normalizeNumber(v, -Infinity, Infinity, Infinity)\n }\n\n @property({ type: Number, reflect: true })\n get step(): number {\n return this._step\n }\n\n // 步进值,默认 1;若声明了 precision 则以 precision 退化步进\n set step(v: unknown) {\n this._step = normalizeNumber(v, 0, Infinity, 1)\n }\n\n private get _effectiveStep(): number {\n return this._step\n }\n\n private get atMin(): boolean {\n return this._value <= this._min\n }\n\n private get atMax(): boolean {\n return this._value >= this._max\n }\n\n private readonly _formAssociation = defineFormAssociation<number>({\n host: this,\n getState: () => this._value,\n setState: value => {\n this.value = value\n },\n getFormValue: () => String(this._value),\n getFormState: () => String(this._value),\n restoreState: state => {\n if (typeof state !== 'string') return\n const value = Number(state)\n if (Number.isFinite(value)) this.value = value\n },\n syncValidity: () => this._syncValidity()\n }).make()\n\n private readonly _formAssociationController = new FormAssociationController(this, this._formAssociation)\n\n override updated() {\n this._syncValidity()\n this.toggleAttribute('focused', this._focused)\n }\n\n private _syncValidity() {\n const input = this.shadowRoot?.querySelector('input')\n const internals = this._formAssociation.getInternals()\n if (!internals || !input || typeof internals.setValidity !== 'function') return\n forwardInputValidity(\n internals,\n input,\n ['valueMissing', 'rangeUnderflow', 'rangeOverflow', 'stepMismatch'],\n this._isDisabled\n )\n }\n\n private clamp(v: number): number {\n return Math.min(this._max, Math.max(this._min, v))\n }\n\n private round(v: number): number {\n const f = 10 ** this.precision\n return Math.round(v * f) / f\n }\n\n private setValueAndNotify(v: number) {\n this.value = this.clamp(this.round(v))\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }))\n }\n\n private handleStep(direction: 1 | -1) {\n if (this._isDisabled || this.readonly) return\n this.setValueAndNotify(this._value + direction * this._effectiveStep)\n }\n\n private handleInput(e: Event) {\n if (this.readonly) return\n if (!(e.target instanceof HTMLInputElement)) return\n const raw = e.target.value\n if (raw === '' || raw === '-') return\n this._value = this.clamp(this.round(Number(raw)))\n this._formAssociation.sync()\n this._syncValidity()\n }\n\n // 原生 change 不 composed,被 shadow root 挡住;文本失焦提交时补发 composed 事件,\n // 与 ArrowUp/ArrowDown 的 change 行为对齐。\n private handleNativeChange(e: Event) {\n if (this.readonly) return\n if (!(e.target instanceof HTMLInputElement)) return\n const raw = e.target.value\n if (raw === '' || raw === '-') return\n this._value = this.clamp(this.round(Number(raw)))\n this._formAssociation.sync()\n this._syncValidity()\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }))\n }\n\n private handleKeydown(e: KeyboardEvent) {\n if (this._isDisabled || this.readonly) return\n if (e.key === 'ArrowUp') {\n e.preventDefault()\n this.setValueAndNotify(this._value + this._effectiveStep)\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }))\n } else if (e.key === 'ArrowDown') {\n e.preventDefault()\n this.setValueAndNotify(this._value - this._effectiveStep)\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }))\n }\n }\n\n private handleFocus() {\n if (!this._isDisabled) this._focused = true\n }\n\n private handleBlur() {\n this._focused = false\n }\n\n override render() {\n return html`\n <div class=\"wui-glass wui-input-inner\">\n <button\n class=\"num-btn\"\n aria-label=\"Decrease\"\n ?disabled=${this._isDisabled || this.readonly || this.atMin}\n @click=${() => this.handleStep(-1)}\n >\n <web-ui-icon .icon=${lucideMinus}></web-ui-icon>\n </button>\n <input\n type=\"number\"\n placeholder=${this.placeholder}\n name=${this.name}\n .value=${String(this._value)}\n ?disabled=${this._isDisabled}\n ?readonly=${this.readonly}\n ?required=${this.required}\n @input=${this.handleInput}\n @change=${this.handleNativeChange}\n @keydown=${this.handleKeydown}\n @focus=${this.handleFocus}\n @blur=${this.handleBlur}\n />\n <button\n class=\"num-btn\"\n aria-label=\"Increase\"\n ?disabled=${this._isDisabled || this.readonly || this.atMax}\n @click=${() => this.handleStep(1)}\n >\n <web-ui-icon .icon=${lucidePlus}></web-ui-icon>\n </button>\n </div>\n `\n }\n\n declare readonly $events: {\n input: Event\n change: Event\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'web-ui-input-number': WebUiInputNumber\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region src/components/input-number/style.css?inline
|
|
2
|
-
var e = "*,:before,:after{box-sizing:border-box}:host{display:inline-block}:host([disabled]){cursor:not-allowed;opacity:.4}.wui-input-inner{--wui-glass-corner-radius:calc(var(--wui-control-size,36px) / 2);box-sizing:border-box;width:var(--wui-input-width,200px);min-width:var(--wui-control-size,36px);height:var(--wui-control-size,36px);
|
|
2
|
+
var e = "*,:before,:after{box-sizing:border-box}:host{display:inline-block}:host([disabled]){cursor:not-allowed;opacity:.4}.wui-input-inner{--wui-glass-corner-radius:calc(var(--wui-control-size,36px) / 2);box-sizing:border-box;width:var(--wui-input-width,200px);min-width:var(--wui-control-size,36px);height:var(--wui-control-size,36px);border-radius:var(--wui-radius-control,calc(infinity * 1px));align-items:center;gap:4px;padding:0 4px;display:flex;position:relative}input{min-width:48px;height:100%;font:inherit;font-size:var(--wui-font-size,14px);color:var(--wui-color-text,#1b1b1b);text-align:center;background:0 0;border:none;outline:none;flex:1;margin:0;padding:0}input::-webkit-inner-spin-button{appearance:none;margin:0}input::-webkit-outer-spin-button{appearance:none;margin:0}input[type=number]{appearance:textfield}input:disabled{cursor:not-allowed;opacity:.4}.wui-input-inner:after{pointer-events:none;content:\"\";border-radius:inherit;box-shadow:inset 0 0 0 1px transparent, 0 0 0 var(--wui-focus-ring-width,3px) transparent;transition:box-shadow var(--wui-duration-focus,.2s);position:absolute;inset:0}:host([focused]) .wui-input-inner:after{box-shadow:inset 0 0 0 1px var(--wui-color-accent,#08f), 0 0 0 var(--wui-focus-ring-width,3px) var(--wui-color-focus-ring,#08f6)}.num-btn{cursor:default;border-radius:var(--wui-radius-control,calc(infinity * 1px));width:30px;height:30px;color:var(--wui-color-text-secondary,#6a6a6a);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.num-btn:disabled{cursor:not-allowed;opacity:.4}.num-btn:focus-visible{outline:var(--wui-focus-ring-width,3px) solid var(--wui-color-focus-ring,#08f6);outline-offset:2px}@media (hover:hover) and (pointer:fine){.num-btn:hover:not(:disabled){background:var(--wui-color-state-layer-hover,color-mix(in srgb, var(--wui-color-text,#1b1b1b) 6%, transparent))}}.num-btn:active:not(:disabled){background:var(--wui-color-state-layer-active,color-mix(in srgb, var(--wui-color-text,#1b1b1b) 15%, transparent))}";
|
|
3
3
|
//#endregion
|
|
4
4
|
export { e as default };
|
|
5
5
|
|