@ionic/core 8.7.11-dev.11763677588.1682e25d → 8.7.11-dev.11763980773.157a1e20
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/ion-tab-button.js +13 -4
- package/components/item.js +10 -4
- package/dist/cjs/ion-item_8.cjs.entry.js +9 -3
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +12 -3
- package/dist/collection/components/item/item.js +10 -4
- package/dist/collection/components/tab-button/tab-button.js +13 -4
- package/dist/docs.json +1 -1
- package/dist/esm/ion-item_8.entry.js +10 -4
- package/dist/esm/ion-tab-bar_2.entry.js +13 -4
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-5557bd92.entry.js +4 -0
- package/dist/ionic/p-86a6f814.entry.js +4 -0
- package/dist/types/components/tab-button/tab-button.d.ts +1 -0
- package/hydrate/index.js +21 -6
- package/hydrate/index.mjs +21 -6
- package/package.json +1 -1
- package/dist/ionic/p-477843a1.entry.js +0 -4
- package/dist/ionic/p-8a1c5f2b.entry.js +0 -4
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
|
|
5
5
|
import { d as inheritAttributes } from './helpers.js';
|
|
6
6
|
import { c as config } from './index4.js';
|
|
7
|
-
import { b as getIonTheme } from './ionic-global.js';
|
|
7
|
+
import { b as getIonTheme, c as getIonMode } from './ionic-global.js';
|
|
8
8
|
import { d as defineCustomElement$2 } from './ripple-effect.js';
|
|
9
9
|
|
|
10
10
|
const tabButtonIonicCss = ":host{--ripple-color:var(--color-selected);--background-focused-opacity:1;-ms-flex:1;flex:1;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;height:100%;outline:none;background:var(--background);color:var(--color)}.button-native{display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:inherit;flex-direction:inherit;-ms-flex-align:inherit;align-items:inherit;-ms-flex-pack:inherit;justify-content:inherit;width:100%;height:100%;border:0;outline:none;background:transparent;text-decoration:none;cursor:pointer;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-user-drag:none}.button-inner{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:inherit;flex-flow:inherit;-ms-flex-align:inherit;align-items:inherit;-ms-flex-pack:inherit;justify-content:inherit;width:100%;height:100%;z-index:1}:host(.ion-focused) .button-native{color:var(--color-focused)}:host(.ion-focused) .button-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}@media (any-hover: hover){a:hover{color:var(--color-selected)}}:host(.tab-selected){color:var(--color-selected)}:host(.tab-hidden){display:none !important}::slotted(ion-label),::slotted(ion-icon){display:block;-ms-flex-item-align:center;align-self:center;max-width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box}::slotted(ion-label){-ms-flex-order:0;order:0}::slotted(ion-icon){-ms-flex-order:-1;order:-1;height:1em}:host(.tab-has-label-only) ::slotted(ion-label){white-space:normal}::slotted(ion-badge){-webkit-box-sizing:border-box;box-sizing:border-box;position:absolute;z-index:1}:host(.tab-layout-icon-start){-ms-flex-direction:row;flex-direction:row}:host(.tab-layout-icon-end){-ms-flex-direction:row-reverse;flex-direction:row-reverse}:host(.tab-layout-icon-bottom){-ms-flex-direction:column-reverse;flex-direction:column-reverse}:host(.tab-layout-icon-hide) ::slotted(ion-icon){display:none}:host(.tab-layout-label-hide) ::slotted(ion-label){display:none}ion-ripple-effect{color:var(--ripple-color)}:host{--focus-ring-color:var(--token-border-focus-default, var(--token-primitives-blue-400, #b5c0f7));--focus-ring-width:var(--token-border-radius-025, var(--token-scale-050, 2px));font-size:var(--token-font-size-300, 12px);font-weight:var(--token-font-weight-medium, 500);letter-spacing:var(--token-font-letter-spacing-1, 1%);line-height:var(--token-font-line-height-500, var(--token-scale-500, 20px));text-decoration:none;text-transform:none;position:relative;-ms-flex-line-pack:center;align-content:center;min-width:var(--token-scale-1200, 48px);min-height:var(--token-scale-1200, 48px);max-height:var(--token-scale-1800, 72px)}.button-native{border-radius:inherit;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);color:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-align:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;white-space:inherit;overflow:visible}.button-native::after{right:0;left:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0}:host(.tab-disabled)::after{right:0;left:0;top:0;bottom:0;position:absolute;background-color:var(--token-state-disabled, rgba(255, 255, 255, 0.6));content:\"\";pointer-events:none;z-index:1}.button-native{min-width:var(--token-scale-1200, 48px);overflow:visible}.button-native::after{border-radius:inherit}:host(.ion-focused) .button-native::after{outline:var(--focus-ring-width) solid var(--focus-ring-color)}:host(.ion-activated) .button-native::after{background:var(--background-activated);opacity:var(--background-activated-opacity)}::slotted(ion-icon){width:var(--token-scale-600, 24px);height:var(--token-scale-600, 24px)}:host(.tab-button-shape-soft){border-radius:var(--token-border-radius-200, var(--token-scale-200, 8px))}:host(.tab-button-shape-round){border-radius:var(--token-border-radius-400, var(--token-scale-400, 16px))}:host(.tab-button-shape-rectangular){border-radius:var(--token-border-radius-0, var(--token-scale-0, 0px))}:host ::slotted(ion-badge){inset-inline-start:calc(50% + var(--token-scale-300, 12px))}:host ::slotted(ion-badge.badge-vertical-top){top:-2px}:host ::slotted(ion-badge.badge-vertical-top:empty){top:calc(var(--token-scale-100, 4px) * -1)}:host ::slotted(ion-badge.badge-vertical-bottom){top:calc(50% - var(--token-scale-200, 8px))}:host ::slotted(ion-badge.badge-vertical-bottom:empty){top:calc(50% - var(--token-scale-100, 4px))}:host ::slotted(ion-badge[vertical]:not(:empty)){-webkit-padding-start:var(--token-scale-100, 4px);padding-inline-start:var(--token-scale-100, 4px);-webkit-padding-end:var(--token-scale-100, 4px);padding-inline-end:var(--token-scale-100, 4px);padding-top:var(--token-scale-100, 4px);padding-bottom:var(--token-scale-100, 4px);display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}:host(.tab-layout-icon-bottom) ::slotted(ion-badge.badge-vertical-top){top:calc(50% - var(--token-scale-100, 4px))}:host(.tab-layout-icon-bottom) ::slotted(ion-badge.badge-vertical-bottom){top:calc(50% + var(--token-scale-100, 4px))}:host(.tab-layout-icon-bottom) ::slotted(ion-badge.badge-vertical-bottom:empty){top:calc(50% + 14px)}";
|
|
@@ -82,17 +82,26 @@ const TabButton = /*@__PURE__*/ proxyCustomElement(class TabButton extends HTMLE
|
|
|
82
82
|
get hasIcon() {
|
|
83
83
|
return !!this.el.querySelector('ion-icon');
|
|
84
84
|
}
|
|
85
|
+
canActivate() {
|
|
86
|
+
const theme = getIonTheme(this);
|
|
87
|
+
const mode = getIonMode(this);
|
|
88
|
+
if (theme !== 'ionic') {
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
return mode === 'md';
|
|
92
|
+
}
|
|
85
93
|
render() {
|
|
86
94
|
const { disabled, hasIcon, hasLabel, href, rel, target, layout, selected, tab, inheritedAttributes } = this;
|
|
87
95
|
const theme = getIonTheme(this);
|
|
88
96
|
const shape = this.getShape();
|
|
97
|
+
const canActivate = this.canActivate();
|
|
89
98
|
const attrs = {
|
|
90
99
|
download: this.download,
|
|
91
100
|
href,
|
|
92
101
|
rel,
|
|
93
102
|
target,
|
|
94
103
|
};
|
|
95
|
-
return (h(Host, { key: '
|
|
104
|
+
return (h(Host, { key: '5a32785eaf0570cdc3444d52ce8bba8174c3e0b9', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
|
|
96
105
|
[theme]: true,
|
|
97
106
|
'tab-selected': selected,
|
|
98
107
|
'tab-disabled': disabled,
|
|
@@ -101,11 +110,11 @@ const TabButton = /*@__PURE__*/ proxyCustomElement(class TabButton extends HTMLE
|
|
|
101
110
|
'tab-has-label-only': hasLabel && !hasIcon,
|
|
102
111
|
'tab-has-icon-only': hasIcon && !hasLabel,
|
|
103
112
|
[`tab-layout-${layout}`]: true,
|
|
104
|
-
'ion-activatable':
|
|
113
|
+
'ion-activatable': canActivate,
|
|
105
114
|
'ion-selectable': true,
|
|
106
115
|
[`tab-button-shape-${shape}`]: shape !== undefined,
|
|
107
116
|
'ion-focusable': true,
|
|
108
|
-
} }, h("a", Object.assign({ key: '
|
|
117
|
+
} }, h("a", Object.assign({ key: '1441f409b4a60823a57f27b90f6840b557b7d65a' }, attrs, { class: "button-native", part: "native", role: "tab", "aria-selected": selected ? 'true' : null, "aria-disabled": disabled ? 'true' : null, tabindex: disabled ? '-1' : undefined }, inheritedAttributes), h("span", { key: '1566ca0af66b6e51068aca221a89133d2af061ed', class: "button-inner" }, h("slot", { key: '757878091cfe3768107eb0a53b8d1c895ce43399' })), theme === 'md' && h("ion-ripple-effect", { key: '28dde3e7127bdc9d5e1477b47458a5a4ab71328e', type: "unbounded" }))));
|
|
109
118
|
}
|
|
110
119
|
get el() { return this; }
|
|
111
120
|
static get style() { return {
|
package/components/item.js
CHANGED
|
@@ -7,7 +7,7 @@ import { d as inheritAttributes, r as raf } from './helpers.js';
|
|
|
7
7
|
import { h as hostContext, c as createColorClasses, o as openURL } from './theme.js';
|
|
8
8
|
import { f as chevronForward } from './index6.js';
|
|
9
9
|
import { c as config } from './index4.js';
|
|
10
|
-
import { b as getIonTheme } from './ionic-global.js';
|
|
10
|
+
import { b as getIonTheme, c as getIonMode } from './ionic-global.js';
|
|
11
11
|
import { d as defineCustomElement$2 } from './icon.js';
|
|
12
12
|
import { d as defineCustomElement$1 } from './ripple-effect.js';
|
|
13
13
|
|
|
@@ -149,7 +149,13 @@ const Item = /*@__PURE__*/ proxyCustomElement(class Item extends HTMLElement {
|
|
|
149
149
|
return this.href !== undefined || this.button;
|
|
150
150
|
}
|
|
151
151
|
canActivate() {
|
|
152
|
-
|
|
152
|
+
const theme = getIonTheme(this);
|
|
153
|
+
const mode = getIonMode(this);
|
|
154
|
+
const shouldActivate = this.isClickable() || this.hasCover();
|
|
155
|
+
if (theme !== 'ionic') {
|
|
156
|
+
return shouldActivate;
|
|
157
|
+
}
|
|
158
|
+
return mode === 'md' && shouldActivate;
|
|
153
159
|
}
|
|
154
160
|
isFocusable() {
|
|
155
161
|
const focusableChild = this.el.querySelector('.ion-focusable');
|
|
@@ -260,7 +266,7 @@ const Item = /*@__PURE__*/ proxyCustomElement(class Item extends HTMLElement {
|
|
|
260
266
|
* However, other form controls such as checkboxes and radios do.
|
|
261
267
|
*/
|
|
262
268
|
const firstInteractiveNeedsPointerCursor = firstInteractive !== undefined && !['ION-INPUT', 'ION-TEXTAREA'].includes(firstInteractive.tagName);
|
|
263
|
-
return (h(Host, { key: '
|
|
269
|
+
return (h(Host, { key: '9bb45fbe33fab3adb57da6c5fe3ab4b4f85b2fdb', "aria-disabled": ariaDisabled, class: Object.assign(Object.assign(Object.assign({}, childStyles), labelColorStyles), createColorClasses(this.color, {
|
|
264
270
|
item: true,
|
|
265
271
|
[theme]: true,
|
|
266
272
|
'item-lines-default': lines === undefined,
|
|
@@ -273,7 +279,7 @@ const Item = /*@__PURE__*/ proxyCustomElement(class Item extends HTMLElement {
|
|
|
273
279
|
'ion-activatable': canActivate,
|
|
274
280
|
'ion-focusable': this.focusable,
|
|
275
281
|
'item-rtl': document.dir === 'rtl',
|
|
276
|
-
})), role: inList ? 'listitem' : null }, h(TagType, Object.assign({ key: '
|
|
282
|
+
})), role: inList ? 'listitem' : null }, h(TagType, Object.assign({ key: '0118a0b7bc4b78b210ae03981c03a7ede170333b' }, attrs, inheritedAriaAttributes, { class: "item-native", part: "native", disabled: disabled }, clickFn), h("slot", { key: '0b4891b9334172929cd5a3f361b33f0f9e830c9e', name: "start", onSlotchange: this.updateInteractivityOnSlotChange }), h("div", { key: '16128a1269cf59dedce8a5c66a4f9062e2ce23a2', class: "item-inner" }, h("div", { key: '53ae7202232d7145b4d81fdc8c1fff0a13e92e8b', class: "input-wrapper" }, h("slot", { key: '6726b19a45bea9c76b3429b97091c3467f34ee7b', onSlotchange: this.updateInteractivityOnSlotChange })), h("slot", { key: '07825d01d5e1ed427bc58c4367f05b14dc670f22', name: "end", onSlotchange: this.updateInteractivityOnSlotChange }), showDetail && (h("ion-icon", { key: '7d044035b257dbcecbc0c150e512a6570a48c871', icon: itemDetailIcon, lazy: false, class: "item-detail-icon", part: "detail-icon", "aria-hidden": "true", "flip-rtl": shouldFlipIcon }))), canActivate && theme === 'md' && h("ion-ripple-effect", { key: 'f7578981817b9244b9445c562e0f3d1148e2b455' }))));
|
|
277
283
|
}
|
|
278
284
|
get el() { return this; }
|
|
279
285
|
static get watchers() { return {
|
|
@@ -145,7 +145,13 @@ const Item = class {
|
|
|
145
145
|
return this.href !== undefined || this.button;
|
|
146
146
|
}
|
|
147
147
|
canActivate() {
|
|
148
|
-
|
|
148
|
+
const theme = ionicGlobal.getIonTheme(this);
|
|
149
|
+
const mode = ionicGlobal.getIonMode(this);
|
|
150
|
+
const shouldActivate = this.isClickable() || this.hasCover();
|
|
151
|
+
if (theme !== 'ionic') {
|
|
152
|
+
return shouldActivate;
|
|
153
|
+
}
|
|
154
|
+
return mode === 'md' && shouldActivate;
|
|
149
155
|
}
|
|
150
156
|
isFocusable() {
|
|
151
157
|
const focusableChild = this.el.querySelector('.ion-focusable');
|
|
@@ -256,7 +262,7 @@ const Item = class {
|
|
|
256
262
|
* However, other form controls such as checkboxes and radios do.
|
|
257
263
|
*/
|
|
258
264
|
const firstInteractiveNeedsPointerCursor = firstInteractive !== undefined && !['ION-INPUT', 'ION-TEXTAREA'].includes(firstInteractive.tagName);
|
|
259
|
-
return (index.h(index.Host, { key: '
|
|
265
|
+
return (index.h(index.Host, { key: '9bb45fbe33fab3adb57da6c5fe3ab4b4f85b2fdb', "aria-disabled": ariaDisabled, class: Object.assign(Object.assign(Object.assign({}, childStyles), labelColorStyles), theme.createColorClasses(this.color, {
|
|
260
266
|
item: true,
|
|
261
267
|
[theme$1]: true,
|
|
262
268
|
'item-lines-default': lines === undefined,
|
|
@@ -269,7 +275,7 @@ const Item = class {
|
|
|
269
275
|
'ion-activatable': canActivate,
|
|
270
276
|
'ion-focusable': this.focusable,
|
|
271
277
|
'item-rtl': document.dir === 'rtl',
|
|
272
|
-
})), role: inList ? 'listitem' : null }, index.h(TagType, Object.assign({ key: '
|
|
278
|
+
})), role: inList ? 'listitem' : null }, index.h(TagType, Object.assign({ key: '0118a0b7bc4b78b210ae03981c03a7ede170333b' }, attrs, inheritedAriaAttributes, { class: "item-native", part: "native", disabled: disabled }, clickFn), index.h("slot", { key: '0b4891b9334172929cd5a3f361b33f0f9e830c9e', name: "start", onSlotchange: this.updateInteractivityOnSlotChange }), index.h("div", { key: '16128a1269cf59dedce8a5c66a4f9062e2ce23a2', class: "item-inner" }, index.h("div", { key: '53ae7202232d7145b4d81fdc8c1fff0a13e92e8b', class: "input-wrapper" }, index.h("slot", { key: '6726b19a45bea9c76b3429b97091c3467f34ee7b', onSlotchange: this.updateInteractivityOnSlotChange })), index.h("slot", { key: '07825d01d5e1ed427bc58c4367f05b14dc670f22', name: "end", onSlotchange: this.updateInteractivityOnSlotChange }), showDetail && (index.h("ion-icon", { key: '7d044035b257dbcecbc0c150e512a6570a48c871', icon: itemDetailIcon, lazy: false, class: "item-detail-icon", part: "detail-icon", "aria-hidden": "true", "flip-rtl": shouldFlipIcon }))), canActivate && theme$1 === 'md' && index.h("ion-ripple-effect", { key: 'f7578981817b9244b9445c562e0f3d1148e2b455' }))));
|
|
273
279
|
}
|
|
274
280
|
get el() { return index.getElement(this); }
|
|
275
281
|
static get watchers() { return {
|
|
@@ -193,17 +193,26 @@ const TabButton = class {
|
|
|
193
193
|
get hasIcon() {
|
|
194
194
|
return !!this.el.querySelector('ion-icon');
|
|
195
195
|
}
|
|
196
|
+
canActivate() {
|
|
197
|
+
const theme = ionicGlobal.getIonTheme(this);
|
|
198
|
+
const mode = ionicGlobal.getIonMode(this);
|
|
199
|
+
if (theme !== 'ionic') {
|
|
200
|
+
return true;
|
|
201
|
+
}
|
|
202
|
+
return mode === 'md';
|
|
203
|
+
}
|
|
196
204
|
render() {
|
|
197
205
|
const { disabled, hasIcon, hasLabel, href, rel, target, layout, selected, tab, inheritedAttributes } = this;
|
|
198
206
|
const theme = ionicGlobal.getIonTheme(this);
|
|
199
207
|
const shape = this.getShape();
|
|
208
|
+
const canActivate = this.canActivate();
|
|
200
209
|
const attrs = {
|
|
201
210
|
download: this.download,
|
|
202
211
|
href,
|
|
203
212
|
rel,
|
|
204
213
|
target,
|
|
205
214
|
};
|
|
206
|
-
return (index.h(index.Host, { key: '
|
|
215
|
+
return (index.h(index.Host, { key: '5a32785eaf0570cdc3444d52ce8bba8174c3e0b9', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
|
|
207
216
|
[theme]: true,
|
|
208
217
|
'tab-selected': selected,
|
|
209
218
|
'tab-disabled': disabled,
|
|
@@ -212,11 +221,11 @@ const TabButton = class {
|
|
|
212
221
|
'tab-has-label-only': hasLabel && !hasIcon,
|
|
213
222
|
'tab-has-icon-only': hasIcon && !hasLabel,
|
|
214
223
|
[`tab-layout-${layout}`]: true,
|
|
215
|
-
'ion-activatable':
|
|
224
|
+
'ion-activatable': canActivate,
|
|
216
225
|
'ion-selectable': true,
|
|
217
226
|
[`tab-button-shape-${shape}`]: shape !== undefined,
|
|
218
227
|
'ion-focusable': true,
|
|
219
|
-
} }, index.h("a", Object.assign({ key: '
|
|
228
|
+
} }, index.h("a", Object.assign({ key: '1441f409b4a60823a57f27b90f6840b557b7d65a' }, attrs, { class: "button-native", part: "native", role: "tab", "aria-selected": selected ? 'true' : null, "aria-disabled": disabled ? 'true' : null, tabindex: disabled ? '-1' : undefined }, inheritedAttributes), index.h("span", { key: '1566ca0af66b6e51068aca221a89133d2af061ed', class: "button-inner" }, index.h("slot", { key: '757878091cfe3768107eb0a53b8d1c895ce43399' })), theme === 'md' && index.h("ion-ripple-effect", { key: '28dde3e7127bdc9d5e1477b47458a5a4ab71328e', type: "unbounded" }))));
|
|
220
229
|
}
|
|
221
230
|
get el() { return index.getElement(this); }
|
|
222
231
|
};
|
|
@@ -7,7 +7,7 @@ import { inheritAttributes, raf } from "../../utils/helpers";
|
|
|
7
7
|
import { createColorClasses, hostContext, openURL } from "../../utils/theme";
|
|
8
8
|
import { chevronForward } from "ionicons/icons";
|
|
9
9
|
import { config } from "../../global/config";
|
|
10
|
-
import { getIonTheme } from "../../global/ionic-global";
|
|
10
|
+
import { getIonMode, getIonTheme } from "../../global/ionic-global";
|
|
11
11
|
/**
|
|
12
12
|
* @virtualProp {"ios" | "md"} mode - The mode determines the platform behaviors of the component.
|
|
13
13
|
* @virtualProp {"ios" | "md" | "ionic"} theme - The theme determines the visual appearance of the component.
|
|
@@ -146,7 +146,13 @@ export class Item {
|
|
|
146
146
|
return this.href !== undefined || this.button;
|
|
147
147
|
}
|
|
148
148
|
canActivate() {
|
|
149
|
-
|
|
149
|
+
const theme = getIonTheme(this);
|
|
150
|
+
const mode = getIonMode(this);
|
|
151
|
+
const shouldActivate = this.isClickable() || this.hasCover();
|
|
152
|
+
if (theme !== 'ionic') {
|
|
153
|
+
return shouldActivate;
|
|
154
|
+
}
|
|
155
|
+
return mode === 'md' && shouldActivate;
|
|
150
156
|
}
|
|
151
157
|
isFocusable() {
|
|
152
158
|
const focusableChild = this.el.querySelector('.ion-focusable');
|
|
@@ -257,7 +263,7 @@ export class Item {
|
|
|
257
263
|
* However, other form controls such as checkboxes and radios do.
|
|
258
264
|
*/
|
|
259
265
|
const firstInteractiveNeedsPointerCursor = firstInteractive !== undefined && !['ION-INPUT', 'ION-TEXTAREA'].includes(firstInteractive.tagName);
|
|
260
|
-
return (h(Host, { key: '
|
|
266
|
+
return (h(Host, { key: '9bb45fbe33fab3adb57da6c5fe3ab4b4f85b2fdb', "aria-disabled": ariaDisabled, class: Object.assign(Object.assign(Object.assign({}, childStyles), labelColorStyles), createColorClasses(this.color, {
|
|
261
267
|
item: true,
|
|
262
268
|
[theme]: true,
|
|
263
269
|
'item-lines-default': lines === undefined,
|
|
@@ -270,7 +276,7 @@ export class Item {
|
|
|
270
276
|
'ion-activatable': canActivate,
|
|
271
277
|
'ion-focusable': this.focusable,
|
|
272
278
|
'item-rtl': document.dir === 'rtl',
|
|
273
|
-
})), role: inList ? 'listitem' : null }, h(TagType, Object.assign({ key: '
|
|
279
|
+
})), role: inList ? 'listitem' : null }, h(TagType, Object.assign({ key: '0118a0b7bc4b78b210ae03981c03a7ede170333b' }, attrs, inheritedAriaAttributes, { class: "item-native", part: "native", disabled: disabled }, clickFn), h("slot", { key: '0b4891b9334172929cd5a3f361b33f0f9e830c9e', name: "start", onSlotchange: this.updateInteractivityOnSlotChange }), h("div", { key: '16128a1269cf59dedce8a5c66a4f9062e2ce23a2', class: "item-inner" }, h("div", { key: '53ae7202232d7145b4d81fdc8c1fff0a13e92e8b', class: "input-wrapper" }, h("slot", { key: '6726b19a45bea9c76b3429b97091c3467f34ee7b', onSlotchange: this.updateInteractivityOnSlotChange })), h("slot", { key: '07825d01d5e1ed427bc58c4367f05b14dc670f22', name: "end", onSlotchange: this.updateInteractivityOnSlotChange }), showDetail && (h("ion-icon", { key: '7d044035b257dbcecbc0c150e512a6570a48c871', icon: itemDetailIcon, lazy: false, class: "item-detail-icon", part: "detail-icon", "aria-hidden": "true", "flip-rtl": shouldFlipIcon }))), canActivate && theme === 'md' && h("ion-ripple-effect", { key: 'f7578981817b9244b9445c562e0f3d1148e2b455' }))));
|
|
274
280
|
}
|
|
275
281
|
static get is() { return "ion-item"; }
|
|
276
282
|
static get encapsulation() { return "shadow"; }
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { Host, h } from "@stencil/core";
|
|
5
5
|
import { inheritAttributes } from "../../utils/helpers";
|
|
6
6
|
import { config } from "../../global/config";
|
|
7
|
-
import { getIonTheme } from "../../global/ionic-global";
|
|
7
|
+
import { getIonMode, getIonTheme } from "../../global/ionic-global";
|
|
8
8
|
/**
|
|
9
9
|
* @virtualProp {"ios" | "md"} mode - The mode determines the platform behaviors of the component.
|
|
10
10
|
* @virtualProp {"ios" | "md" | "ionic"} theme - The theme determines the visual appearance of the component.
|
|
@@ -74,17 +74,26 @@ export class TabButton {
|
|
|
74
74
|
get hasIcon() {
|
|
75
75
|
return !!this.el.querySelector('ion-icon');
|
|
76
76
|
}
|
|
77
|
+
canActivate() {
|
|
78
|
+
const theme = getIonTheme(this);
|
|
79
|
+
const mode = getIonMode(this);
|
|
80
|
+
if (theme !== 'ionic') {
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
return mode === 'md';
|
|
84
|
+
}
|
|
77
85
|
render() {
|
|
78
86
|
const { disabled, hasIcon, hasLabel, href, rel, target, layout, selected, tab, inheritedAttributes } = this;
|
|
79
87
|
const theme = getIonTheme(this);
|
|
80
88
|
const shape = this.getShape();
|
|
89
|
+
const canActivate = this.canActivate();
|
|
81
90
|
const attrs = {
|
|
82
91
|
download: this.download,
|
|
83
92
|
href,
|
|
84
93
|
rel,
|
|
85
94
|
target,
|
|
86
95
|
};
|
|
87
|
-
return (h(Host, { key: '
|
|
96
|
+
return (h(Host, { key: '5a32785eaf0570cdc3444d52ce8bba8174c3e0b9', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
|
|
88
97
|
[theme]: true,
|
|
89
98
|
'tab-selected': selected,
|
|
90
99
|
'tab-disabled': disabled,
|
|
@@ -93,11 +102,11 @@ export class TabButton {
|
|
|
93
102
|
'tab-has-label-only': hasLabel && !hasIcon,
|
|
94
103
|
'tab-has-icon-only': hasIcon && !hasLabel,
|
|
95
104
|
[`tab-layout-${layout}`]: true,
|
|
96
|
-
'ion-activatable':
|
|
105
|
+
'ion-activatable': canActivate,
|
|
97
106
|
'ion-selectable': true,
|
|
98
107
|
[`tab-button-shape-${shape}`]: shape !== undefined,
|
|
99
108
|
'ion-focusable': true,
|
|
100
|
-
} }, h("a", Object.assign({ key: '
|
|
109
|
+
} }, h("a", Object.assign({ key: '1441f409b4a60823a57f27b90f6840b557b7d65a' }, attrs, { class: "button-native", part: "native", role: "tab", "aria-selected": selected ? 'true' : null, "aria-disabled": disabled ? 'true' : null, tabindex: disabled ? '-1' : undefined }, inheritedAttributes), h("span", { key: '1566ca0af66b6e51068aca221a89133d2af061ed', class: "button-inner" }, h("slot", { key: '757878091cfe3768107eb0a53b8d1c895ce43399' })), theme === 'md' && h("ion-ripple-effect", { key: '28dde3e7127bdc9d5e1477b47458a5a4ab71328e', type: "unbounded" }))));
|
|
101
110
|
}
|
|
102
111
|
static get is() { return "ion-tab-button"; }
|
|
103
112
|
static get encapsulation() { return "shadow"; }
|
package/dist/docs.json
CHANGED
|
@@ -6,7 +6,7 @@ import { c as caretRightSvg } from './caret-right-BYSs-jZz.js';
|
|
|
6
6
|
import { b as inheritAttributes, r as raf } from './helpers-Bsml3FcE.js';
|
|
7
7
|
import { h as hostContext, c as createColorClasses, o as openURL } from './theme-DiVJyqlX.js';
|
|
8
8
|
import { o as chevronForward } from './index-COG0_eom.js';
|
|
9
|
-
import { c as getIonTheme } from './ionic-global-2R0iPB51.js';
|
|
9
|
+
import { c as getIonTheme, b as getIonMode } from './ionic-global-2R0iPB51.js';
|
|
10
10
|
import './focus-visible-vXpMhGrs.js';
|
|
11
11
|
|
|
12
12
|
const itemIonicCss = ":host{--border-radius:0px;--border-width:0px;--border-style:solid;--padding-top:0px;--padding-bottom:0px;--padding-end:0px;--padding-start:0px;--inner-border-width:0px;--inner-padding-top:0px;--inner-padding-bottom:0px;--inner-padding-start:0px;--inner-padding-end:0px;--inner-box-shadow:none;--detail-icon-color:initial;--detail-icon-font-size:1.25em;--detail-icon-opacity:0.25;--color-activated:var(--color);--color-focused:var(--color);--color-hover:var(--color);--ripple-color:currentColor;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;outline:none;color:var(--color);text-align:initial;text-decoration:none;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box}:host(.ion-activated) .item-native{color:var(--color-activated)}:host(.ion-activated) .item-native::after{background:var(--background-activated);opacity:var(--background-activated-opacity)}:host(.ion-focused) .item-native{color:var(--color-focused)}:host(.ion-focused) .item-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}@media (any-hover: hover){:host(.ion-activatable:not(.ion-focused):hover) .item-native{color:var(--color-hover)}:host(.ion-activatable:not(.ion-focused):hover) .item-native::after{background:var(--background-hover);opacity:var(--background-hover-opacity)}}:host(.item-control-needs-pointer-cursor){cursor:pointer}:host(.item-interactive-disabled:not(.item-multiple-inputs)){cursor:default;pointer-events:none}:host(.item-disabled){cursor:default;opacity:0.3;pointer-events:none}.item-native{border-radius:var(--border-radius);margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);color:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-align:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;white-space:inherit;padding-right:var(--padding-end);padding-left:calc(var(--padding-start) + var(--ion-safe-area-left, 0px));display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:inherit;align-items:inherit;-ms-flex-pack:inherit;justify-content:inherit;width:100%;min-height:var(--min-height);-webkit-transition:var(--transition);transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);outline:none;background:var(--background);line-height:inherit;overflow:inherit;z-index:1;-webkit-box-sizing:border-box;box-sizing:border-box}:host-context([dir=rtl]) .item-native{padding-right:calc(var(--padding-start) + var(--ion-safe-area-right, 0px));padding-left:var(--padding-end)}[dir=rtl] .item-native{padding-right:calc(var(--padding-start) + var(--ion-safe-area-right, 0px));padding-left:var(--padding-end)}@supports selector(:dir(rtl)){.item-native:dir(rtl){padding-right:calc(var(--padding-start) + var(--ion-safe-area-right, 0px));padding-left:var(--padding-end)}}.item-native::-moz-focus-inner{border:0}.item-native::after{right:0;left:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0;-webkit-transition:var(--transition);transition:var(--transition);z-index:-1}button,a{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-drag:none}.item-inner{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-top:var(--inner-padding-top);padding-bottom:var(--inner-padding-bottom);padding-right:calc(var(--ion-safe-area-right, 0px) + var(--inner-padding-end));padding-left:var(--inner-padding-start);display:-ms-flexbox;display:flex;position:relative;-ms-flex:1;flex:1;-ms-flex-direction:inherit;flex-direction:inherit;-ms-flex-align:inherit;align-items:inherit;-ms-flex-item-align:stretch;align-self:stretch;min-height:inherit;border-width:var(--inner-border-width);border-style:var(--border-style);border-color:var(--border-color);-webkit-box-shadow:var(--inner-box-shadow);box-shadow:var(--inner-box-shadow);overflow:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}:host-context([dir=rtl]) .item-inner{padding-right:var(--inner-padding-start);padding-left:calc(var(--ion-safe-area-left, 0px) + var(--inner-padding-end))}[dir=rtl] .item-inner{padding-right:var(--inner-padding-start);padding-left:calc(var(--ion-safe-area-left, 0px) + var(--inner-padding-end))}@supports selector(:dir(rtl)){.item-inner:dir(rtl){padding-right:var(--inner-padding-start);padding-left:calc(var(--ion-safe-area-left, 0px) + var(--inner-padding-end))}}.item-detail-icon{-webkit-margin-start:calc(var(--inner-padding-end) / 2);margin-inline-start:calc(var(--inner-padding-end) / 2);-webkit-margin-end:-6px;margin-inline-end:-6px;color:var(--detail-icon-color);font-size:var(--detail-icon-font-size);opacity:var(--detail-icon-opacity)}::slotted(ion-icon){font-size:1.6em}::slotted(ion-button){--margin-top:0;--margin-bottom:0;--margin-start:0;--margin-end:0;z-index:1}::slotted(ion-label:not([slot=end])){-ms-flex:1;flex:1;width:-webkit-min-content;width:-moz-min-content;width:min-content;max-width:100%}:host(.item-input){-ms-flex-align:center;align-items:center}.input-wrapper{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-direction:inherit;flex-direction:inherit;-ms-flex-align:inherit;align-items:inherit;-ms-flex-item-align:stretch;align-self:stretch;text-overflow:ellipsis;overflow:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}:host(.item-label-stacked),:host(.item-label-floating){-ms-flex-align:start;align-items:start}:host(.item-label-stacked) .input-wrapper,:host(.item-label-floating) .input-wrapper{-ms-flex:1;flex:1;-ms-flex-direction:column;flex-direction:column}:host(.item-multiple-inputs) ::slotted(ion-checkbox),:host(.item-multiple-inputs) ::slotted(ion-datetime),:host(.item-multiple-inputs) ::slotted(ion-radio){position:relative}:host(.item-textarea){-ms-flex-align:stretch;align-items:stretch}::slotted(ion-reorder[slot]){margin-top:0;margin-bottom:0}ion-ripple-effect{color:var(--ripple-color)}:host{--background:var(--token-bg-surface-default, var(--token-primitives-base-white, #ffffff));--background-activated:var(--token-bg-select-default, var(--token-semantics-primary-100, var(--token-primitives-blue-100, #e9ecfc)));--border-color:var(--token-primitives-neutral-300, #e0e0e0);--border-style:var(--token-border-style-solid, solid);--border-width:0 0 var(--token-border-size-025, var(--token-scale-025, 1px)) 0;--color:var(--token-text-default, var(--token-primitives-neutral-1200, #242424));--detail-icon-font-size:var(--token-scale-600, 24px);--detail-icon-opacity:1;--min-height:var(--token-scale-1800, 72px);--padding-top:var(--token-space-200, var(--token-scale-200, 8px));--padding-end:var(--token-space-400, var(--token-scale-400, 16px));--padding-bottom:var(--token-space-200, var(--token-scale-200, 8px));--padding-start:var(--token-space-400, var(--token-scale-400, 16px));font-size:var(--token-font-size-400, 16px);font-weight:var(--token-font-weight-medium, 500);letter-spacing:var(--token-font-letter-spacing-0, 0%);line-height:var(--token-font-line-height-600, var(--token-scale-600, 24px));text-decoration:none;text-transform:none}.item-inner{min-height:initial}.item-detail-icon{-webkit-margin-end:0;margin-inline-end:0}slot[name=start]::slotted(*){-webkit-margin-end:var(--token-space-400, var(--token-scale-400, 16px));margin-inline-end:var(--token-space-400, var(--token-scale-400, 16px))}slot[name=end]::slotted(*){-webkit-margin-start:var(--token-space-400, var(--token-scale-400, 16px));margin-inline-start:var(--token-space-400, var(--token-scale-400, 16px))}::slotted(ion-icon:not(.item-detail-icon)){color:var(--token-primitives-neutral-1000, #3b3b3b);font-size:var(--token-scale-1000, 40px)}:host(.item-disabled) .item-native::after{right:0;left:0;top:0;bottom:0;position:absolute;background-color:var(--token-state-disabled, rgba(255, 255, 255, 0.6));content:\"\";pointer-events:none}:host(.ion-activated) .item-native{background:var(--background-activated)}:host(.ion-focused) .item-native::after{border-radius:inherit;right:0;left:0;top:0;bottom:0;position:absolute;border-width:var(--token-border-size-050, var(--token-scale-050, 2px));border-style:var(--token-border-style-solid, solid);border-color:var(--token-border-focus-default, var(--token-primitives-blue-400, #b5c0f7));content:\"\"}:host(.item-lines-full){--border-width:var(--token-border-size-0, var(--token-scale-0, 0px)) var(--token-border-size-0, var(--token-scale-0, 0px)) var(--token-border-size-025, var(--token-scale-025, 1px)) var(--token-border-size-0, var(--token-scale-0, 0px))}:host(.item-lines-inset){--inner-border-width:var(--token-border-size-0, var(--token-scale-0, 0px)) var(--token-border-size-0, var(--token-scale-0, 0px)) var(--token-border-size-025, var(--token-scale-025, 1px)) var(--token-border-size-0, var(--token-scale-0, 0px))}:host(.item-lines-inset),:host(.item-lines-none){--border-width:var(--token-border-size-0, var(--token-scale-0, 0px))}:host(.item-lines-full),:host(.item-lines-none){--inner-border-width:var(--token-border-size-0, var(--token-scale-0, 0px))}:host(.in-select-modal){--background-focused:var(--token-bg-neutral-subtlest-press, var(--token-primitives-neutral-200, #eae9e9));--background-focused-opacity:0}:host(.in-select-modal.ion-focused) .item-native{--border-radius:var(--token-border-radius-400, var(--token-scale-400, 16px))}";
|
|
@@ -143,7 +143,13 @@ const Item = class {
|
|
|
143
143
|
return this.href !== undefined || this.button;
|
|
144
144
|
}
|
|
145
145
|
canActivate() {
|
|
146
|
-
|
|
146
|
+
const theme = getIonTheme(this);
|
|
147
|
+
const mode = getIonMode(this);
|
|
148
|
+
const shouldActivate = this.isClickable() || this.hasCover();
|
|
149
|
+
if (theme !== 'ionic') {
|
|
150
|
+
return shouldActivate;
|
|
151
|
+
}
|
|
152
|
+
return mode === 'md' && shouldActivate;
|
|
147
153
|
}
|
|
148
154
|
isFocusable() {
|
|
149
155
|
const focusableChild = this.el.querySelector('.ion-focusable');
|
|
@@ -254,7 +260,7 @@ const Item = class {
|
|
|
254
260
|
* However, other form controls such as checkboxes and radios do.
|
|
255
261
|
*/
|
|
256
262
|
const firstInteractiveNeedsPointerCursor = firstInteractive !== undefined && !['ION-INPUT', 'ION-TEXTAREA'].includes(firstInteractive.tagName);
|
|
257
|
-
return (h(Host, { key: '
|
|
263
|
+
return (h(Host, { key: '9bb45fbe33fab3adb57da6c5fe3ab4b4f85b2fdb', "aria-disabled": ariaDisabled, class: Object.assign(Object.assign(Object.assign({}, childStyles), labelColorStyles), createColorClasses(this.color, {
|
|
258
264
|
item: true,
|
|
259
265
|
[theme]: true,
|
|
260
266
|
'item-lines-default': lines === undefined,
|
|
@@ -267,7 +273,7 @@ const Item = class {
|
|
|
267
273
|
'ion-activatable': canActivate,
|
|
268
274
|
'ion-focusable': this.focusable,
|
|
269
275
|
'item-rtl': document.dir === 'rtl',
|
|
270
|
-
})), role: inList ? 'listitem' : null }, h(TagType, Object.assign({ key: '
|
|
276
|
+
})), role: inList ? 'listitem' : null }, h(TagType, Object.assign({ key: '0118a0b7bc4b78b210ae03981c03a7ede170333b' }, attrs, inheritedAriaAttributes, { class: "item-native", part: "native", disabled: disabled }, clickFn), h("slot", { key: '0b4891b9334172929cd5a3f361b33f0f9e830c9e', name: "start", onSlotchange: this.updateInteractivityOnSlotChange }), h("div", { key: '16128a1269cf59dedce8a5c66a4f9062e2ce23a2', class: "item-inner" }, h("div", { key: '53ae7202232d7145b4d81fdc8c1fff0a13e92e8b', class: "input-wrapper" }, h("slot", { key: '6726b19a45bea9c76b3429b97091c3467f34ee7b', onSlotchange: this.updateInteractivityOnSlotChange })), h("slot", { key: '07825d01d5e1ed427bc58c4367f05b14dc670f22', name: "end", onSlotchange: this.updateInteractivityOnSlotChange }), showDetail && (h("ion-icon", { key: '7d044035b257dbcecbc0c150e512a6570a48c871', icon: itemDetailIcon, lazy: false, class: "item-detail-icon", part: "detail-icon", "aria-hidden": "true", "flip-rtl": shouldFlipIcon }))), canActivate && theme === 'md' && h("ion-ripple-effect", { key: 'f7578981817b9244b9445c562e0f3d1148e2b455' }))));
|
|
271
277
|
}
|
|
272
278
|
get el() { return getElement(this); }
|
|
273
279
|
static get watchers() { return {
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { r as registerInstance, c as createEvent, h, d as Host, g as getElement, e as config } from './index-C8IsBmNU.js';
|
|
5
5
|
import { c as createKeyboardController } from './keyboard-controller-Bc4alOiF.js';
|
|
6
6
|
import { c as createColorClasses } from './theme-DiVJyqlX.js';
|
|
7
|
-
import { c as getIonTheme } from './ionic-global-2R0iPB51.js';
|
|
7
|
+
import { c as getIonTheme, b as getIonMode } from './ionic-global-2R0iPB51.js';
|
|
8
8
|
import { b as inheritAttributes } from './helpers-Bsml3FcE.js';
|
|
9
9
|
import './keyboard-WCK1pWfR.js';
|
|
10
10
|
import './capacitor-CiBLEyrT.js';
|
|
@@ -191,17 +191,26 @@ const TabButton = class {
|
|
|
191
191
|
get hasIcon() {
|
|
192
192
|
return !!this.el.querySelector('ion-icon');
|
|
193
193
|
}
|
|
194
|
+
canActivate() {
|
|
195
|
+
const theme = getIonTheme(this);
|
|
196
|
+
const mode = getIonMode(this);
|
|
197
|
+
if (theme !== 'ionic') {
|
|
198
|
+
return true;
|
|
199
|
+
}
|
|
200
|
+
return mode === 'md';
|
|
201
|
+
}
|
|
194
202
|
render() {
|
|
195
203
|
const { disabled, hasIcon, hasLabel, href, rel, target, layout, selected, tab, inheritedAttributes } = this;
|
|
196
204
|
const theme = getIonTheme(this);
|
|
197
205
|
const shape = this.getShape();
|
|
206
|
+
const canActivate = this.canActivate();
|
|
198
207
|
const attrs = {
|
|
199
208
|
download: this.download,
|
|
200
209
|
href,
|
|
201
210
|
rel,
|
|
202
211
|
target,
|
|
203
212
|
};
|
|
204
|
-
return (h(Host, { key: '
|
|
213
|
+
return (h(Host, { key: '5a32785eaf0570cdc3444d52ce8bba8174c3e0b9', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
|
|
205
214
|
[theme]: true,
|
|
206
215
|
'tab-selected': selected,
|
|
207
216
|
'tab-disabled': disabled,
|
|
@@ -210,11 +219,11 @@ const TabButton = class {
|
|
|
210
219
|
'tab-has-label-only': hasLabel && !hasIcon,
|
|
211
220
|
'tab-has-icon-only': hasIcon && !hasLabel,
|
|
212
221
|
[`tab-layout-${layout}`]: true,
|
|
213
|
-
'ion-activatable':
|
|
222
|
+
'ion-activatable': canActivate,
|
|
214
223
|
'ion-selectable': true,
|
|
215
224
|
[`tab-button-shape-${shape}`]: shape !== undefined,
|
|
216
225
|
'ion-focusable': true,
|
|
217
|
-
} }, h("a", Object.assign({ key: '
|
|
226
|
+
} }, h("a", Object.assign({ key: '1441f409b4a60823a57f27b90f6840b557b7d65a' }, attrs, { class: "button-native", part: "native", role: "tab", "aria-selected": selected ? 'true' : null, "aria-disabled": disabled ? 'true' : null, tabindex: disabled ? '-1' : undefined }, inheritedAttributes), h("span", { key: '1566ca0af66b6e51068aca221a89133d2af061ed', class: "button-inner" }, h("slot", { key: '757878091cfe3768107eb0a53b8d1c895ce43399' })), theme === 'md' && h("ion-ripple-effect", { key: '28dde3e7127bdc9d5e1477b47458a5a4ab71328e', type: "unbounded" }))));
|
|
218
227
|
}
|
|
219
228
|
get el() { return getElement(this); }
|
|
220
229
|
};
|