mdui 2.1.2 → 2.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/bottom-app-bar/style.js +1 -1
- package/components/button/style.js +2 -2
- package/components/button-icon/style.js +2 -2
- package/components/card/style.js +1 -1
- package/components/checkbox/style.js +1 -1
- package/components/chip/style.js +2 -2
- package/components/dialog/style.js +1 -1
- package/components/divider/style.js +1 -1
- package/components/dropdown/index.js +9 -4
- package/components/fab/style.js +1 -1
- package/components/layout/layout-style.js +1 -1
- package/components/list/list-item-style.js +2 -2
- package/components/menu/menu-item-style.js +1 -1
- package/components/navigation-bar/navigation-bar-style.js +1 -1
- package/components/navigation-drawer/index.d.ts +1 -0
- package/components/navigation-drawer/index.js +17 -11
- package/components/navigation-drawer/style.js +1 -1
- package/components/navigation-rail/navigation-rail-style.js +1 -1
- package/components/radio/radio-style.js +1 -1
- package/components/segmented-button/segmented-button-group-style.js +1 -1
- package/components/segmented-button/segmented-button-style.js +1 -1
- package/components/select/index.d.ts +0 -2
- package/components/select/index.js +3 -4
- package/components/slider/slider-base-style.js +1 -1
- package/components/snackbar/index.d.ts +12 -0
- package/components/snackbar/index.js +105 -46
- package/components/snackbar/style.js +1 -1
- package/components/switch/style.js +1 -1
- package/components/tabs/tab-style.js +1 -1
- package/components/tabs/tabs-style.js +1 -1
- package/components/tabs/tabs.d.ts +2 -2
- package/components/tabs/tabs.js +6 -4
- package/components/text-field/index.d.ts +5 -7
- package/components/text-field/index.js +30 -30
- package/components/text-field/style.js +1 -1
- package/components/tooltip/index.js +6 -4
- package/components/top-app-bar/top-app-bar-style.js +1 -1
- package/components/top-app-bar/top-app-bar.js +1 -1
- package/custom-elements.json +173 -86
- package/functions/alert.js +5 -3
- package/functions/confirm.js +5 -3
- package/functions/dialog.js +8 -3
- package/functions/prompt.js +5 -3
- package/functions/snackbar.js +8 -2
- package/html-data.en.json +1 -11
- package/html-data.zh-cn.json +1 -11
- package/jsx.en.d.ts +2 -5
- package/jsx.zh-cn.d.ts +2 -5
- package/mdui.esm.js +8 -8
- package/mdui.global.js +8 -8
- package/package.json +2 -3
- package/web-types.en.json +5 -11
- package/web-types.zh-cn.json +5 -11
|
@@ -8,6 +8,7 @@ import { animateTo, stopAnimations } from '@mdui/shared/helpers/animate.js';
|
|
|
8
8
|
import { breakpoint } from '@mdui/shared/helpers/breakpoint.js';
|
|
9
9
|
import { booleanConverter } from '@mdui/shared/helpers/decorator.js';
|
|
10
10
|
import { getDuration, getEasing } from '@mdui/shared/helpers/motion.js';
|
|
11
|
+
import { observeResize } from '@mdui/shared/helpers/observeResize.js';
|
|
11
12
|
import { nothingTemplate } from '@mdui/shared/helpers/template.js';
|
|
12
13
|
import '@mdui/shared/icons/clear.js';
|
|
13
14
|
import { componentStyle } from '@mdui/shared/lit-styles/component-style.js';
|
|
@@ -15,6 +16,10 @@ import '../button-icon.js';
|
|
|
15
16
|
import '../button.js';
|
|
16
17
|
import '../icon.js';
|
|
17
18
|
import { style } from './style.js';
|
|
19
|
+
// snackbar 堆叠时的数组
|
|
20
|
+
const stacks = [];
|
|
21
|
+
// 是否重新排序中,mobile 变化时,仅重新排序一次
|
|
22
|
+
let reordering = false;
|
|
18
23
|
/**
|
|
19
24
|
* @summary 消息条组件
|
|
20
25
|
*
|
|
@@ -75,20 +80,12 @@ let Snackbar = class Snackbar extends MduiElement {
|
|
|
75
80
|
* 点击或触摸 Snackbar 以外的区域时,是否关闭 Snackbar
|
|
76
81
|
*/
|
|
77
82
|
this.closeOnOutsideClick = false;
|
|
83
|
+
this.mobile = false;
|
|
78
84
|
this.onDocumentClick = this.onDocumentClick.bind(this);
|
|
79
85
|
}
|
|
80
86
|
async onOpenChange() {
|
|
81
|
-
const isMobile = breakpoint().down('sm');
|
|
82
|
-
const isCenteredHorizontally = ['top', 'bottom'].includes(this.placement);
|
|
83
87
|
const easingLinear = getEasing(this, 'linear');
|
|
84
|
-
const easingEmphasizedDecelerate = getEasing(this, 'emphasized-decelerate');
|
|
85
88
|
const children = Array.from(this.renderRoot.querySelectorAll('.message, .action-group'));
|
|
86
|
-
// 手机上始终使用全宽的样式,但 @media 选择器中无法使用 CSS 变量,所以使用 js 来设置样式
|
|
87
|
-
const commonStyle = isMobile
|
|
88
|
-
? { left: '1rem', right: '1rem', minWidth: 0 }
|
|
89
|
-
: isCenteredHorizontally
|
|
90
|
-
? { left: '50%' }
|
|
91
|
-
: {};
|
|
92
89
|
// 打开
|
|
93
90
|
// 要区分是否首次渲染,首次渲染时不触发事件,不执行动画;非首次渲染,触发事件,执行动画
|
|
94
91
|
if (this.open) {
|
|
@@ -113,32 +110,13 @@ let Snackbar = class Snackbar extends MduiElement {
|
|
|
113
110
|
stopAnimations(this),
|
|
114
111
|
...children.map((child) => stopAnimations(child)),
|
|
115
112
|
]);
|
|
113
|
+
stacks.push({
|
|
114
|
+
height: this.clientHeight,
|
|
115
|
+
snackbar: this,
|
|
116
|
+
});
|
|
117
|
+
await this.reorderStack(this);
|
|
116
118
|
const duration = getDuration(this, 'medium4');
|
|
117
|
-
const getOpenStyle = (ident) => {
|
|
118
|
-
const scaleY = `scaleY(${ident === 'start' ? 0 : 1})`;
|
|
119
|
-
if (isMobile) {
|
|
120
|
-
return { transform: scaleY };
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
return {
|
|
124
|
-
transform: [
|
|
125
|
-
scaleY,
|
|
126
|
-
isCenteredHorizontally ? 'translateX(-50%)' : '',
|
|
127
|
-
]
|
|
128
|
-
.filter((i) => i)
|
|
129
|
-
.join(' '),
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
};
|
|
133
119
|
await Promise.all([
|
|
134
|
-
animateTo(this, [
|
|
135
|
-
{ ...getOpenStyle('start'), ...commonStyle },
|
|
136
|
-
{ ...getOpenStyle('end'), ...commonStyle },
|
|
137
|
-
], {
|
|
138
|
-
duration: hasUpdated ? duration : 0,
|
|
139
|
-
easing: easingEmphasizedDecelerate,
|
|
140
|
-
fill: 'forwards',
|
|
141
|
-
}),
|
|
142
120
|
animateTo(this, [{ opacity: 0 }, { opacity: 1, offset: 0.5 }, { opacity: 1 }], {
|
|
143
121
|
duration: hasUpdated ? duration : 0,
|
|
144
122
|
easing: easingLinear,
|
|
@@ -171,37 +149,58 @@ let Snackbar = class Snackbar extends MduiElement {
|
|
|
171
149
|
...children.map((child) => stopAnimations(child)),
|
|
172
150
|
]);
|
|
173
151
|
const duration = getDuration(this, 'short4');
|
|
174
|
-
const getCloseStyle = (ident) => {
|
|
175
|
-
const opacity = ident === 'start' ? 1 : 0;
|
|
176
|
-
const styles = { opacity };
|
|
177
|
-
if (!isMobile && isCenteredHorizontally) {
|
|
178
|
-
Object.assign(styles, { transform: 'translateX(-50%)' });
|
|
179
|
-
}
|
|
180
|
-
return styles;
|
|
181
|
-
};
|
|
182
152
|
await Promise.all([
|
|
183
|
-
animateTo(this, [
|
|
184
|
-
{ ...getCloseStyle('start'), ...commonStyle },
|
|
185
|
-
{ ...getCloseStyle('end'), ...commonStyle },
|
|
186
|
-
], {
|
|
153
|
+
animateTo(this, [{ opacity: 1 }, { opacity: 0 }], {
|
|
187
154
|
duration,
|
|
188
155
|
easing: easingLinear,
|
|
189
156
|
fill: 'forwards',
|
|
190
157
|
}),
|
|
191
|
-
...children.map((child) => animateTo(child, [{ opacity: 1 }, { opacity: 0, offset: 0.75 }, { opacity: 0 }], {
|
|
158
|
+
...children.map((child) => animateTo(child, [{ opacity: 1 }, { opacity: 0, offset: 0.75 }, { opacity: 0 }], {
|
|
159
|
+
duration,
|
|
160
|
+
easing: easingLinear,
|
|
161
|
+
})),
|
|
192
162
|
]);
|
|
193
163
|
this.style.display = 'none';
|
|
194
164
|
this.emit('closed');
|
|
165
|
+
const stackIndex = stacks.findIndex((stack) => stack.snackbar === this);
|
|
166
|
+
stacks.splice(stackIndex, 1);
|
|
167
|
+
if (stacks[stackIndex]) {
|
|
168
|
+
await this.reorderStack(stacks[stackIndex].snackbar);
|
|
169
|
+
}
|
|
195
170
|
return;
|
|
196
171
|
}
|
|
197
172
|
}
|
|
173
|
+
/**
|
|
174
|
+
* 这两个属性变更时,需要重新排序该组件后面的 snackbar
|
|
175
|
+
*/
|
|
176
|
+
async onStackChange() {
|
|
177
|
+
await this.reorderStack(this);
|
|
178
|
+
}
|
|
198
179
|
connectedCallback() {
|
|
199
180
|
super.connectedCallback();
|
|
200
181
|
document.addEventListener('pointerdown', this.onDocumentClick);
|
|
182
|
+
// 先立即计算一次,避免在首次 open 时还未计算完成
|
|
183
|
+
this.mobile = breakpoint().down('sm');
|
|
184
|
+
this.observeResize = observeResize(document.documentElement, async () => {
|
|
185
|
+
const mobile = breakpoint().down('sm');
|
|
186
|
+
if (this.mobile !== mobile) {
|
|
187
|
+
this.mobile = mobile;
|
|
188
|
+
if (!reordering) {
|
|
189
|
+
reordering = true;
|
|
190
|
+
await this.reorderStack();
|
|
191
|
+
reordering = false;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
});
|
|
201
195
|
}
|
|
202
196
|
disconnectedCallback() {
|
|
203
197
|
super.disconnectedCallback();
|
|
204
198
|
document.removeEventListener('pointerdown', this.onDocumentClick);
|
|
199
|
+
window.clearTimeout(this.closeTimeout);
|
|
200
|
+
if (this.open) {
|
|
201
|
+
this.open = false;
|
|
202
|
+
}
|
|
203
|
+
this.observeResize?.unobserve();
|
|
205
204
|
}
|
|
206
205
|
render() {
|
|
207
206
|
return html `<slot part="message" class="message"></slot><div class="action-group"><slot name="action" part="action" class="action" @click="${this.onActionClick}">${this.action
|
|
@@ -210,6 +209,55 @@ let Snackbar = class Snackbar extends MduiElement {
|
|
|
210
209
|
? html `<mdui-icon name="${this.closeIcon}" class="i"></mdui-icon>`
|
|
211
210
|
: html `<mdui-icon-clear class="i"></mdui-icon-clear>`}</slot></mdui-button-icon></slot>`)}</div>`;
|
|
212
211
|
}
|
|
212
|
+
/**
|
|
213
|
+
* 重新排序 snackbar 堆叠
|
|
214
|
+
* @param startSnackbar 从哪个 snackbar 开始重新排列,默认从第一个开始
|
|
215
|
+
* @private
|
|
216
|
+
*/
|
|
217
|
+
async reorderStack(startSnackbar) {
|
|
218
|
+
const stackIndex = startSnackbar
|
|
219
|
+
? stacks.findIndex((stack) => stack.snackbar === startSnackbar)
|
|
220
|
+
: 0;
|
|
221
|
+
for (let i = stackIndex; i < stacks.length; i++) {
|
|
222
|
+
const stack = stacks[i];
|
|
223
|
+
const snackbar = stack.snackbar;
|
|
224
|
+
if (this.mobile) {
|
|
225
|
+
['top', 'bottom'].forEach((placement) => {
|
|
226
|
+
if (snackbar.placement.startsWith(placement)) {
|
|
227
|
+
const prevStacks = stacks.filter((stack, index) => {
|
|
228
|
+
return (index < i && stack.snackbar.placement.startsWith(placement));
|
|
229
|
+
});
|
|
230
|
+
const prevHeight = prevStacks.reduce((prev, current) => prev + current.height, 0);
|
|
231
|
+
// @ts-ignore
|
|
232
|
+
snackbar.style[placement] =
|
|
233
|
+
`calc(${prevHeight}px + ${prevStacks.length + 1}rem)`;
|
|
234
|
+
snackbar.style[placement === 'top' ? 'bottom' : 'top'] = 'auto';
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
[
|
|
240
|
+
'top',
|
|
241
|
+
'top-start',
|
|
242
|
+
'top-end',
|
|
243
|
+
'bottom',
|
|
244
|
+
'bottom-start',
|
|
245
|
+
'bottom-end',
|
|
246
|
+
].forEach((placement) => {
|
|
247
|
+
if (snackbar.placement === placement) {
|
|
248
|
+
const prevStacks = stacks.filter((stack, index) => {
|
|
249
|
+
return index < i && stack.snackbar.placement === placement;
|
|
250
|
+
});
|
|
251
|
+
const prevHeight = prevStacks.reduce((prev, current) => prev + current.height, 0);
|
|
252
|
+
snackbar.style[placement.startsWith('top') ? 'top' : 'bottom'] =
|
|
253
|
+
`calc(${prevHeight}px + ${prevStacks.length + 1}rem)`;
|
|
254
|
+
snackbar.style[placement.startsWith('top') ? 'bottom' : 'top'] =
|
|
255
|
+
'auto';
|
|
256
|
+
}
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
213
261
|
/**
|
|
214
262
|
* 在 document 上点击时,根据条件判断是否要关闭 snackbar
|
|
215
263
|
*/
|
|
@@ -277,9 +325,20 @@ __decorate([
|
|
|
277
325
|
converter: booleanConverter,
|
|
278
326
|
})
|
|
279
327
|
], Snackbar.prototype, "closeOnOutsideClick", void 0);
|
|
328
|
+
__decorate([
|
|
329
|
+
property({
|
|
330
|
+
type: Boolean,
|
|
331
|
+
reflect: true,
|
|
332
|
+
converter: booleanConverter,
|
|
333
|
+
})
|
|
334
|
+
], Snackbar.prototype, "mobile", void 0);
|
|
280
335
|
__decorate([
|
|
281
336
|
watch('open')
|
|
282
337
|
], Snackbar.prototype, "onOpenChange", null);
|
|
338
|
+
__decorate([
|
|
339
|
+
watch('placement', true),
|
|
340
|
+
watch('messageLine', true)
|
|
341
|
+
], Snackbar.prototype, "onStackChange", null);
|
|
283
342
|
Snackbar = __decorate([
|
|
284
343
|
customElement('mdui-snackbar')
|
|
285
344
|
], Snackbar);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const style = css `:host{--shape-corner:var(--mdui-shape-corner-extra-small);--z-index:2400;position:fixed;z-index:var(--z-index);display:none;align-items:center;flex-wrap:wrap;border-radius:var(--shape-corner);min-width:20rem;max-width:36rem;padding:.25rem 0;box-shadow:var(--mdui-elevation-level3);background-color:rgb(var(--mdui-color-inverse-surface));color:rgb(var(--mdui-color-inverse-on-surface));font-size:var(--mdui-typescale-body-medium-size);font-weight:var(--mdui-typescale-body-medium-weight);letter-spacing:var(--mdui-typescale-body-medium-tracking);line-height:var(--mdui-typescale-body-medium-line-height)}:host([placement^=top]){transform-origin:top
|
|
2
|
+
export const style = css `:host{--shape-corner:var(--mdui-shape-corner-extra-small);--z-index:2400;position:fixed;z-index:var(--z-index);display:none;align-items:center;flex-wrap:wrap;border-radius:var(--shape-corner);transform:scaleY(0);transition:transform 0s var(--mdui-motion-easing-linear) var(--mdui-motion-duration-short4);min-width:20rem;max-width:36rem;padding:.25rem 0;box-shadow:var(--mdui-elevation-level3);background-color:rgb(var(--mdui-color-inverse-surface));color:rgb(var(--mdui-color-inverse-on-surface));font-size:var(--mdui-typescale-body-medium-size);font-weight:var(--mdui-typescale-body-medium-weight);letter-spacing:var(--mdui-typescale-body-medium-tracking);line-height:var(--mdui-typescale-body-medium-line-height)}:host([placement^=top]){transform-origin:top}:host([placement^=bottom]){transform-origin:bottom}:host([placement=bottom-start]:not([mobile])),:host([placement=top-start]:not([mobile])){left:1rem}:host([placement=bottom-end]:not([mobile])),:host([placement=top-end]:not([mobile])){right:1rem}:host([placement=bottom]:not([mobile])),:host([placement=top]:not([mobile])){left:50%;transform:scaleY(0) translateX(-50%)}:host([mobile]){min-width:0;left:1rem;right:1rem}:host([open]){transform:scaleY(1);transition:top var(--mdui-motion-duration-short4) var(--mdui-motion-easing-standard),bottom var(--mdui-motion-duration-short4) var(--mdui-motion-easing-standard),transform var(--mdui-motion-duration-medium4) var(--mdui-motion-easing-emphasized-decelerate)}:host([placement=bottom][open]:not([mobile])),:host([placement=top][open]:not([mobile])){transform:scaleY(1) translateX(-50%)}.message{display:block;margin:.625rem 1rem}:host([message-line='1']) .message{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host([message-line='2']) .message{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-box-orient:vertical;-webkit-line-clamp:2}.action-group{display:flex;align-items:center;margin-left:auto;padding-right:.5rem}.action,.close-button{display:inline-flex;align-items:center;justify-content:center}.action{color:rgb(var(--mdui-color-inverse-primary));font-size:var(--mdui-typescale-label-large-size);font-weight:var(--mdui-typescale-label-large-weight);letter-spacing:var(--mdui-typescale-label-large-tracking)}.action mdui-button,::slotted(mdui-button[slot=action][variant=outlined]),::slotted(mdui-button[slot=action][variant=text]){color:inherit;font-size:inherit;font-weight:inherit;letter-spacing:inherit;--mdui-comp-ripple-state-layer-color:var(--mdui-color-inverse-primary)}.action mdui-button::part(button){padding:0 .5rem}.close-button{margin:0 -.25rem 0 .25rem;font-size:1.5rem;color:rgb(var(--mdui-color-inverse-on-surface))}.close-button mdui-button-icon,::slotted(mdui-button-icon[slot=close-button][variant=outlined]),::slotted(mdui-button-icon[slot=close-button][variant=standard]){font-size:inherit;color:inherit;--mdui-comp-ripple-state-layer-color:var(--mdui-color-inverse-on-surface)}.close-button .i,::slotted([slot=close-icon]){font-size:inherit}`;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const style = css `:host{--shape-corner:var(--mdui-shape-corner-full);--shape-corner-thumb:var(--mdui-shape-corner-full);position:relative;display:inline-block;cursor:pointer;-webkit-tap-highlight-color:transparent;height:2.5rem}:host([disabled]){cursor:default;pointer-events:none}label{display:inline-flex;align-items:center;width:100%;height:100%;white-space:nowrap;cursor:inherit;-webkit-user-select:none;user-select:none;touch-action:manipulation;zoom:1;-webkit-user-drag:none}.track{position:relative;display:flex;align-items:center;border-radius:var(--shape-corner);transition-property:background-color,border-width;transition-duration:var(--mdui-motion-duration-short4);transition-timing-function:var(--mdui-motion-easing-standard);height:2rem;width:3.25rem;border:.125rem solid rgb(var(--mdui-color-outline));background-color:rgb(var(--mdui-color-surface-container-highest))}:host([checked]) .track{background-color:rgb(var(--mdui-color-primary));border-width:0}.invalid .track{background-color:rgb(var(--mdui-color-error-container));border-color:rgb(var(--mdui-color-error))}:host([disabled]) .track{background-color:rgba(var(--mdui-color-surface-container-highest),.12);border-color:rgba(var(--mdui-color-on-surface),.12)}:host([disabled][checked]) .track{background-color:rgba(var(--mdui-color-on-surface),.12)}input{position:absolute;padding:0;opacity:0;pointer-events:none;width:1.25rem;height:1.25rem;margin:0 0 0 .625rem}mdui-ripple{border-radius:50%;transition-property:left,top;transition-duration:var(--mdui-motion-duration-short4);transition-timing-function:var(--mdui-motion-easing-standard);width:2.5rem;height:2.5rem}.thumb{position:absolute;display:flex;align-items:center;justify-content:center;border-radius:var(--shape-corner-thumb);transition-property:width,height,left,background-color;transition-duration:var(--mdui-motion-duration-short4);transition-timing-function:var(--mdui-motion-easing-standard);height:1rem;width:1rem;left:.375rem;background-color:rgb(var(--mdui-color-outline));--mdui-comp-ripple-state-layer-color:var(--mdui-color-on-surface)}.thumb mdui-ripple{left:-.75rem;top:-.75rem}.has-unchecked-icon .thumb{height:1.5rem;width:1.5rem;left:.125rem}.has-unchecked-icon .thumb mdui-ripple{left:-.5rem;top:-.5rem}:host([focus-visible]) .thumb,:host([hover]) .thumb,:host([pressed]) .thumb{background-color:rgb(var(--mdui-color-on-surface-variant))}:host([checked]) .thumb{height:1.5rem;width:1.5rem;left:1.5rem;background-color:rgb(var(--mdui-color-on-primary));--mdui-comp-ripple-state-layer-color:var(--mdui-color-primary)}:host([checked]) .thumb mdui-ripple{left:-.5rem;top:-.5rem}:host([pressed]) .thumb{height:1.75rem;width:1.75rem;left:0}:host([pressed]) .thumb mdui-ripple{left:-.375rem;top:-.375rem}:host([pressed][checked]) .thumb{left:1.375rem}:host([focus-visible][checked]) .thumb,:host([hover][checked]) .thumb,:host([pressed][checked]) .thumb{background-color:rgb(var(--mdui-color-primary-container))}.invalid .thumb{background-color:rgb(var(--mdui-color-error));--mdui-comp-ripple-state-layer-color:var(--mdui-color-error)}:host([focus-visible]) .invalid .thumb,:host([hover]) .invalid .thumb,:host([pressed]) .invalid .thumb{background-color:rgb(var(--mdui-color-error))}:host([disabled]) .thumb{background-color:rgba(var(--mdui-color-on-surface),.38)}:host([disabled][checked]) .thumb{background-color:rgb(var(--mdui-color-surface))}.checked-icon,.unchecked-icon{display:flex;position:absolute;transition-property:opacity,transform;font-size:1rem}.unchecked-icon{opacity:1;transform:scale(1);transition-delay:var(--mdui-motion-duration-short1);transition-duration:var(--mdui-motion-duration-short3);transition-timing-function:var(--mdui-motion-easing-linear);color:rgb(var(--mdui-color-surface-container-highest))}:host([checked]) .unchecked-icon{opacity:0;transform:scale(.92);transition-delay:0s;transition-duration:var(--mdui-motion-duration-short1)}:host([disabled]) .unchecked-icon{color:rgba(var(--mdui-color-surface-container-highest),.38)}.checked-icon{opacity:0;transform:scale(.92);transition-delay:0s;transition-duration:var(--mdui-motion-duration-short1);transition-timing-function:var(--mdui-motion-easing-linear);color:rgb(var(--mdui-color-on-primary-container))}:host([checked]) .checked-icon{opacity:1;transform:scale(1);transition-delay:var(--mdui-motion-duration-short1);transition-duration:var(--mdui-motion-duration-short3)}.invalid .checked-icon{color:rgb(var(--mdui-color-error-container))}:host([disabled]) .checked-icon{color:rgba(var(--mdui-color-on-surface),.38)}.checked-icon .i,.unchecked-icon .i,::slotted([slot=checked-icon]),::slotted([slot=unchecked-icon]){font-size:inherit;color:inherit}`;
|
|
2
|
+
export const style = css `:host{--shape-corner:var(--mdui-shape-corner-full);--shape-corner-thumb:var(--mdui-shape-corner-full);position:relative;display:inline-block;cursor:pointer;-webkit-tap-highlight-color:transparent;height:2.5rem}:host([disabled]:not([disabled=false i])){cursor:default;pointer-events:none}label{display:inline-flex;align-items:center;width:100%;height:100%;white-space:nowrap;cursor:inherit;-webkit-user-select:none;user-select:none;touch-action:manipulation;zoom:1;-webkit-user-drag:none}.track{position:relative;display:flex;align-items:center;border-radius:var(--shape-corner);transition-property:background-color,border-width;transition-duration:var(--mdui-motion-duration-short4);transition-timing-function:var(--mdui-motion-easing-standard);height:2rem;width:3.25rem;border:.125rem solid rgb(var(--mdui-color-outline));background-color:rgb(var(--mdui-color-surface-container-highest))}:host([checked]:not([checked=false i])) .track{background-color:rgb(var(--mdui-color-primary));border-width:0}.invalid .track{background-color:rgb(var(--mdui-color-error-container));border-color:rgb(var(--mdui-color-error))}:host([disabled]:not([disabled=false i])) .track{background-color:rgba(var(--mdui-color-surface-container-highest),.12);border-color:rgba(var(--mdui-color-on-surface),.12)}:host([disabled][checked]:not([disabled=false i],[checked=false i])) .track{background-color:rgba(var(--mdui-color-on-surface),.12)}input{position:absolute;padding:0;opacity:0;pointer-events:none;width:1.25rem;height:1.25rem;margin:0 0 0 .625rem}mdui-ripple{border-radius:50%;transition-property:left,top;transition-duration:var(--mdui-motion-duration-short4);transition-timing-function:var(--mdui-motion-easing-standard);width:2.5rem;height:2.5rem}.thumb{position:absolute;display:flex;align-items:center;justify-content:center;border-radius:var(--shape-corner-thumb);transition-property:width,height,left,background-color;transition-duration:var(--mdui-motion-duration-short4);transition-timing-function:var(--mdui-motion-easing-standard);height:1rem;width:1rem;left:.375rem;background-color:rgb(var(--mdui-color-outline));--mdui-comp-ripple-state-layer-color:var(--mdui-color-on-surface)}.thumb mdui-ripple{left:-.75rem;top:-.75rem}.has-unchecked-icon .thumb{height:1.5rem;width:1.5rem;left:.125rem}.has-unchecked-icon .thumb mdui-ripple{left:-.5rem;top:-.5rem}:host([focus-visible]) .thumb,:host([hover]) .thumb,:host([pressed]) .thumb{background-color:rgb(var(--mdui-color-on-surface-variant))}:host([checked]:not([checked=false i])) .thumb{height:1.5rem;width:1.5rem;left:1.5rem;background-color:rgb(var(--mdui-color-on-primary));--mdui-comp-ripple-state-layer-color:var(--mdui-color-primary)}:host([checked]:not([checked=false i])) .thumb mdui-ripple{left:-.5rem;top:-.5rem}:host([pressed]) .thumb{height:1.75rem;width:1.75rem;left:0}:host([pressed]) .thumb mdui-ripple{left:-.375rem;top:-.375rem}:host([pressed][checked]:not([checked=false i])) .thumb{left:1.375rem}:host([focus-visible][checked]:not([checked=false i])) .thumb,:host([hover][checked]:not([checked=false i])) .thumb,:host([pressed][checked]:not([checked=false i])) .thumb{background-color:rgb(var(--mdui-color-primary-container))}.invalid .thumb{background-color:rgb(var(--mdui-color-error));--mdui-comp-ripple-state-layer-color:var(--mdui-color-error)}:host([focus-visible]) .invalid .thumb,:host([hover]) .invalid .thumb,:host([pressed]) .invalid .thumb{background-color:rgb(var(--mdui-color-error))}:host([disabled]:not([disabled=false i])) .thumb{background-color:rgba(var(--mdui-color-on-surface),.38)}:host([disabled][checked]:not([disabled=false i],[checked=false i])) .thumb{background-color:rgb(var(--mdui-color-surface))}.checked-icon,.unchecked-icon{display:flex;position:absolute;transition-property:opacity,transform;font-size:1rem}.unchecked-icon{opacity:1;transform:scale(1);transition-delay:var(--mdui-motion-duration-short1);transition-duration:var(--mdui-motion-duration-short3);transition-timing-function:var(--mdui-motion-easing-linear);color:rgb(var(--mdui-color-surface-container-highest))}:host([checked]:not([checked=false i])) .unchecked-icon{opacity:0;transform:scale(.92);transition-delay:0s;transition-duration:var(--mdui-motion-duration-short1)}:host([disabled]:not([disabled=false i])) .unchecked-icon{color:rgba(var(--mdui-color-surface-container-highest),.38)}.checked-icon{opacity:0;transform:scale(.92);transition-delay:0s;transition-duration:var(--mdui-motion-duration-short1);transition-timing-function:var(--mdui-motion-easing-linear);color:rgb(var(--mdui-color-on-primary-container))}:host([checked]:not([checked=false i])) .checked-icon{opacity:1;transform:scale(1);transition-delay:var(--mdui-motion-duration-short1);transition-duration:var(--mdui-motion-duration-short3)}.invalid .checked-icon{color:rgb(var(--mdui-color-error-container))}:host([disabled]:not([disabled=false i])) .checked-icon{color:rgba(var(--mdui-color-on-surface),.38)}.checked-icon .i,.unchecked-icon .i,::slotted([slot=checked-icon]),::slotted([slot=unchecked-icon]){font-size:inherit;color:inherit}`;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const tabStyle = css `:host{position:relative;--mdui-comp-ripple-state-layer-color:var(--mdui-color-on-surface)}:host([active]){--mdui-comp-ripple-state-layer-color:var(--mdui-color-primary)}.container{display:flex;justify-content:center;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;height:100%}.preset{flex-direction:column;min-height:3rem;padding:.625rem 1rem}:host([inline]) .preset{flex-direction:row}.icon-container,.label-container{position:relative;display:flex;align-items:center;justify-content:center}.icon-container ::slotted([slot=badge]){position:absolute;transform:translate(50%,-50%)}.icon-container ::slotted([slot=badge][variant=small]){transform:translate(.5625rem,-.5625rem)}.label-container ::slotted([slot=badge]){position:absolute;left:100%;bottom:100%;transform:translate(-.75rem,.625rem)}.label-container ::slotted([slot=badge][variant=small]){transform:translate(-.375rem,.375rem)}.icon,.label{display:flex;color:rgb(var(--mdui-color-on-surface-variant))}:host([focused]) .icon,:host([focused]) .label,:host([hover]) .icon,:host([hover]) .label,:host([pressed]) .icon,:host([pressed]) .label{color:rgb(var(--mdui-color-on-surface))}:host([active]) .icon,:host([active]) .label{color:rgb(var(--mdui-color-primary))}:host([active]) .variant-secondary .icon,:host([active]) .variant-secondary .label{color:rgb(var(--mdui-color-on-surface))}.icon{font-size:1.5rem}.label{font-size:var(--mdui-typescale-title-small-size);font-weight:var(--mdui-typescale-title-small-weight);letter-spacing:var(--mdui-typescale-title-small-tracking);line-height:var(--mdui-typescale-title-small-line-height)}.icon mdui-icon,::slotted([slot=icon]){font-size:inherit;color:inherit}`;
|
|
2
|
+
export const tabStyle = css `:host{position:relative;--mdui-comp-ripple-state-layer-color:var(--mdui-color-on-surface)}:host([active]){--mdui-comp-ripple-state-layer-color:var(--mdui-color-primary)}.container{display:flex;justify-content:center;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;height:100%}.preset{flex-direction:column;min-height:3rem;padding:.625rem 1rem}:host([inline]:not([inline=false i])) .preset{flex-direction:row}.icon-container,.label-container{position:relative;display:flex;align-items:center;justify-content:center}.icon-container ::slotted([slot=badge]){position:absolute;transform:translate(50%,-50%)}.icon-container ::slotted([slot=badge][variant=small]){transform:translate(.5625rem,-.5625rem)}.label-container ::slotted([slot=badge]){position:absolute;left:100%;bottom:100%;transform:translate(-.75rem,.625rem)}.label-container ::slotted([slot=badge][variant=small]){transform:translate(-.375rem,.375rem)}.icon,.label{display:flex;color:rgb(var(--mdui-color-on-surface-variant))}:host([focused]) .icon,:host([focused]) .label,:host([hover]) .icon,:host([hover]) .label,:host([pressed]) .icon,:host([pressed]) .label{color:rgb(var(--mdui-color-on-surface))}:host([active]) .icon,:host([active]) .label{color:rgb(var(--mdui-color-primary))}:host([active]) .variant-secondary .icon,:host([active]) .variant-secondary .label{color:rgb(var(--mdui-color-on-surface))}.icon{font-size:1.5rem}.label{font-size:var(--mdui-typescale-title-small-size);font-weight:var(--mdui-typescale-title-small-weight);letter-spacing:var(--mdui-typescale-title-small-tracking);line-height:var(--mdui-typescale-title-small-line-height)}.icon mdui-icon,::slotted([slot=icon]){font-size:inherit;color:inherit}`;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const tabsStyle = css `:host{position:relative;display:flex}:host([placement^=top]){flex-direction:column}:host([placement^=bottom]){flex-direction:column-reverse}:host([placement^=left]){flex-direction:row}:host([placement^=right]){flex-direction:row-reverse}.container{position:relative;display:flex;flex:0 0 auto;overflow-x:auto;background-color:rgb(var(--mdui-color-surface))}:host([placement^=bottom]) .container,:host([placement^=top]) .container{flex-direction:row}:host([placement^=left]) .container,:host([placement^=right]) .container{flex-direction:column}:host([placement$='-start']) .container{justify-content:flex-start}:host([placement=bottom]) .container,:host([placement=left]) .container,:host([placement=right]) .container,:host([placement=top]) .container{justify-content:center}:host([placement$='-end']) .container{justify-content:flex-end}.container::after{content:' ';position:absolute;background-color:rgb(var(--mdui-color-surface-variant))}:host([placement^=bottom]) .container::after,:host([placement^=top]) .container::after{left:0;width:100%;height:.0625rem}:host([placement^=top]) .container::after{bottom:0}:host([placement^=bottom]) .container::after{top:0}:host([placement^=left]) .container::after,:host([placement^=right]) .container::after{top:0;height:100%;width:.0625rem}:host([placement^=left]) .container::after{right:0}:host([placement^=right]) .container::after{left:0}.indicator{position:absolute;z-index:1;background-color:rgb(var(--mdui-color-primary))}.container:not(.initial) .indicator{transition-duration:var(--mdui-motion-duration-medium2);transition-timing-function:var(--mdui-motion-easing-standard-decelerate)}:host([placement^=bottom]) .indicator,:host([placement^=top]) .indicator{transition-property:transform,left,width}:host([placement^=left]) .indicator,:host([placement^=right]) .indicator{transition-property:transform,top,height}:host([placement^=top]) .indicator{bottom:0}:host([placement^=bottom]) .indicator{top:0}:host([placement^=left]) .indicator{right:0}:host([placement^=right]) .indicator{left:0}:host([placement^=bottom][variant=primary]) .indicator,:host([placement^=top][variant=primary]) .indicator{height:.1875rem}:host([placement^=bottom][variant=secondary]) .indicator,:host([placement^=top][variant=secondary]) .indicator{height:.125rem}:host([placement^=left][variant=primary]) .indicator,:host([placement^=right][variant=primary]) .indicator{width:.1875rem}:host([placement^=left][variant=secondary]) .indicator,:host([placement^=right][variant=secondary]) .indicator{width:.125rem}:host([placement^=top][variant=primary]) .indicator{border-top-left-radius:.1875rem;border-top-right-radius:.1875rem}:host([placement^=bottom][variant=primary]) .indicator{border-bottom-right-radius:.1875rem;border-bottom-left-radius:.1875rem}:host([placement^=left][variant=primary]) .indicator{border-top-left-radius:.1875rem;border-bottom-left-radius:.1875rem}:host([placement^=right][variant=primary]) .indicator{border-top-right-radius:.1875rem;border-bottom-right-radius:.1875rem}:host([full-width]) ::slotted(mdui-tab){flex:1}`;
|
|
2
|
+
export const tabsStyle = css `:host{position:relative;display:flex}:host([placement^=top]){flex-direction:column}:host([placement^=bottom]){flex-direction:column-reverse}:host([placement^=left]){flex-direction:row}:host([placement^=right]){flex-direction:row-reverse}.container{position:relative;display:flex;flex:0 0 auto;overflow-x:auto;background-color:rgb(var(--mdui-color-surface))}:host([placement^=bottom]) .container,:host([placement^=top]) .container{flex-direction:row}:host([placement^=left]) .container,:host([placement^=right]) .container{flex-direction:column}:host([placement$='-start']) .container{justify-content:flex-start}:host([placement=bottom]) .container,:host([placement=left]) .container,:host([placement=right]) .container,:host([placement=top]) .container{justify-content:center}:host([placement$='-end']) .container{justify-content:flex-end}.container::after{content:' ';position:absolute;background-color:rgb(var(--mdui-color-surface-variant))}:host([placement^=bottom]) .container::after,:host([placement^=top]) .container::after{left:0;width:100%;height:.0625rem}:host([placement^=top]) .container::after{bottom:0}:host([placement^=bottom]) .container::after{top:0}:host([placement^=left]) .container::after,:host([placement^=right]) .container::after{top:0;height:100%;width:.0625rem}:host([placement^=left]) .container::after{right:0}:host([placement^=right]) .container::after{left:0}.indicator{position:absolute;z-index:1;background-color:rgb(var(--mdui-color-primary))}.container:not(.initial) .indicator{transition-duration:var(--mdui-motion-duration-medium2);transition-timing-function:var(--mdui-motion-easing-standard-decelerate)}:host([placement^=bottom]) .indicator,:host([placement^=top]) .indicator{transition-property:transform,left,width}:host([placement^=left]) .indicator,:host([placement^=right]) .indicator{transition-property:transform,top,height}:host([placement^=top]) .indicator{bottom:0}:host([placement^=bottom]) .indicator{top:0}:host([placement^=left]) .indicator{right:0}:host([placement^=right]) .indicator{left:0}:host([placement^=bottom][variant=primary]) .indicator,:host([placement^=top][variant=primary]) .indicator{height:.1875rem}:host([placement^=bottom][variant=secondary]) .indicator,:host([placement^=top][variant=secondary]) .indicator{height:.125rem}:host([placement^=left][variant=primary]) .indicator,:host([placement^=right][variant=primary]) .indicator{width:.1875rem}:host([placement^=left][variant=secondary]) .indicator,:host([placement^=right][variant=secondary]) .indicator{width:.125rem}:host([placement^=top][variant=primary]) .indicator{border-top-left-radius:.1875rem;border-top-right-radius:.1875rem}:host([placement^=bottom][variant=primary]) .indicator{border-bottom-right-radius:.1875rem;border-bottom-left-radius:.1875rem}:host([placement^=left][variant=primary]) .indicator{border-top-left-radius:.1875rem;border-bottom-left-radius:.1875rem}:host([placement^=right][variant=primary]) .indicator{border-top-right-radius:.1875rem;border-bottom-right-radius:.1875rem}:host([full-width]:not([full-width=false i])) ::slotted(mdui-tab){flex:1}`;
|
|
@@ -3,7 +3,7 @@ import '@mdui/jq/methods/css.js';
|
|
|
3
3
|
import '@mdui/jq/methods/find.js';
|
|
4
4
|
import '@mdui/jq/methods/get.js';
|
|
5
5
|
import { MduiElement } from '@mdui/shared/base/mdui-element.js';
|
|
6
|
-
import type { CSSResultGroup,
|
|
6
|
+
import type { CSSResultGroup, TemplateResult } from 'lit';
|
|
7
7
|
/**
|
|
8
8
|
* @summary 选项卡组件。需配合 `<mdui-tab>` 和 `<mdui-tab-panel>` 组件使用
|
|
9
9
|
*
|
|
@@ -73,8 +73,8 @@ export declare class Tabs extends MduiElement<TabsEventMap> {
|
|
|
73
73
|
private onActiveKeyChange;
|
|
74
74
|
private onValueChange;
|
|
75
75
|
private onIndicatorChange;
|
|
76
|
+
connectedCallback(): void;
|
|
76
77
|
disconnectedCallback(): void;
|
|
77
|
-
protected firstUpdated(_changedProperties: PropertyValues): void;
|
|
78
78
|
protected render(): TemplateResult;
|
|
79
79
|
private onSlotChange;
|
|
80
80
|
private onClick;
|
package/components/tabs/tabs.js
CHANGED
|
@@ -98,14 +98,16 @@ let Tabs = class Tabs extends MduiElement {
|
|
|
98
98
|
await this.updateComplete;
|
|
99
99
|
this.updateIndicator();
|
|
100
100
|
}
|
|
101
|
+
connectedCallback() {
|
|
102
|
+
super.connectedCallback();
|
|
103
|
+
this.updateComplete.then(() => {
|
|
104
|
+
this.observeResize = observeResize(this.containerRef.value, () => this.updateIndicator());
|
|
105
|
+
});
|
|
106
|
+
}
|
|
101
107
|
disconnectedCallback() {
|
|
102
108
|
super.disconnectedCallback();
|
|
103
109
|
this.observeResize?.unobserve();
|
|
104
110
|
}
|
|
105
|
-
firstUpdated(_changedProperties) {
|
|
106
|
-
super.firstUpdated(_changedProperties);
|
|
107
|
-
this.observeResize = observeResize(this.containerRef.value, () => this.updateIndicator());
|
|
108
|
-
}
|
|
109
111
|
render() {
|
|
110
112
|
return html `<div ${ref(this.containerRef)} part="container" class="container ${classMap({ initial: this.isInitial })}"><slot @slotchange="${this.onSlotChange}" @click="${this.onClick}"></slot><div ${ref(this.indicatorRef)} part="indicator" class="indicator"></div></div><slot name="panel" @slotchange="${this.onSlotChange}"></slot>`;
|
|
111
113
|
}
|
|
@@ -7,7 +7,7 @@ import '@mdui/shared/icons/visibility.js';
|
|
|
7
7
|
import '../button-icon.js';
|
|
8
8
|
import '../icon.js';
|
|
9
9
|
import type { FormControl } from '@mdui/jq/shared/form.js';
|
|
10
|
-
import type { CSSResultGroup,
|
|
10
|
+
import type { CSSResultGroup, TemplateResult } from 'lit';
|
|
11
11
|
declare const TextField_base: import("@lit/reactive-element/decorators/base.js").Constructor<import("@mdui/shared/mixins/focusable.js").FocusableMixinInterface> & typeof MduiElement;
|
|
12
12
|
/**
|
|
13
13
|
* @summary 文本框组件
|
|
@@ -228,12 +228,9 @@ export declare class TextField extends TextField_base<TextFieldEventMap> impleme
|
|
|
228
228
|
*/
|
|
229
229
|
autocorrect?: string;
|
|
230
230
|
/**
|
|
231
|
-
*
|
|
232
|
-
*
|
|
233
|
-
* * `off`:禁用浏览器的自动填充,使用者必须输入他们想要输入的所有内容。或者网页提供了自己的自动填充方法
|
|
234
|
-
* * `on`:浏览器根据用户之前输入的内容或者习惯,在用户输入的时候给出相应输入提示
|
|
231
|
+
* `input` 元素的 `autocomplete` 属性
|
|
235
232
|
*/
|
|
236
|
-
autocomplete?:
|
|
233
|
+
autocomplete?: string;
|
|
237
234
|
/**
|
|
238
235
|
* `input` 元素的 `enterkeyhint` 属性,用于定制虚拟键盘上的 Enter 键的显示文本或图标。具体显示效果取决于用户使用的设备和语言。可选值包括:
|
|
239
236
|
*
|
|
@@ -324,6 +321,7 @@ export declare class TextField extends TextField_base<TextFieldEventMap> impleme
|
|
|
324
321
|
private onRowsChange;
|
|
325
322
|
private onMaxRowsChange;
|
|
326
323
|
private onMinRowsChange;
|
|
324
|
+
connectedCallback(): void;
|
|
327
325
|
disconnectedCallback(): void;
|
|
328
326
|
/**
|
|
329
327
|
* 选中文本框中的文本
|
|
@@ -365,7 +363,6 @@ export declare class TextField extends TextField_base<TextFieldEventMap> impleme
|
|
|
365
363
|
* @param message 自定义的错误提示文本
|
|
366
364
|
*/
|
|
367
365
|
setCustomValidity(message: string): void;
|
|
368
|
-
protected firstUpdated(_changedProperties: PropertyValues): void;
|
|
369
366
|
protected render(): TemplateResult;
|
|
370
367
|
private setCustomValidityInternal;
|
|
371
368
|
private onChange;
|
|
@@ -383,6 +380,7 @@ export declare class TextField extends TextField_base<TextFieldEventMap> impleme
|
|
|
383
380
|
private renderLabel;
|
|
384
381
|
private renderPrefix;
|
|
385
382
|
private renderSuffix;
|
|
383
|
+
private renderRightIcon;
|
|
386
384
|
private renderClearButton;
|
|
387
385
|
private renderTogglePasswordButton;
|
|
388
386
|
private renderInput;
|
|
@@ -7,7 +7,6 @@ import { live } from 'lit/directives/live.js';
|
|
|
7
7
|
import { createRef, ref } from 'lit/directives/ref.js';
|
|
8
8
|
import { when } from 'lit/directives/when.js';
|
|
9
9
|
import { msg } from '@lit/localize';
|
|
10
|
-
import { animate } from '@lit-labs/motion';
|
|
11
10
|
import { $ } from '@mdui/jq/$.js';
|
|
12
11
|
import '@mdui/jq/methods/css.js';
|
|
13
12
|
import { MduiElement } from '@mdui/shared/base/mdui-element.js';
|
|
@@ -16,7 +15,6 @@ import { HasSlotController } from '@mdui/shared/controllers/has-slot.js';
|
|
|
16
15
|
import { defaultValue } from '@mdui/shared/decorators/default-value.js';
|
|
17
16
|
import { watch } from '@mdui/shared/decorators/watch.js';
|
|
18
17
|
import { booleanConverter } from '@mdui/shared/helpers/decorator.js';
|
|
19
|
-
import { getDuration, getEasing } from '@mdui/shared/helpers/motion.js';
|
|
20
18
|
import { observeResize } from '@mdui/shared/helpers/observeResize.js';
|
|
21
19
|
import { nothingTemplate } from '@mdui/shared/helpers/template.js';
|
|
22
20
|
import '@mdui/shared/icons/cancel--outlined.js';
|
|
@@ -239,6 +237,7 @@ let TextField = class TextField extends FocusableMixin(MduiElement) {
|
|
|
239
237
|
this.hasValue = !['', null].includes(this.value);
|
|
240
238
|
if (this.hasUpdated) {
|
|
241
239
|
await this.updateComplete;
|
|
240
|
+
this.setTextareaHeight();
|
|
242
241
|
// reset 引起的值变更,不执行验证;直接修改值引起的变更,需要进行验证
|
|
243
242
|
const form = this.formController.getForm();
|
|
244
243
|
if (form && formResets.get(form)?.has(this)) {
|
|
@@ -279,6 +278,13 @@ let TextField = class TextField extends FocusableMixin(MduiElement) {
|
|
|
279
278
|
parseFloat($input.css('padding-top')) +
|
|
280
279
|
parseFloat($input.css('padding-bottom')));
|
|
281
280
|
}
|
|
281
|
+
connectedCallback() {
|
|
282
|
+
super.connectedCallback();
|
|
283
|
+
this.updateComplete.then(() => {
|
|
284
|
+
this.setTextareaHeight();
|
|
285
|
+
this.observeResize = observeResize(this.inputRef.value, () => this.setTextareaHeight());
|
|
286
|
+
});
|
|
287
|
+
}
|
|
282
288
|
disconnectedCallback() {
|
|
283
289
|
super.disconnectedCallback();
|
|
284
290
|
this.observeResize?.unobserve();
|
|
@@ -361,15 +367,15 @@ let TextField = class TextField extends FocusableMixin(MduiElement) {
|
|
|
361
367
|
// 外部调用 setCustomValidity 时,不再使用内置的验证规则,所以需要移除监听语言变更事件
|
|
362
368
|
offLocaleReady(this);
|
|
363
369
|
}
|
|
364
|
-
firstUpdated(_changedProperties) {
|
|
365
|
-
super.firstUpdated(_changedProperties);
|
|
366
|
-
this.setTextareaHeight();
|
|
367
|
-
this.observeResize = observeResize(this.inputRef.value, () => this.setTextareaHeight());
|
|
368
|
-
}
|
|
369
370
|
render() {
|
|
370
371
|
const hasIcon = !!this.icon || this.hasSlotController.test('icon');
|
|
371
372
|
const hasEndIcon = !!this.endIcon || this.hasSlotController.test('end-icon');
|
|
372
373
|
const hasErrorIcon = this.invalid || this.invalidStyle;
|
|
374
|
+
const hasTogglePasswordButton = this.type === 'password' && this.togglePassword && !this.disabled;
|
|
375
|
+
const hasClearButton = this.clearable &&
|
|
376
|
+
!this.disabled &&
|
|
377
|
+
(!this.readonly || this.readonlyButClearable) &&
|
|
378
|
+
(typeof this.value === 'number' || this.value.length > 0);
|
|
373
379
|
const hasPrefix = !!this.prefix || this.hasSlotController.test('prefix');
|
|
374
380
|
const hasSuffix = !!this.suffix || this.hasSlotController.test('suffix');
|
|
375
381
|
const hasHelper = !!this.helper || this.hasSlotController.test('helper');
|
|
@@ -385,8 +391,8 @@ let TextField = class TextField extends FocusableMixin(MduiElement) {
|
|
|
385
391
|
container: true,
|
|
386
392
|
'has-value': this.hasValue,
|
|
387
393
|
'has-icon': hasIcon,
|
|
388
|
-
'has-
|
|
389
|
-
'has-
|
|
394
|
+
'has-right-icon': hasEndIcon || hasErrorIcon,
|
|
395
|
+
'has-action': hasClearButton || hasTogglePasswordButton,
|
|
390
396
|
'has-prefix': hasPrefix,
|
|
391
397
|
'has-suffix': hasSuffix,
|
|
392
398
|
'is-firefox': navigator.userAgent.includes('Firefox'),
|
|
@@ -394,7 +400,7 @@ let TextField = class TextField extends FocusableMixin(MduiElement) {
|
|
|
394
400
|
});
|
|
395
401
|
return html `<div part="container" class="${className}">${this.renderPrefix()}<div class="input-container">${this.renderLabel()} ${this.isTextarea
|
|
396
402
|
? this.renderTextArea(hasInputSlot)
|
|
397
|
-
: this.renderInput(hasInputSlot)} ${when(hasInputSlot, () => html `<slot name="input" class="input"></slot>`)}</div>${this.renderClearButton()}${this.renderTogglePasswordButton()} ${this.
|
|
403
|
+
: this.renderInput(hasInputSlot)} ${when(hasInputSlot, () => html `<slot name="input" class="input"></slot>`)}</div>${this.renderSuffix()}${this.renderClearButton(hasClearButton)} ${this.renderTogglePasswordButton(hasTogglePasswordButton)} ${this.renderRightIcon(hasErrorIcon)}</div>${when(hasError || hasHelper || hasCounter, () => html `<div part="supporting" class="${classMap({ supporting: true, ...invalidClassNameObj })}">${this.renderHelper(hasError, hasHelper)} ${this.renderCounter(hasCounter)}</div>`)}`;
|
|
398
404
|
}
|
|
399
405
|
setCustomValidityInternal(message) {
|
|
400
406
|
this.inputRef.value.setCustomValidity(message);
|
|
@@ -416,7 +422,8 @@ let TextField = class TextField extends FocusableMixin(MduiElement) {
|
|
|
416
422
|
this.focus();
|
|
417
423
|
event.stopPropagation();
|
|
418
424
|
}
|
|
419
|
-
onInput() {
|
|
425
|
+
onInput(event) {
|
|
426
|
+
event.stopPropagation();
|
|
420
427
|
this.value = this.inputRef.value.value;
|
|
421
428
|
if (this.isTextarea) {
|
|
422
429
|
this.setTextareaHeight();
|
|
@@ -475,12 +482,7 @@ let TextField = class TextField extends FocusableMixin(MduiElement) {
|
|
|
475
482
|
}
|
|
476
483
|
renderLabel() {
|
|
477
484
|
return this.label
|
|
478
|
-
? html `<label part="label" class="label"
|
|
479
|
-
keyframeOptions: {
|
|
480
|
-
duration: getDuration(this, 'short4'),
|
|
481
|
-
easing: getEasing(this, 'standard'),
|
|
482
|
-
},
|
|
483
|
-
})}>${this.label}</label>`
|
|
485
|
+
? html `<label part="label" class="label">${this.label}</label>`
|
|
484
486
|
: nothingTemplate;
|
|
485
487
|
}
|
|
486
488
|
renderPrefix() {
|
|
@@ -488,27 +490,25 @@ let TextField = class TextField extends FocusableMixin(MduiElement) {
|
|
|
488
490
|
? html `<mdui-icon name="${this.icon}" class="i"></mdui-icon>`
|
|
489
491
|
: nothingTemplate}</slot><slot name="prefix" part="prefix" class="prefix">${this.prefix}</slot>`;
|
|
490
492
|
}
|
|
491
|
-
renderSuffix(
|
|
492
|
-
return html `<slot name="suffix" part="suffix" class="suffix">${this.suffix}</slot
|
|
493
|
+
renderSuffix() {
|
|
494
|
+
return html `<slot name="suffix" part="suffix" class="suffix">${this.suffix}</slot>`;
|
|
495
|
+
}
|
|
496
|
+
renderRightIcon(hasErrorIcon) {
|
|
497
|
+
return hasErrorIcon
|
|
493
498
|
? html `<slot name="error-icon" part="error-icon" class="right-icon">${this.errorIcon
|
|
494
499
|
? html `<mdui-icon name="${this.errorIcon}" class="i"></mdui-icon>`
|
|
495
500
|
: html `<mdui-icon-error class="i"></mdui-icon-error>`}</slot>`
|
|
496
501
|
: html `<slot name="end-icon" part="end-icon" class="end-icon right-icon">${this.endIcon
|
|
497
502
|
? html `<mdui-icon name="${this.endIcon}" class="i"></mdui-icon>`
|
|
498
|
-
: nothingTemplate}</slot
|
|
503
|
+
: nothingTemplate}</slot>`;
|
|
499
504
|
}
|
|
500
|
-
renderClearButton() {
|
|
501
|
-
|
|
502
|
-
!this.disabled &&
|
|
503
|
-
(!this.readonly || this.readonlyButClearable) &&
|
|
504
|
-
(typeof this.value === 'number' || this.value.length > 0);
|
|
505
|
-
return when(hasClearButton, () => html `<slot name="clear-button" part="clear-button" class="right-icon" @click="${this.onClear}"><mdui-button-icon tabindex="-1"><slot name="clear-icon" part="clear-icon">${this.clearIcon
|
|
505
|
+
renderClearButton(hasClearButton) {
|
|
506
|
+
return when(hasClearButton, () => html `<slot name="clear-button" part="clear-button" class="action" @click="${this.onClear}"><mdui-button-icon tabindex="-1"><slot name="clear-icon" part="clear-icon">${this.clearIcon
|
|
506
507
|
? html `<mdui-icon name="${this.clearIcon}" class="i"></mdui-icon>`
|
|
507
508
|
: html `<mdui-icon-cancel--outlined class="i"></mdui-icon-cancel--outlined>`}</slot></mdui-button-icon></slot>`);
|
|
508
509
|
}
|
|
509
|
-
renderTogglePasswordButton() {
|
|
510
|
-
|
|
511
|
-
return when(hasTogglePasswordButton, () => html `<slot name="toggle-password-button" part="toggle-password-button" class="right-icon" @click="${this.onTogglePassword}"><mdui-button-icon tabindex="-1">${this.isPasswordVisible
|
|
510
|
+
renderTogglePasswordButton(hasTogglePasswordButton) {
|
|
511
|
+
return when(hasTogglePasswordButton, () => html `<slot name="toggle-password-button" part="toggle-password-button" class="action" @click="${this.onTogglePassword}"><mdui-button-icon tabindex="-1">${this.isPasswordVisible
|
|
512
512
|
? html `<slot name="show-password-icon" part="show-password-icon">${this.showPasswordIcon
|
|
513
513
|
? html `<mdui-icon name="${this.showPasswordIcon}" class="i"></mdui-icon>`
|
|
514
514
|
: html `<mdui-icon-visibility-off class="i"></mdui-icon-visibility-off>`}</slot>`
|
|
@@ -523,7 +523,7 @@ let TextField = class TextField extends FocusableMixin(MduiElement) {
|
|
|
523
523
|
// @ts-ignore
|
|
524
524
|
!this.label || this.isFocusedStyle || this.hasValue
|
|
525
525
|
? this.placeholder
|
|
526
|
-
: undefined)}" ?readonly="${this.readonly}" ?disabled="${this.disabled}" ?required="${this.required}" minlength="${ifDefined(this.minlength)}" maxlength="${ifDefined(this.maxlength)}" min="${ifDefined(this.min)}" max="${ifDefined(this.max)}" step="${ifDefined(this.step)}" autocapitalize="${ifDefined(this.type === 'password' ? 'off' : this.autocapitalize)}" autocomplete="${
|
|
526
|
+
: undefined)}" ?readonly="${this.readonly}" ?disabled="${this.disabled}" ?required="${this.required}" minlength="${ifDefined(this.minlength)}" maxlength="${ifDefined(this.maxlength)}" min="${ifDefined(this.min)}" max="${ifDefined(this.max)}" step="${ifDefined(this.step)}" autocapitalize="${ifDefined(this.type === 'password' ? 'off' : this.autocapitalize)}" autocomplete="${this.autocomplete}" autocorrect="${ifDefined(this.type === 'password' ? 'off' : this.autocorrect)}" spellcheck="${ifDefined(this.spellcheck)}" pattern="${ifDefined(this.pattern)}" enterkeyhint="${ifDefined(this.enterkeyhint)}" inputmode="${ifDefined(this.inputmode)}" @change="${this.onChange}" @input="${this.onInput}" @invalid="${this.onInvalid}" @keydown="${this.onKeyDown}">`;
|
|
527
527
|
}
|
|
528
528
|
renderTextArea(hasInputSlot) {
|
|
529
529
|
return html `<textarea ${ref(this.inputRef)} part="input" class="input ${classMap({ 'hide-input': hasInputSlot })}" name="${ifDefined(this.name)}" .value="${live(this.value)}" placeholder="${ifDefined(
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const style = css `:host{display:inline-block;width:100%}:host([disabled]){pointer-events:none}:host([type=hidden]){display:none}.container{position:relative;display:flex;align-items:center;height:100%;transition:box-shadow var(--mdui-motion-duration-short4) var(--mdui-motion-easing-standard);padding:0 1rem}.container.has-icon{padding-left:.75rem}.container.has-end-icon,.container.has-error-icon{padding-right:.75rem}:host([variant=filled]) .container{box-shadow:inset 0 -.0625rem 0 0 rgb(var(--mdui-color-on-surface-variant));background-color:rgb(var(--mdui-color-surface-container-highest));border-radius:var(--mdui-shape-corner-extra-small) var(--mdui-shape-corner-extra-small) 0 0}:host([variant=filled]) .container.invalid,:host([variant=filled]) .container.invalid-style{box-shadow:inset 0 -.0625rem 0 0 rgb(var(--mdui-color-error))}:host([variant=filled]:hover) .container{box-shadow:inset 0 -.0625rem 0 0 rgb(var(--mdui-color-on-surface))}:host([variant=filled]:hover) .container.invalid,:host([variant=filled]:hover) .container.invalid-style{box-shadow:inset 0 -.0625rem 0 0 rgb(var(--mdui-color-on-error-container))}:host([variant=filled][focused-style]) .container,:host([variant=filled][focused]) .container{box-shadow:inset 0 -.125rem 0 0 rgb(var(--mdui-color-primary))}:host([variant=filled][focused-style]) .container.invalid,:host([variant=filled][focused-style]) .container.invalid-style,:host([variant=filled][focused]) .container.invalid,:host([variant=filled][focused]) .container.invalid-style{box-shadow:inset 0 -.125rem 0 0 rgb(var(--mdui-color-error))}:host([variant=filled][disabled]) .container{box-shadow:inset 0 -.0625rem 0 0 rgba(var(--mdui-color-on-surface),38%);background-color:rgba(var(--mdui-color-on-surface),4%)}:host([variant=outlined]) .container{box-shadow:inset 0 0 0 .0625rem rgb(var(--mdui-color-outline));border-radius:var(--mdui-shape-corner-extra-small)}:host([variant=outlined]) .container.invalid,:host([variant=outlined]) .container.invalid-style{box-shadow:inset 0 0 0 .0625rem rgb(var(--mdui-color-error))}:host([variant=outlined]:hover) .container{box-shadow:inset 0 0 0 .0625rem rgb(var(--mdui-color-on-surface))}:host([variant=outlined]:hover) .container.invalid,:host([variant=outlined]:hover) .container.invalid-style{box-shadow:inset 0 0 0 .0625rem rgb(var(--mdui-color-on-error-container))}:host([variant=outlined][focused-style]) .container,:host([variant=outlined][focused]) .container{box-shadow:inset 0 0 0 .125rem rgb(var(--mdui-color-primary))}:host([variant=outlined][focused-style]) .container.invalid,:host([variant=outlined][focused-style]) .container.invalid-style,:host([variant=outlined][focused]) .container.invalid,:host([variant=outlined][focused]) .container.invalid-style{box-shadow:inset 0 0 0 .125rem rgb(var(--mdui-color-error))}:host([variant=outlined][disabled]) .container{box-shadow:inset 0 0 0 .125rem rgba(var(--mdui-color-on-surface),12%)}.icon,.prefix,.right-icon,.suffix{display:flex;-webkit-user-select:none;user-select:none;color:rgb(var(--mdui-color-on-surface-variant))}:host([disabled]) .icon,:host([disabled]) .prefix,:host([disabled]) .right-icon,:host([disabled]) .suffix{color:rgba(var(--mdui-color-on-surface),38%)}.invalid .right-icon,.invalid .suffix,.invalid-style .right-icon,.invalid-style .suffix{color:rgb(var(--mdui-color-error))}:host(:hover) .invalid .right-icon,:host(:hover) .invalid .suffix,:host(:hover) .invalid-style .right-icon,:host(:hover) .invalid-style .suffix{color:rgb(var(--mdui-color-on-error-container))}:host([focused-style]) .invalid .right-icon,:host([focused-style]) .invalid .suffix,:host([focused-style]) .invalid-style .right-icon,:host([focused-style]) .invalid-style .suffix,:host([focused]) .invalid .right-icon,:host([focused]) .invalid .suffix,:host([focused]) .invalid-style .right-icon,:host([focused]) .invalid-style .suffix{color:rgb(var(--mdui-color-error))}.icon,.right-icon{font-size:1.5rem}.icon mdui-button-icon,.right-icon mdui-button-icon,::slotted(mdui-button-icon[slot]){margin-left:-.5rem;margin-right:-.5rem}.icon .i,.right-icon .i,::slotted([slot$=icon]){font-size:inherit}.has-icon .icon{margin-right:1rem}.has-end-icon .end-icon,.right-icon:not(.end-icon){margin-left:1rem}.prefix,.suffix{display:none;font-size:var(--mdui-typescale-body-large-size);font-weight:var(--mdui-typescale-body-large-weight);letter-spacing:var(--mdui-typescale-body-large-tracking);line-height:var(--mdui-typescale-body-large-line-height)}:host([variant=filled][label]) .prefix,:host([variant=filled][label]) .suffix{padding-top:1rem}.has-value .prefix,.has-value .suffix,:host([focused-style]) .prefix,:host([focused-style]) .suffix,:host([focused]) .prefix,:host([focused]) .suffix{display:flex}.has-prefix .prefix{padding-right:.125rem}.has-suffix .suffix{padding-left:.125rem}.input-container{width:100%;height:100%}.label{position:absolute;pointer-events:none;max-width:calc(100% - 1rem);display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:1;top:1rem;color:rgb(var(--mdui-color-on-surface-variant));font-size:var(--mdui-typescale-body-large-size);font-weight:var(--mdui-typescale-body-large-weight);letter-spacing:var(--mdui-typescale-body-large-tracking);line-height:var(--mdui-typescale-body-large-line-height)}.invalid .label,.invalid-style .label{color:rgb(var(--mdui-color-error))}:host([variant=outlined]) .label{padding:0 .25rem;margin:0 -.25rem}:host([variant=outlined]:hover) .label{color:rgb(var(--mdui-color-on-surface))}:host([variant=filled]:hover) .invalid .label,:host([variant=filled]:hover) .invalid-style .label,:host([variant=outlined]:hover) .invalid .label,:host([variant=outlined]:hover) .invalid-style .label{color:rgb(var(--mdui-color-on-error-container))}:host([variant=filled][focused-style]) .label,:host([variant=filled][focused]) .label,:host([variant=outlined][focused-style]) .label,:host([variant=outlined][focused]) .label{color:rgb(var(--mdui-color-primary))}:host([variant=filled]) .has-value .label,:host([variant=filled][focused-style]) .label,:host([variant=filled][focused]) .label,:host([variant=filled][type=date]) .label,:host([variant=filled][type=datetime-local]) .label,:host([variant=filled][type=month]) .label,:host([variant=filled][type=time]) .label,:host([variant=filled][type=week]) .label{font-size:var(--mdui-typescale-body-small-size);font-weight:var(--mdui-typescale-body-small-weight);letter-spacing:var(--mdui-typescale-body-small-tracking);line-height:var(--mdui-typescale-body-small-line-height);top:.25rem}:host([variant=outlined]) .has-value .label,:host([variant=outlined][focused-style]) .label,:host([variant=outlined][focused]) .label,:host([variant=outlined][type=date]) .label,:host([variant=outlined][type=datetime-local]) .label,:host([variant=outlined][type=month]) .label,:host([variant=outlined][type=time]) .label,:host([variant=outlined][type=week]) .label{font-size:var(--mdui-typescale-body-small-size);font-weight:var(--mdui-typescale-body-small-weight);letter-spacing:var(--mdui-typescale-body-small-tracking);line-height:var(--mdui-typescale-body-small-line-height);top:-.5rem;left:.75rem;background-color:rgb(var(--mdui-color-background))}:host([variant=filled][focused-style]) .invalid .label,:host([variant=filled][focused-style]) .invalid-style .label,:host([variant=filled][focused]) .invalid .label,:host([variant=filled][focused]) .invalid-style .label,:host([variant=outlined][focused-style]) .invalid .label,:host([variant=outlined][focused-style]) .invalid-style .label,:host([variant=outlined][focused]) .invalid .label,:host([variant=outlined][focused]) .invalid-style .label{color:rgb(var(--mdui-color-error))}:host([variant=filled][disabled]) .label,:host([variant=outlined][disabled]) .label{color:rgba(var(--mdui-color-on-surface),38%)}.input{display:flex;flex-wrap:wrap;width:100%;height:100%;min-height:100%;border:none;outline:0;background:0 0;appearance:none;resize:none;cursor:inherit;font-family:inherit;padding:1rem 0;font-size:var(--mdui-typescale-body-large-size);font-weight:var(--mdui-typescale-body-large-weight);letter-spacing:var(--mdui-typescale-body-large-tracking);line-height:var(--mdui-typescale-body-large-line-height);color:rgb(var(--mdui-color-on-surface));caret-color:rgb(var(--mdui-color-primary))}.input.hide-input{opacity:0;height:0;min-height:0;padding:0!important;overflow:hidden}.input::placeholder{color:rgb(var(--mdui-color-on-surface-variant))}.invalid .input,.invalid-style .input{caret-color:rgb(var(--mdui-color-error))}:host([disabled]) .input{color:rgba(var(--mdui-color-on-surface),38%)}:host([end-aligned]) .input{text-align:right}:host([variant=filled]) .label+.input{padding:1.5rem 0 .5rem 0}.supporting{display:flex;justify-content:space-between;padding:.25rem 1rem;color:rgb(var(--mdui-color-on-surface-variant))}.supporting.invalid,.supporting.invalid-style{color:rgb(var(--mdui-color-error))}.helper{display:block;opacity:1;transition:opacity var(--mdui-motion-duration-short4) var(--mdui-motion-easing-linear);font-size:var(--mdui-typescale-body-small-size);font-weight:var(--mdui-typescale-body-small-weight);letter-spacing:var(--mdui-typescale-body-small-tracking);line-height:var(--mdui-typescale-body-small-line-height)}:host([disabled]) .helper{color:rgba(var(--mdui-color-on-surface),38%)}:host([helper-on-focus]) .helper{opacity:0}:host([helper-on-focus][focused-style]) .helper,:host([helper-on-focus][focused]) .helper{opacity:1}.error{font-size:var(--mdui-typescale-body-small-size);font-weight:var(--mdui-typescale-body-small-weight);letter-spacing:var(--mdui-typescale-body-small-tracking);line-height:var(--mdui-typescale-body-small-line-height)}.counter{flex-wrap:nowrap;padding-left:1rem;font-size:var(--mdui-typescale-body-small-size);font-weight:var(--mdui-typescale-body-small-weight);letter-spacing:var(--mdui-typescale-body-small-tracking);line-height:var(--mdui-typescale-body-small-line-height)}::-ms-reveal{display:none}.is-firefox .input[type=date],.is-firefox .input[type=datetime-local],.is-firefox .input[type=time]{clip-path:inset(0 2em 0 0)}.input[type=number]::-webkit-inner-spin-button,.input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;display:none}.input[type=number]{-moz-appearance:textfield}.input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}`;
|
|
2
|
+
export const style = css `:host{display:inline-block;width:100%}:host([disabled]:not([disabled=false i])){pointer-events:none}:host([type=hidden]){display:none}.container{position:relative;display:flex;align-items:center;height:100%;padding:.125rem .125rem .125rem 1rem;transition:box-shadow var(--mdui-motion-duration-short4) var(--mdui-motion-easing-standard)}.container.has-icon{padding-left:.75rem}.container.has-action,.container.has-right-icon,.container.has-suffix{padding-right:.75rem}:host([variant=filled]) .container{box-shadow:inset 0 -.0625rem 0 0 rgb(var(--mdui-color-on-surface-variant));background-color:rgb(var(--mdui-color-surface-container-highest));border-radius:var(--mdui-shape-corner-extra-small) var(--mdui-shape-corner-extra-small) 0 0}:host([variant=filled]) .container.invalid,:host([variant=filled]) .container.invalid-style{box-shadow:inset 0 -.0625rem 0 0 rgb(var(--mdui-color-error))}:host([variant=filled]:hover) .container{box-shadow:inset 0 -.0625rem 0 0 rgb(var(--mdui-color-on-surface))}:host([variant=filled]:hover) .container.invalid,:host([variant=filled]:hover) .container.invalid-style{box-shadow:inset 0 -.0625rem 0 0 rgb(var(--mdui-color-on-error-container))}:host([variant=filled][focused-style]) .container,:host([variant=filled][focused]) .container{box-shadow:inset 0 -.125rem 0 0 rgb(var(--mdui-color-primary))}:host([variant=filled][focused-style]) .container.invalid,:host([variant=filled][focused-style]) .container.invalid-style,:host([variant=filled][focused]) .container.invalid,:host([variant=filled][focused]) .container.invalid-style{box-shadow:inset 0 -.125rem 0 0 rgb(var(--mdui-color-error))}:host([variant=filled][disabled]:not([disabled=false i])) .container{box-shadow:inset 0 -.0625rem 0 0 rgba(var(--mdui-color-on-surface),38%);background-color:rgba(var(--mdui-color-on-surface),4%)}:host([variant=outlined]) .container{box-shadow:inset 0 0 0 .0625rem rgb(var(--mdui-color-outline));border-radius:var(--mdui-shape-corner-extra-small)}:host([variant=outlined]) .container.invalid,:host([variant=outlined]) .container.invalid-style{box-shadow:inset 0 0 0 .0625rem rgb(var(--mdui-color-error))}:host([variant=outlined]:hover) .container{box-shadow:inset 0 0 0 .0625rem rgb(var(--mdui-color-on-surface))}:host([variant=outlined]:hover) .container.invalid,:host([variant=outlined]:hover) .container.invalid-style{box-shadow:inset 0 0 0 .0625rem rgb(var(--mdui-color-on-error-container))}:host([variant=outlined][focused-style]) .container,:host([variant=outlined][focused]) .container{box-shadow:inset 0 0 0 .125rem rgb(var(--mdui-color-primary))}:host([variant=outlined][focused-style]) .container.invalid,:host([variant=outlined][focused-style]) .container.invalid-style,:host([variant=outlined][focused]) .container.invalid,:host([variant=outlined][focused]) .container.invalid-style{box-shadow:inset 0 0 0 .125rem rgb(var(--mdui-color-error))}:host([variant=outlined][disabled]:not([disabled=false i])) .container{box-shadow:inset 0 0 0 .125rem rgba(var(--mdui-color-on-surface),12%)}.action,.icon,.prefix,.right-icon,.suffix{display:flex;-webkit-user-select:none;user-select:none;color:rgb(var(--mdui-color-on-surface-variant))}:host([disabled]:not([disabled=false i])) .action,:host([disabled]:not([disabled=false i])) .icon,:host([disabled]:not([disabled=false i])) .prefix,:host([disabled]:not([disabled=false i])) .right-icon,:host([disabled]:not([disabled=false i])) .suffix{color:rgba(var(--mdui-color-on-surface),38%)}.invalid .right-icon,.invalid-style .right-icon{color:rgb(var(--mdui-color-error))}:host(:hover) .invalid .right-icon,:host(:hover) .invalid-style .right-icon{color:rgb(var(--mdui-color-on-error-container))}:host([focused-style]) .invalid .right-icon,:host([focused-style]) .invalid-style .right-icon,:host([focused]) .invalid .right-icon,:host([focused]) .invalid-style .right-icon{color:rgb(var(--mdui-color-error))}.action,.icon,.right-icon{font-size:1.5rem}.action mdui-button-icon,.icon mdui-button-icon,.right-icon mdui-button-icon,::slotted(mdui-button-icon[slot]){margin-left:-.5rem;margin-right:-.5rem}.action .i,.icon .i,.right-icon .i,::slotted([slot$=icon]){font-size:inherit}.has-icon .icon{margin-right:1rem}.has-prefix .prefix{padding-right:.125rem}.has-action .action{margin-left:.75rem}.has-suffix .suffix{padding-right:.25rem;padding-left:.125rem}.has-right-icon .right-icon{margin-left:.75rem}.prefix,.suffix{display:none;font-size:var(--mdui-typescale-body-large-size);font-weight:var(--mdui-typescale-body-large-weight);letter-spacing:var(--mdui-typescale-body-large-tracking);line-height:var(--mdui-typescale-body-large-line-height)}:host([variant=filled][label]) .prefix,:host([variant=filled][label]) .suffix{padding-top:1rem}.has-value .prefix,.has-value .suffix,:host([focused-style]) .prefix,:host([focused-style]) .suffix,:host([focused]) .prefix,:host([focused]) .suffix{display:flex}.input-container{display:flex;width:100%;height:100%}.label{position:absolute;pointer-events:none;max-width:calc(100% - 1rem);display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:1;transition:all var(--mdui-motion-duration-short4) var(--mdui-motion-easing-standard);top:1rem;color:rgb(var(--mdui-color-on-surface-variant));font-size:var(--mdui-typescale-body-large-size);font-weight:var(--mdui-typescale-body-large-weight);letter-spacing:var(--mdui-typescale-body-large-tracking);line-height:var(--mdui-typescale-body-large-line-height)}.invalid .label,.invalid-style .label{color:rgb(var(--mdui-color-error))}:host([variant=outlined]) .label{padding:0 .25rem;margin:0 -.25rem}:host([variant=outlined]:hover) .label{color:rgb(var(--mdui-color-on-surface))}:host([variant=filled]:hover) .invalid .label,:host([variant=filled]:hover) .invalid-style .label,:host([variant=outlined]:hover) .invalid .label,:host([variant=outlined]:hover) .invalid-style .label{color:rgb(var(--mdui-color-on-error-container))}:host([variant=filled][focused-style]) .label,:host([variant=filled][focused]) .label,:host([variant=outlined][focused-style]) .label,:host([variant=outlined][focused]) .label{color:rgb(var(--mdui-color-primary))}:host([variant=filled]) .has-value .label,:host([variant=filled][focused-style]) .label,:host([variant=filled][focused]) .label,:host([variant=filled][type=date]) .label,:host([variant=filled][type=datetime-local]) .label,:host([variant=filled][type=month]) .label,:host([variant=filled][type=time]) .label,:host([variant=filled][type=week]) .label{font-size:var(--mdui-typescale-body-small-size);font-weight:var(--mdui-typescale-body-small-weight);letter-spacing:var(--mdui-typescale-body-small-tracking);line-height:var(--mdui-typescale-body-small-line-height);top:.25rem}:host([variant=outlined]) .has-value .label,:host([variant=outlined][focused-style]) .label,:host([variant=outlined][focused]) .label,:host([variant=outlined][type=date]) .label,:host([variant=outlined][type=datetime-local]) .label,:host([variant=outlined][type=month]) .label,:host([variant=outlined][type=time]) .label,:host([variant=outlined][type=week]) .label{font-size:var(--mdui-typescale-body-small-size);font-weight:var(--mdui-typescale-body-small-weight);letter-spacing:var(--mdui-typescale-body-small-tracking);line-height:var(--mdui-typescale-body-small-line-height);top:-.5rem;left:.75rem;background-color:rgb(var(--mdui-color-background))}:host([variant=filled][focused-style]) .invalid .label,:host([variant=filled][focused-style]) .invalid-style .label,:host([variant=filled][focused]) .invalid .label,:host([variant=filled][focused]) .invalid-style .label,:host([variant=outlined][focused-style]) .invalid .label,:host([variant=outlined][focused-style]) .invalid-style .label,:host([variant=outlined][focused]) .invalid .label,:host([variant=outlined][focused]) .invalid-style .label{color:rgb(var(--mdui-color-error))}:host([variant=filled][disabled]:not([disabled=false i])) .label,:host([variant=outlined][disabled]:not([disabled=false i])) .label{color:rgba(var(--mdui-color-on-surface),38%)}.input{display:block;width:100%;border:none;outline:0;background:0 0;appearance:none;resize:none;cursor:inherit;font-family:inherit;padding:.875rem .875rem .875rem 0;font-size:var(--mdui-typescale-body-large-size);font-weight:var(--mdui-typescale-body-large-weight);letter-spacing:var(--mdui-typescale-body-large-tracking);line-height:var(--mdui-typescale-body-large-line-height);color:rgb(var(--mdui-color-on-surface));caret-color:rgb(var(--mdui-color-primary))}.has-action .input,.has-right-icon .input{padding-right:.25rem}.has-suffix .input{padding-right:0}.input.hide-input{opacity:0;height:0;min-height:0;width:0;padding:0!important;overflow:hidden}.input::placeholder{color:rgb(var(--mdui-color-on-surface-variant))}.invalid .input,.invalid-style .input{caret-color:rgb(var(--mdui-color-error))}:host([disabled]:not([disabled=false i])) .input{color:rgba(var(--mdui-color-on-surface),38%)}:host([end-aligned]:not([end-aligned=false i])) .input{text-align:right}textarea.input{padding-top:0;margin-top:.875rem}:host([variant=filled]) .label+.input{padding-top:1.375rem;padding-bottom:.375rem}:host([variant=filled]) .label+textarea.input{padding-top:0;margin-top:1.375rem}.supporting{display:flex;justify-content:space-between;padding:.25rem 1rem;color:rgb(var(--mdui-color-on-surface-variant))}.supporting.invalid,.supporting.invalid-style{color:rgb(var(--mdui-color-error))}.helper{display:block;opacity:1;transition:opacity var(--mdui-motion-duration-short4) var(--mdui-motion-easing-linear);font-size:var(--mdui-typescale-body-small-size);font-weight:var(--mdui-typescale-body-small-weight);letter-spacing:var(--mdui-typescale-body-small-tracking);line-height:var(--mdui-typescale-body-small-line-height)}:host([disabled]:not([disabled=false i])) .helper{color:rgba(var(--mdui-color-on-surface),38%)}:host([helper-on-focus]:not([helper-on-focus=false i])) .helper{opacity:0}:host([helper-on-focus][focused-style]:not([helper-on-focus=false i])) .helper,:host([helper-on-focus][focused]:not([helper-on-focus=false i])) .helper{opacity:1}.error{font-size:var(--mdui-typescale-body-small-size);font-weight:var(--mdui-typescale-body-small-weight);letter-spacing:var(--mdui-typescale-body-small-tracking);line-height:var(--mdui-typescale-body-small-line-height)}.counter{flex-wrap:nowrap;padding-left:1rem;font-size:var(--mdui-typescale-body-small-size);font-weight:var(--mdui-typescale-body-small-weight);letter-spacing:var(--mdui-typescale-body-small-tracking);line-height:var(--mdui-typescale-body-small-line-height)}::-ms-reveal{display:none}.input[type=number]::-webkit-inner-spin-button,.input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;display:none}.input[type=number]{-moz-appearance:textfield}.input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}`;
|
|
@@ -186,6 +186,12 @@ let Tooltip = class Tooltip extends MduiElement {
|
|
|
186
186
|
this.overflowAncestors.forEach((ancestor) => {
|
|
187
187
|
ancestor.addEventListener('scroll', this.onWindowScroll);
|
|
188
188
|
});
|
|
189
|
+
this.definedController.whenDefined().then(() => {
|
|
190
|
+
// trigger 尺寸变化时,重新调整 tooltip 的位置
|
|
191
|
+
this.observeResize = observeResize(this.target, () => {
|
|
192
|
+
this.updatePositioner();
|
|
193
|
+
});
|
|
194
|
+
});
|
|
189
195
|
}
|
|
190
196
|
disconnectedCallback() {
|
|
191
197
|
super.disconnectedCallback();
|
|
@@ -205,10 +211,6 @@ let Tooltip = class Tooltip extends MduiElement {
|
|
|
205
211
|
target.addEventListener('keydown', this.onKeydown);
|
|
206
212
|
target.addEventListener('mouseenter', this.onMouseEnter);
|
|
207
213
|
target.addEventListener('mouseleave', this.onMouseLeave);
|
|
208
|
-
// trigger 尺寸变化时,重新调整 tooltip 的位置
|
|
209
|
-
this.observeResize = observeResize(target, () => {
|
|
210
|
-
this.updatePositioner();
|
|
211
|
-
});
|
|
212
214
|
});
|
|
213
215
|
}
|
|
214
216
|
render() {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const topAppBarStyle = css `:host{--shape-corner:var(--mdui-shape-corner-none);--z-index:2000;position:fixed;top:0;right:0;left:0;display:flex;flex:0 0 auto;align-items:flex-start;justify-content:flex-start;border-bottom-left-radius:var(--shape-corner);border-bottom-right-radius:var(--shape-corner);z-index:var(--z-index);transition:top var(--mdui-motion-duration-long2) var(--mdui-motion-easing-standard),height var(--mdui-motion-duration-long2) var(--mdui-motion-easing-standard),box-shadow var(--mdui-motion-duration-short4) var(--mdui-motion-easing-linear),background-color var(--mdui-motion-duration-short4) var(--mdui-motion-easing-linear);padding:.75rem .5rem;height:4rem;background-color:rgb(var(--mdui-color-surface))}:host([scroll-target]:not([scroll-target=''])){position:absolute}:host([scroll-behavior~=shrink]){transition-duration:var(--mdui-motion-duration-short4)}:host([scrolling]){background-color:rgb(var(--mdui-color-surface-container));box-shadow:var(--mdui-elevation-level2)}::slotted(mdui-button-icon){color:rgb(var(--mdui-color-on-surface-variant));font-size:1.5rem}::slotted(mdui-button-icon:first-child){color:rgb(var(--mdui-color-on-surface))}::slotted(mdui-avatar){width:1.875rem;height:1.875rem;margin-top:.3125rem;margin-bottom:.3125rem}::slotted(*){flex-shrink:0}::slotted(:not(:last-child)){margin-right:.5rem}:host([variant=medium]){height:7rem}:host([variant=large]){height:9.5rem}:host([hide]){transition-duration:var(--mdui-motion-duration-short4);top:-4.625rem}:host([hide][variant=medium]){top:-7.625rem}:host([hide][variant=large]){top:-10.125rem}:host([shrink][variant=large]),:host([shrink][variant=medium]){transition-duration:var(--mdui-motion-duration-short4);height:4rem}`;
|
|
2
|
+
export const topAppBarStyle = css `:host{--shape-corner:var(--mdui-shape-corner-none);--z-index:2000;position:fixed;top:0;right:0;left:0;display:flex;flex:0 0 auto;align-items:flex-start;justify-content:flex-start;border-bottom-left-radius:var(--shape-corner);border-bottom-right-radius:var(--shape-corner);z-index:var(--z-index);transition:top var(--mdui-motion-duration-long2) var(--mdui-motion-easing-standard),height var(--mdui-motion-duration-long2) var(--mdui-motion-easing-standard),box-shadow var(--mdui-motion-duration-short4) var(--mdui-motion-easing-linear),background-color var(--mdui-motion-duration-short4) var(--mdui-motion-easing-linear);padding:.75rem .5rem;height:4rem;background-color:rgb(var(--mdui-color-surface))}:host([scroll-target]:not([scroll-target=''])){position:absolute}:host([scroll-behavior~=shrink]){transition-duration:var(--mdui-motion-duration-short4)}:host([scrolling]){background-color:rgb(var(--mdui-color-surface-container));box-shadow:var(--mdui-elevation-level2)}::slotted(mdui-button-icon){color:rgb(var(--mdui-color-on-surface-variant));font-size:1.5rem}::slotted(mdui-button-icon:first-child){color:rgb(var(--mdui-color-on-surface))}::slotted(mdui-avatar){width:1.875rem;height:1.875rem;margin-top:.3125rem;margin-bottom:.3125rem}::slotted(*){flex-shrink:0}::slotted(:not(:last-child)){margin-right:.5rem}:host([variant=medium]){height:7rem}:host([variant=large]){height:9.5rem}:host([hide]:not([hide=false i])){transition-duration:var(--mdui-motion-duration-short4);top:-4.625rem}:host([hide][variant=medium]:not([hide=false i])){top:-7.625rem}:host([hide][variant=large]:not([hide=false i])){top:-10.125rem}:host([shrink][variant=large]:not([shrink=false i])),:host([shrink][variant=medium]:not([shrink=false i])){transition-duration:var(--mdui-motion-duration-short4);height:4rem}`;
|