@lmvz-ds/components 0.12.5 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{esm/Effect-BhQLGXPs.js → cjs/assets-CB5ikzmP.js} +857 -4832
- package/dist/cjs/{icons-7wUEcWEo.js → icons-DM_TTn48.js} +363 -113
- package/dist/cjs/{index-CVw4GUo6.js → index-Bp6Dd2i1.js} +4 -2
- package/dist/cjs/{index-9ZJx0550.js → index-D3BMpL5w.js} +0 -3
- package/dist/cjs/index.cjs.js +4 -6
- package/dist/cjs/lmvz-action.cjs.entry.js +1 -1
- package/dist/cjs/lmvz-button.cjs.entry.js +7 -10
- package/dist/cjs/lmvz-card.cjs.entry.js +3 -4
- package/dist/cjs/lmvz-chip.cjs.entry.js +1 -1
- package/dist/cjs/lmvz-components.cjs.js +1 -1
- package/dist/cjs/lmvz-header.cjs.entry.js +13 -12
- package/dist/cjs/lmvz-icon.cjs.entry.js +8 -10
- package/dist/cjs/lmvz-input.cjs.entry.js +8 -11
- package/dist/cjs/lmvz-menuitem.cjs.entry.js +5 -7
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/reactive-controller-host-BMDEj1kX.js +168 -0
- package/dist/collection/components/lmvz-button/lmvz-button.js +3 -3
- package/dist/collection/components/lmvz-header/lmvz-header.js +11 -8
- package/dist/collection/components/lmvz-icon/lmvz-icon.js +2 -2
- package/dist/collection/components/lmvz-icon/test/icons.unit.js +21 -12
- package/dist/collection/components/lmvz-input/lmvz-input.css +5 -2
- package/dist/collection/components/lmvz-input/lmvz-input.js +3 -3
- package/dist/collection/components/lmvz-menuitem/lmvz-menuitem.js +3 -3
- package/dist/collection/integration/header-integration.js +3 -1
- package/dist/collection/utils/{validation → aria}/aria-validation-controller.js +15 -34
- package/dist/collection/utils/{list-keyboard-controller.js → aria/list-keyboard-controller.js} +1 -1
- package/dist/collection/utils/{http.test.js → http.unit.js} +7 -6
- package/dist/components/index.js +1 -1
- package/dist/components/lmvz-action.js +1 -1
- package/dist/components/lmvz-button.js +1 -1
- package/dist/components/lmvz-card.js +1 -1
- package/dist/components/lmvz-chip.js +1 -1
- package/dist/components/lmvz-header.js +1 -1
- package/dist/components/lmvz-icon.js +1 -1
- package/dist/components/lmvz-input.js +1 -1
- package/dist/components/lmvz-menuitem.js +1 -1
- package/dist/components/p-BBDH9X49.js +1 -0
- package/dist/components/{p-DMLRPGid.js → p-BfTCfPZ1.js} +1 -1
- package/dist/components/p-Bs6_m7Uw.js +1 -0
- package/dist/components/p-CMteT-Yo.js +1 -0
- package/dist/components/p-vi4YzJmv.js +1 -0
- package/dist/{cjs/Effect-CNhHt4Xb.js → esm/assets-ozES4zSA.js} +785 -5032
- package/dist/esm/{icons-Bx1wWPM2.js → icons-kpJZ1u9g.js} +268 -18
- package/dist/esm/{index-Bt32KzDW.js → index-BfTCfPZ1.js} +3 -1
- package/dist/esm/{index-smGPjoDX.js → index-T5ljELGS.js} +1 -3
- package/dist/esm/index.js +3 -5
- package/dist/esm/lmvz-action.entry.js +1 -1
- package/dist/esm/lmvz-button.entry.js +5 -8
- package/dist/esm/lmvz-card.entry.js +2 -3
- package/dist/esm/lmvz-chip.entry.js +1 -1
- package/dist/esm/lmvz-components.js +2 -2
- package/dist/esm/lmvz-header.entry.js +11 -10
- package/dist/esm/lmvz-icon.entry.js +5 -7
- package/dist/esm/lmvz-input.entry.js +6 -9
- package/dist/esm/lmvz-menuitem.entry.js +3 -5
- package/dist/esm/loader.js +2 -2
- package/dist/esm/reactive-controller-host-CZ3dGAjR.js +165 -0
- package/dist/lmvz-components/index.esm.js +1 -1
- package/dist/lmvz-components/lmvz-components.esm.js +1 -1
- package/dist/lmvz-components/p-16878d4c.entry.js +1 -0
- package/dist/lmvz-components/p-4ad8c332.entry.js +1 -0
- package/dist/lmvz-components/p-5eee0752.entry.js +1 -0
- package/dist/lmvz-components/p-8ea1a349.entry.js +1 -0
- package/dist/lmvz-components/{p-d4b68381.entry.js → p-980688a0.entry.js} +1 -1
- package/dist/lmvz-components/{p-DMLRPGid.js → p-BfTCfPZ1.js} +1 -1
- package/dist/lmvz-components/p-CZ3dGAjR.js +1 -0
- package/dist/lmvz-components/p-D9lc4ayG.js +1 -0
- package/dist/lmvz-components/p-T5ljELGS.js +2 -0
- package/dist/lmvz-components/p-a34542fa.entry.js +1 -0
- package/dist/lmvz-components/p-d2bf6a3f.entry.js +1 -0
- package/dist/lmvz-components/{p-9faac8f3.entry.js → p-feda2ec5.entry.js} +1 -1
- package/dist/lmvz-components/p-iviTjlUy.js +1 -0
- package/dist/manifest.json +1 -1
- package/dist/types/components/lmvz-button/lmvz-button.d.ts +2 -2
- package/dist/types/components/lmvz-header/lmvz-header.d.ts +5 -4
- package/dist/types/components/lmvz-icon/lmvz-icon.d.ts +1 -1
- package/dist/types/components/lmvz-input/lmvz-input.d.ts +1 -1
- package/dist/types/components/lmvz-menuitem/lmvz-menuitem.d.ts +2 -2
- package/dist/types/utils/{validation → aria}/aria-validation-controller.d.ts +1 -5
- package/dist/types/utils/{element-activation-controller.d.ts → aria/element-activation-controller.d.ts} +2 -2
- package/dist/types/utils/{list-keyboard-controller.d.ts → aria/list-keyboard-controller.d.ts} +1 -1
- package/hydrate/index.js +9610 -50169
- package/hydrate/index.mjs +9610 -50169
- package/package.json +17 -18
- package/readme.md +18 -0
- package/dist/cjs/MutableQueue-Bk9tBfaK.js +0 -462
- package/dist/cjs/_commonjsHelpers-CFO10eej.js +0 -7
- package/dist/cjs/aria-validation-controller-B3hMkau3.js +0 -2930
- package/dist/cjs/assets-BguFB3wV.js +0 -71
- package/dist/cjs/axe-BNqwbBGU.js +0 -32834
- package/dist/components/p-3I3wZmp8.js +0 -1
- package/dist/components/p-B85MJLTf.js +0 -1
- package/dist/components/p-BaPwpeMs.js +0 -1
- package/dist/components/p-CAi33KTt.js +0 -1
- package/dist/components/p-CdofjRtQ.js +0 -1
- package/dist/components/p-D1HbKFuh.js +0 -12
- package/dist/components/p-UwhTS2ue.js +0 -1
- package/dist/esm/MutableQueue-CNlEFklh.js +0 -431
- package/dist/esm/_commonjsHelpers-B85MJLTf.js +0 -5
- package/dist/esm/aria-validation-controller-iA4YWFG-.js +0 -2927
- package/dist/esm/assets-Iu8neKuE.js +0 -67
- package/dist/esm/axe-cRQ9Ux1I.js +0 -32832
- package/dist/lmvz-components/p-1a10fcbd.entry.js +0 -1
- package/dist/lmvz-components/p-274c36df.entry.js +0 -1
- package/dist/lmvz-components/p-2ba68483.entry.js +0 -1
- package/dist/lmvz-components/p-4XIjw3k8.js +0 -1
- package/dist/lmvz-components/p-51Fb_qqD.js +0 -1
- package/dist/lmvz-components/p-77e26e71.entry.js +0 -1
- package/dist/lmvz-components/p-B85MJLTf.js +0 -1
- package/dist/lmvz-components/p-BhQLGXPs.js +0 -1
- package/dist/lmvz-components/p-CXWyvf0D.js +0 -1
- package/dist/lmvz-components/p-D1HbKFuh.js +0 -12
- package/dist/lmvz-components/p-D7I-Bc5i.js +0 -1
- package/dist/lmvz-components/p-a5fe62b6.entry.js +0 -1
- package/dist/lmvz-components/p-c8b78793.entry.js +0 -1
- package/dist/lmvz-components/p-smGPjoDX.js +0 -2
- /package/dist/collection/utils/{element-activation-controller.js → aria/element-activation-controller.js} +0 -0
- /package/dist/types/utils/{http.test.d.ts → http.unit.d.ts} +0 -0
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
function getDefaultExportFromCjs (x) {
|
|
4
|
+
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
5
|
+
}
|
|
4
6
|
|
|
5
7
|
var classnames = {exports: {}};
|
|
6
8
|
|
|
@@ -87,6 +89,6 @@ function requireClassnames () {
|
|
|
87
89
|
}
|
|
88
90
|
|
|
89
91
|
var classnamesExports = requireClassnames();
|
|
90
|
-
var classNames = /*@__PURE__*/
|
|
92
|
+
var classNames = /*@__PURE__*/getDefaultExportFromCjs(classnamesExports);
|
|
91
93
|
|
|
92
94
|
exports.classNames = classNames;
|
|
@@ -7,8 +7,6 @@ const BUILD = /* lmvz-components */ { hotModuleReplacement: false, hydratedSelec
|
|
|
7
7
|
Stencil Client Platform v4.43.2 | MIT Licensed | https://stenciljs.com
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
var Build = {
|
|
11
|
-
isDev: false};
|
|
12
10
|
var PrimitiveType = /* @__PURE__ */ ((PrimitiveType2) => {
|
|
13
11
|
PrimitiveType2["Undefined"] = "undefined";
|
|
14
12
|
PrimitiveType2["Null"] = "null";
|
|
@@ -2740,7 +2738,6 @@ function transformTag(tag) {
|
|
|
2740
2738
|
return tag;
|
|
2741
2739
|
}
|
|
2742
2740
|
|
|
2743
|
-
exports.Build = Build;
|
|
2744
2741
|
exports.Host = Host;
|
|
2745
2742
|
exports.bootstrapLazy = bootstrapLazy;
|
|
2746
2743
|
exports.createEvent = createEvent;
|
package/dist/cjs/index.cjs.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var icons = require('./icons-
|
|
4
|
-
var
|
|
5
|
-
require('./
|
|
6
|
-
require('./assets-BguFB3wV.js');
|
|
7
|
-
require('./index-9ZJx0550.js');
|
|
3
|
+
var icons = require('./icons-DM_TTn48.js');
|
|
4
|
+
var assets = require('./assets-CB5ikzmP.js');
|
|
5
|
+
require('./index-D3BMpL5w.js');
|
|
8
6
|
|
|
9
7
|
const variants = ['primary', 'secondary', 'tertiary'];
|
|
10
8
|
const scaleValues = ['small', 'default', 'large'];
|
|
@@ -81,7 +79,7 @@ const iconNames = [
|
|
|
81
79
|
];
|
|
82
80
|
|
|
83
81
|
function run(effect) {
|
|
84
|
-
return
|
|
82
|
+
return assets.runPromise(effect).catch(error => {
|
|
85
83
|
console.error('Unhandled error in Effect:', error);
|
|
86
84
|
});
|
|
87
85
|
}
|
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
4
|
-
var index$1 = require('./index-
|
|
5
|
-
var
|
|
3
|
+
var index = require('./index-D3BMpL5w.js');
|
|
4
|
+
var index$1 = require('./index-Bp6Dd2i1.js');
|
|
5
|
+
var reactiveControllerHost = require('./reactive-controller-host-BMDEj1kX.js');
|
|
6
6
|
var elementActivationController = require('./element-activation-controller-DC_6T0Rt.js');
|
|
7
|
-
var
|
|
8
|
-
require('./_commonjsHelpers-CFO10eej.js');
|
|
9
|
-
require('./Effect-CNhHt4Xb.js');
|
|
10
|
-
require('./MutableQueue-Bk9tBfaK.js');
|
|
7
|
+
var component = require('./component-CRc6eHcV.js');
|
|
11
8
|
|
|
12
9
|
const lmvzButtonCss = () => ` @layer lmvz-ds.reset, lmvz-ds.theme, lmvz-ds.components, lmvz-ds.overrides; @layer lmvz-ds.theme { @font-face { font-family: Router; src: local('Router-Book'), url('/assets/fonts/Router-Book.woff') format('woff'), local('Router'); font-weight: 400 normal; } @font-face { font-family: Router; src: local('Router-Medium'), url('/assets/fonts/Router-Medium.woff') format('woff'), local('Router'); font-weight: 500; } @font-face { font-family: Router; src: local('Router-Bold'), url('/assets/fonts/Router-Bold.woff') format('woff'), local('Router'); font-weight: 700 bold; } } @layer lmvz-ds.reset { h1, h2, h3, h4, h5, h6 { margin: 0; } } :host { button { --lmvz-button-color: var(--lmvz-component-color, var(--lmvz-semantic-color-int-on-primary, #ffffff)); --lmvz-button-padding-inline: var(--lmvz-button-padding, var(--lmvz-component-input-md-padding-x, clamp(0.75rem, 0.69rem + 0.26vw, 1rem))); --lmvz-button-padding-block: var(--lmvz-button-padding, var(--lmvz-component-input-md-padding-y, clamp(0.75rem, 0.69rem + 0.26vw, 1rem))); --lmvz-button-gap: var(--lmvz-component-input-md-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); --lmvz-button-font: var(--lmvz-typography-body-lg, 400 clamp(1rem, 0.97rem + 0.13vw, 1.13rem) / 1.4 Router); --lmvz-button-radius: var(--lmvz-component-input-radius-default, 999px); --lmvz-button-border-width: 0; --lmvz-button-border-color: transparent; --lmvz-button-background: var(--lmvz-semantic-color-int-primary, #000000); display: inline-flex; align-items: center; justify-content: center; gap: var(--lmvz-button-gap); padding-block: var(--lmvz-button-padding-block); padding-inline: var(--lmvz-button-padding-inline); border-radius: var(--lmvz-button-radius); border: var(--lmvz-button-border-width) solid var(--lmvz-button-border-color); background-color: var(--lmvz-button-background); color: var(--lmvz-button-color); cursor: pointer; font: var(--lmvz-button-font); text-align: center; text-decoration: none; white-space: nowrap; transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease; } button > * { font: inherit; color: inherit; } button:focus-visible { outline: var(--lmvz-semantic-border-width-default, 1px) solid var(--lmvz-semantic-color-status-selected, #f1f9fe); outline-offset: var(--lmvz-component-input-sm-padding-x, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); } button:is([disabled], .disabled) { cursor: not-allowed; pointer-events: none; opacity: var(--lmvz-component-input-disabled-opacity, 40%); } button:not([disabled]):hover { --lmvz-button-background: var(--lmvz-semantic-color-int-primary-hover, #2e2e2e); } button:not([disabled]):active { --lmvz-button-background: var(--lmvz-semantic-color-int-primary-active, #545454); } button.secondary { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary, #f0f0f0); --lmvz-button-color: var(--lmvz-semantic-color-int-on-secondary, #000000); --lmvz-button-border-width: var(--lmvz-semantic-border-width-default, 1px); --lmvz-button-border-color: var(--lmvz-semantic-color-border-default, #e0e0e0); } button.secondary:not([disabled], .disabled):hover { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary-hover, #e0e0e0); --lmvz-button-border-color: var(--lmvz-semantic-color-border-hover, #c7c7c7); } button.secondary:not([disabled], .disabled):active { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary-active, #d4d4d4); --lmvz-button-border-color: var(--lmvz-semantic-color-border-active, #d4d4d4); } button.tertiary { --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary, #ffffff); --lmvz-button-color: var(--lmvz-semantic-color-int-on-tertiary, #545454); } button.tertiary:not([disabled], .disabled):hover { --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary-hover, #f0f0f0); } button.tertiary:not([disabled], .disabled):active { --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary-active, #e0e0e0); } button.small { --lmvz-button-padding-inline: var(--lmvz-component-input-sm-padding-x, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); --lmvz-button-padding-block: var(--lmvz-component-input-sm-padding-y, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); --lmvz-button-gap: var(--lmvz-component-input-sm-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); --lmvz-button-font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.4 Router); } button.large { --lmvz-button-padding-inline: var(--lmvz-component-input-lg-padding-x, clamp(0.88rem, 0.78rem + 0.39vw, 1.25rem)); --lmvz-button-padding-block: var(--lmvz-component-input-lg-padding-y, clamp(0.88rem, 0.78rem + 0.39vw, 1.25rem)); --lmvz-button-gap: var(--lmvz-component-input-lg-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); --lmvz-button-font: var(--lmvz-typography-body-lg, 400 clamp(1rem, 0.97rem + 0.13vw, 1.13rem) / 1.4 Router); } display: contents; } ::slotted(*) { --lmvz-component-color: var(--lmvz-button-color); } `;
|
|
13
10
|
|
|
14
|
-
const LmvzButton = class extends
|
|
11
|
+
const LmvzButton = class extends reactiveControllerHost.ReactiveControllerHost {
|
|
15
12
|
get el() { return index.getElement(this); }
|
|
16
13
|
inheritedAttributes = {};
|
|
17
14
|
formEl = null;
|
|
@@ -29,7 +26,7 @@ const LmvzButton = class extends ariaValidationController.ReactiveControllerHost
|
|
|
29
26
|
super();
|
|
30
27
|
index.registerInstance(this, hostRef);
|
|
31
28
|
this.lmvzActivation = index.createEvent(this, "lmvzActivation");
|
|
32
|
-
this.addController(new
|
|
29
|
+
this.addController(new reactiveControllerHost.AriaValidationController(this));
|
|
33
30
|
this.addController(new elementActivationController.ElementActivationController(this, {
|
|
34
31
|
localHandler: this.handleClick.bind(this),
|
|
35
32
|
keys: ['Enter'],
|
|
@@ -64,7 +61,7 @@ const LmvzButton = class extends ariaValidationController.ReactiveControllerHost
|
|
|
64
61
|
};
|
|
65
62
|
render() {
|
|
66
63
|
this.renderHiddenButton();
|
|
67
|
-
return (index.h(index.Host, { key: '
|
|
64
|
+
return (index.h(index.Host, { key: 'cd4a63b866c801ad7f96f59d15e561a54bfe9ec2', "aria-disabled": this.disabled ? 'true' : null }, index.h("button", { key: 'a1e3ecb88fb84d724df4939519bb22d4b6725c1d', disabled: this.disabled, class: index$1.classNames(this.variant, { [this.scale ?? '']: !!this.scale, disabled: this.disabled }), ...this.inheritedAttributes }, index.h("slot", { key: 'f1fd32c993b1ef9f6d62d6f3affa169c9368df78' }))));
|
|
68
65
|
}
|
|
69
66
|
static get delegatesFocus() { return true; }
|
|
70
67
|
};
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
4
|
-
var
|
|
5
|
-
var assets = require('./assets-BguFB3wV.js');
|
|
3
|
+
var index = require('./index-D3BMpL5w.js');
|
|
4
|
+
var assets = require('./assets-CB5ikzmP.js');
|
|
6
5
|
|
|
7
6
|
const lmvzCardCss = () => `@layer lmvz-ds.reset, lmvz-ds.theme, lmvz-ds.components, lmvz-ds.overrides; @layer lmvz-ds.theme { @font-face { font-family: Router; src: local('Router-Book'), url('/assets/fonts/Router-Book.woff') format('woff'), local('Router'); font-weight: 400 normal; } @font-face { font-family: Router; src: local('Router-Medium'), url('/assets/fonts/Router-Medium.woff') format('woff'), local('Router'); font-weight: 500; } @font-face { font-family: Router; src: local('Router-Bold'), url('/assets/fonts/Router-Bold.woff') format('woff'), local('Router'); font-weight: 700 bold; } } @layer lmvz-ds.reset { h1, h2, h3, h4, h5, h6 { margin: 0; } } .sc-lmvz-card-h { button { --lmvz-button-color: var(--lmvz-component-color, var(--lmvz-semantic-color-int-on-primary, #ffffff)); --lmvz-button-padding-inline: var(--lmvz-button-padding, var(--lmvz-component-input-md-padding-x, clamp(0.75rem, 0.69rem + 0.26vw, 1rem))); --lmvz-button-padding-block: var(--lmvz-button-padding, var(--lmvz-component-input-md-padding-y, clamp(0.75rem, 0.69rem + 0.26vw, 1rem))); --lmvz-button-gap: var(--lmvz-component-input-md-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); --lmvz-button-font: var(--lmvz-typography-body-lg, 400 clamp(1rem, 0.97rem + 0.13vw, 1.13rem) / 1.4 Router); --lmvz-button-radius: var(--lmvz-component-input-radius-default, 999px); --lmvz-button-border-width: 0; --lmvz-button-border-color: transparent; --lmvz-button-background: var(--lmvz-semantic-color-int-primary, #000000); display: inline-flex; align-items: center; justify-content: center; gap: var(--lmvz-button-gap); padding-block: var(--lmvz-button-padding-block); padding-inline: var(--lmvz-button-padding-inline); border-radius: var(--lmvz-button-radius); border: var(--lmvz-button-border-width) solid var(--lmvz-button-border-color); background-color: var(--lmvz-button-background); color: var(--lmvz-button-color); cursor: pointer; font: var(--lmvz-button-font); text-align: center; text-decoration: none; white-space: nowrap; transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease; } button > * { font: inherit; color: inherit; } button:focus-visible { outline: var(--lmvz-semantic-border-width-default, 1px) solid var(--lmvz-semantic-color-status-selected, #f1f9fe); outline-offset: var(--lmvz-component-input-sm-padding-x, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); } button:is([disabled], .disabled) { cursor: not-allowed; pointer-events: none; opacity: var(--lmvz-component-input-disabled-opacity, 40%); } button:not([disabled]):hover { --lmvz-button-background: var(--lmvz-semantic-color-int-primary-hover, #2e2e2e); } button:not([disabled]):active { --lmvz-button-background: var(--lmvz-semantic-color-int-primary-active, #545454); } button.secondary { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary, #f0f0f0); --lmvz-button-color: var(--lmvz-semantic-color-int-on-secondary, #000000); --lmvz-button-border-width: var(--lmvz-semantic-border-width-default, 1px); --lmvz-button-border-color: var(--lmvz-semantic-color-border-default, #e0e0e0); } button.secondary:not([disabled], .disabled):hover { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary-hover, #e0e0e0); --lmvz-button-border-color: var(--lmvz-semantic-color-border-hover, #c7c7c7); } button.secondary:not([disabled], .disabled):active { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary-active, #d4d4d4); --lmvz-button-border-color: var(--lmvz-semantic-color-border-active, #d4d4d4); } button.tertiary { --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary, #ffffff); --lmvz-button-color: var(--lmvz-semantic-color-int-on-tertiary, #545454); } button.tertiary:not([disabled], .disabled):hover { --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary-hover, #f0f0f0); } button.tertiary:not([disabled], .disabled):active { --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary-active, #e0e0e0); } button.small { --lmvz-button-padding-inline: var(--lmvz-component-input-sm-padding-x, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); --lmvz-button-padding-block: var(--lmvz-component-input-sm-padding-y, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); --lmvz-button-gap: var(--lmvz-component-input-sm-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); --lmvz-button-font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.4 Router); } button.large { --lmvz-button-padding-inline: var(--lmvz-component-input-lg-padding-x, clamp(0.88rem, 0.78rem + 0.39vw, 1.25rem)); --lmvz-button-padding-block: var(--lmvz-component-input-lg-padding-y, clamp(0.88rem, 0.78rem + 0.39vw, 1.25rem)); --lmvz-button-gap: var(--lmvz-component-input-lg-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); --lmvz-button-font: var(--lmvz-typography-body-lg, 400 clamp(1rem, 0.97rem + 0.13vw, 1.13rem) / 1.4 Router); } display: flex; min-width: var(--lmvz-other-component-card-minwidth, 20.4375rem); max-width: var(--lmvz-other-component-card-maxwidth, 21.6875rem); flex-direction: column; align-items: flex-start; border-radius: var(--lmvz-semantic-border-radius-lg, 14px); border: var(--lmvz-semantic-border-width-default, 1px) solid var(--lmvz-semantic-color-border-default, #e0e0e0); background: var(--lmvz-semantic-color-surface-primary, #ffffff); } *.sc-lmvz-card { color: var(--lmvz-semantic-color-on-surface-primary, #000000); font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.4 Router); } .top.sc-lmvz-card { display: flex; padding: var(--lmvz-dimension-8-12, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); flex-direction: column; justify-content: center; align-items: center; align-self: stretch; } .bottom.sc-lmvz-card { display: flex; min-width: 150px; padding: var(--lmvz-dimension-4-6, clamp(0.25rem, 0.22rem + 0.13vw, 0.38rem)) var(--lmvz-dimension-10-14, clamp(0.63rem, 0.56rem + 0.26vw, 0.88rem)) var(--lmvz-dimension-10-14, clamp(0.63rem, 0.56rem + 0.26vw, 0.88rem)) var(--lmvz-dimension-10-14, clamp(0.63rem, 0.56rem + 0.26vw, 0.88rem)); flex-direction: column; align-items: flex-start; align-self: stretch; } .title.sc-lmvz-card { margin: 0; display: flex; justify-content: center; align-items: center; align-self: stretch; padding-bottom: var(--lmvz-global-s4, 4px); overflow-wrap: break-word; font: var(--lmvz-typography-heading-2xl, 500 clamp(2rem, 1.94rem + 0.26vw, 2.25rem) / 1.2 Router); } .description.sc-lmvz-card { display: flex; margin: 0; padding-bottom: var(--lmvz-component-body-sm-padding-bottom, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); align-items: flex-start; align-self: stretch; white-space: pre-line; font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.4 Router); } .image-wrapper.sc-lmvz-card { aspect-ratio: 4 / 3; width: 100%; background-size: cover; background-position: center; flex: 1 0 0; align-self: stretch; border-radius: var(--lmvz-semantic-border-radius-md, 6px); } .actions.sc-lmvz-card { margin-top: var(--lmvz-component-form-wrapper-gap-y, clamp(1.13rem, 0.97rem + 0.65vw, 1.75rem)); display: flex; align-items: center; gap: var(--lmvz-component-input-md-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); align-self: stretch; } button.primary.sc-lmvz-card, lmvz-button.primary.sc-lmvz-card { display: flex; justify-content: center; align-items: center; gap: var(--lmvz-component-input-md-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); flex: 1 0 0; }`;
|
|
8
7
|
|
|
@@ -17,7 +16,7 @@ const LmvzCard = class {
|
|
|
17
16
|
primaryActionLabel = '';
|
|
18
17
|
primaryAction;
|
|
19
18
|
get fallbackImage() {
|
|
20
|
-
return
|
|
19
|
+
return assets.runSync(assets.syncCreateAssetUrlSafely('card-placeholder.svg'));
|
|
21
20
|
}
|
|
22
21
|
_onPrimaryClick() {
|
|
23
22
|
this.primaryAction.emit();
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-D3BMpL5w.js');
|
|
4
|
+
var reactiveControllerHost = require('./reactive-controller-host-BMDEj1kX.js');
|
|
4
5
|
var component = require('./component-CRc6eHcV.js');
|
|
5
|
-
var ariaValidationController = require('./aria-validation-controller-B3hMkau3.js');
|
|
6
|
-
require('./Effect-CNhHt4Xb.js');
|
|
7
|
-
require('./MutableQueue-Bk9tBfaK.js');
|
|
8
6
|
|
|
9
7
|
class ListKeyboardNavigationController {
|
|
10
8
|
host;
|
|
@@ -52,7 +50,7 @@ class ListKeyboardNavigationController {
|
|
|
52
50
|
|
|
53
51
|
const lmvzHeaderCss = () => `:host{display:flex;width:100vw;flex-direction:row;align-items:center;box-sizing:border-box;background-color:var(--lmvz-semantic-color-surface-primary, #ffffff);--lmvz-header-x-spacing-level-1:var(--lmvz-dimension-8-28, clamp(0.5rem, 0.2rem + 1.29vw, 1.75rem));--lmvz-header-x-spacing-level-2:var(--lmvz-component-buttongroup-wrapper-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem));padding:var(--lmvz-dimension-8-16, clamp(0.5rem, 0.38rem + 0.52vw, 1rem)) var(--lmvz-header-x-spacing-level-1);gap:var(--lmvz-header-x-spacing-level-1);.brand{display:inline-flex;justify-content:center;align-items:center}#fallback-logo-lmvz{height:34px;width:auto}nav{flex-grow:1}.primary-menubar{display:flex;flex-direction:row;align-items:center}.secondary-menubar{display:flex;flex-direction:row;align-items:center;margin-left:var(--lmvz-header-x-spacing-level-2);padding-left:var(--lmvz-header-x-spacing-level-2);border-left:1px solid var(--lmvz-semantic-color-border-default, #e0e0e0)}}`;
|
|
54
52
|
|
|
55
|
-
const LmvzHeader = class extends
|
|
53
|
+
const LmvzHeader = class extends reactiveControllerHost.ReactiveControllerHost {
|
|
56
54
|
get el() { return index.getElement(this); }
|
|
57
55
|
primarySlot;
|
|
58
56
|
secondarySlot;
|
|
@@ -74,18 +72,18 @@ const LmvzHeader = class extends ariaValidationController.ReactiveControllerHost
|
|
|
74
72
|
constructor(hostRef) {
|
|
75
73
|
super();
|
|
76
74
|
index.registerInstance(this, hostRef);
|
|
77
|
-
this.addController(new
|
|
75
|
+
this.addController(new reactiveControllerHost.AriaValidationController(this, { reValidateOnPropChanges: true }));
|
|
78
76
|
this.addController(this.keyboardNavigationController);
|
|
79
77
|
}
|
|
80
78
|
handleActiveNavChange() {
|
|
81
79
|
this.updateElementsActive();
|
|
82
80
|
}
|
|
83
81
|
componentDidLoad() {
|
|
84
|
-
this.primarySlot.addEventListener('slotchange', this.
|
|
85
|
-
this.
|
|
86
|
-
this.secondarySlot.addEventListener('slotchange', this.
|
|
82
|
+
this.primarySlot.addEventListener('slotchange', this.handlePrimaryNavItemsChange.bind(this));
|
|
83
|
+
this.handlePrimaryNavItemsChange();
|
|
84
|
+
this.secondarySlot.addEventListener('slotchange', this.handleSecondaryNavItemsChange.bind(this));
|
|
87
85
|
}
|
|
88
|
-
|
|
86
|
+
handlePrimaryNavItemsChange() {
|
|
89
87
|
const items = this.primaryMenuitems;
|
|
90
88
|
if (!items.length) {
|
|
91
89
|
console.warn('Primary slot has no assigned elements. Please add navigation items to the primary slot.');
|
|
@@ -97,11 +95,14 @@ const LmvzHeader = class extends ariaValidationController.ReactiveControllerHost
|
|
|
97
95
|
});
|
|
98
96
|
this.updateElementsActive();
|
|
99
97
|
}
|
|
100
|
-
|
|
98
|
+
handleSecondaryNavItemsChange() {
|
|
101
99
|
const items = this.secondaryMenuitems;
|
|
102
100
|
if (!items.length) {
|
|
103
101
|
return;
|
|
104
102
|
}
|
|
103
|
+
this.updateKeyboardNavSubjects();
|
|
104
|
+
}
|
|
105
|
+
updateKeyboardNavSubjects() {
|
|
105
106
|
this.keyboardNavigationController.updateElements([...this.primaryMenuitems, ...this.secondaryMenuitems]);
|
|
106
107
|
}
|
|
107
108
|
updateElementsActive() {
|
|
@@ -122,7 +123,7 @@ const LmvzHeader = class extends ariaValidationController.ReactiveControllerHost
|
|
|
122
123
|
}
|
|
123
124
|
}
|
|
124
125
|
render() {
|
|
125
|
-
return (index.h(index.Host, { key: '
|
|
126
|
+
return (index.h(index.Host, { key: '783c855e49e1a2447107d6205a1b2c50285ccfff', onFocus: this.delegateFocus.bind(this) }, index.h("div", { key: '84a78b0ed3e170c49a711fa4091f80dbc7003b2f', class: "brand" }, index.h("slot", { key: '76cc54f17a7bc5f825433fc56351666a93891fd2', name: "brand" }, index.h("lmvz-icon", { key: 'e196e43720cb4b4c3f79b3071d534b50480f6206', id: "fallback-logo-lmvz", icon: "Logo", size: "inherit", "aria-label": "Lehrmittelverlag Z\u00FCrich" }))), index.h("nav", { key: 'd25a719752bd4085da5ad18af94afc66e9cabd5e', "aria-label": "Hauptnavigation" }, index.h("div", { key: '8a12c2c53bd061b3559ce9693780e592b3d7aa32', role: "menubar", class: "primary-menubar" }, index.h("slot", { key: '4461632675dc657f675883e8ef618e371ace0ad7', name: "nav-primary", ref: el => (this.primarySlot = el) }), index.h("div", { key: 'c1dabc588ac376db667df32d3edbdd6dce60aaad', role: "menu", id: "nav-secondary", class: "secondary-menubar", hidden: !this.lmvzActiveNav, ref: el => (this.secondaryNav = el) }, index.h("slot", { key: '74ca44ee2f755ffe9ea3ebc19cc2b227ae22df8b', name: this.secondarySlotName, ref: el => (this.secondarySlot = el) })))), index.h("div", { key: 'a4d250a5fcd10390aed1f5369c28ddec9aa9ee8d', class: "actions" }, index.h("slot", { key: '77a499ce12d269e79221ca971cc1b203d179f459', name: "actions" }))));
|
|
126
127
|
}
|
|
127
128
|
static get watchers() { return {
|
|
128
129
|
"lmvzActiveNav": [{
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var icons = require('./icons-
|
|
7
|
-
require('./MutableQueue-Bk9tBfaK.js');
|
|
8
|
-
require('./assets-BguFB3wV.js');
|
|
3
|
+
var index = require('./index-D3BMpL5w.js');
|
|
4
|
+
var assets = require('./assets-CB5ikzmP.js');
|
|
5
|
+
var reactiveControllerHost = require('./reactive-controller-host-BMDEj1kX.js');
|
|
6
|
+
var icons = require('./icons-DM_TTn48.js');
|
|
9
7
|
|
|
10
8
|
const lmvzIconCss = () => `.sc-lmvz-icon-h{--lmvz-icon-color:var(--lmvz-component-color, var(--lmvz-semantic-color-on-surface-input-primary, #000000));display:inline-block;line-height:0;svg{display:block}svg>path{stroke:var(--lmvz-icon-color);fill:none}}[size='xs'].sc-lmvz-icon-h{svg{width:var(--lmvz-component-icon-size-xs, clamp(0.75rem, 0.69rem + 0.26vw, 1rem));height:var(--lmvz-component-icon-size-xs, clamp(0.75rem, 0.69rem + 0.26vw, 1rem))}}[size='sm'].sc-lmvz-icon-h{svg{width:var(--lmvz-component-icon-size-sm, clamp(0.88rem, 0.81rem + 0.26vw, 1.13rem));height:var(--lmvz-component-icon-size-sm, clamp(0.88rem, 0.81rem + 0.26vw, 1.13rem))}}[size='md'].sc-lmvz-icon-h{svg{width:var(--lmvz-component-icon-size-md, clamp(1rem, 0.88rem + 0.52vw, 1.5rem));height:var(--lmvz-component-icon-size-md, clamp(1rem, 0.88rem + 0.52vw, 1.5rem))}}[size='lg'].sc-lmvz-icon-h{svg{width:var(--lmvz-component-icon-size-lg, clamp(1.5rem, 1.38rem + 0.52vw, 2rem));height:var(--lmvz-component-icon-size-lg, clamp(1.5rem, 1.38rem + 0.52vw, 2rem))}}[size='inherit'].sc-lmvz-icon-h{svg{width:inherit;height:inherit}}[weight='light'].sc-lmvz-icon-h{svg>path{stroke-width:1}}[weight='medium'].sc-lmvz-icon-h{svg>path{stroke-width:1.5}}[weight='bold'].sc-lmvz-icon-h{svg>path{stroke-width:2}}[weight='filled'].sc-lmvz-icon-h{svg>path{stroke-width:2;fill:var(--lmvz-icon-color)}}`;
|
|
11
9
|
|
|
12
|
-
const LmvzIcon = class extends
|
|
10
|
+
const LmvzIcon = class extends reactiveControllerHost.ReactiveControllerHost {
|
|
13
11
|
intersectionObserver;
|
|
14
12
|
get el() { return index.getElement(this); }
|
|
15
13
|
icon;
|
|
@@ -24,7 +22,7 @@ const LmvzIcon = class extends ariaValidationController.ReactiveControllerHost {
|
|
|
24
22
|
constructor(hostRef) {
|
|
25
23
|
super();
|
|
26
24
|
index.registerInstance(this, hostRef);
|
|
27
|
-
this.addController(new
|
|
25
|
+
this.addController(new reactiveControllerHost.AriaValidationController(this));
|
|
28
26
|
}
|
|
29
27
|
connectedCallback() {
|
|
30
28
|
this.waitUntilVisible(() => {
|
|
@@ -43,10 +41,10 @@ const LmvzIcon = class extends ariaValidationController.ReactiveControllerHost {
|
|
|
43
41
|
if (!icon || !visible) {
|
|
44
42
|
return;
|
|
45
43
|
}
|
|
46
|
-
this.iconData = await
|
|
44
|
+
this.iconData = await assets.runPromise(icons.fetchIconSvg(this.icon).pipe(assets.tapError(error => assets.logError(`Error loading icon "${icon}":`, error.message, error.cause, error.stack)), assets.catchAll(() => assets.succeed(icons.emptyDefaultSvg()))));
|
|
47
45
|
}
|
|
48
46
|
render() {
|
|
49
|
-
return index.h(index.Host, { key: '
|
|
47
|
+
return index.h(index.Host, { key: 'd4c1cbfbaf39ebf6aa26415d46100763b9f89b5b', role: "img", "aria-hidden": `${this.ariaHidden}`, innerHTML: this.iconData });
|
|
50
48
|
}
|
|
51
49
|
waitUntilVisible(callback, rootMargin = 50) {
|
|
52
50
|
if (typeof window === 'undefined' || !window.IntersectionObserver) {
|
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
4
|
-
var index$1 = require('./index-
|
|
3
|
+
var index = require('./index-D3BMpL5w.js');
|
|
4
|
+
var index$1 = require('./index-Bp6Dd2i1.js');
|
|
5
|
+
var reactiveControllerHost = require('./reactive-controller-host-BMDEj1kX.js');
|
|
5
6
|
var component = require('./component-CRc6eHcV.js');
|
|
6
|
-
var ariaValidationController = require('./aria-validation-controller-B3hMkau3.js');
|
|
7
|
-
require('./_commonjsHelpers-CFO10eej.js');
|
|
8
|
-
require('./Effect-CNhHt4Xb.js');
|
|
9
|
-
require('./MutableQueue-Bk9tBfaK.js');
|
|
10
7
|
|
|
11
|
-
const lmvzInputCss = () => `@layer lmvz-ds.reset, lmvz-ds.theme, lmvz-ds.components, lmvz-ds.overrides; @layer lmvz-ds.theme { @font-face { font-family: Router; src: local('Router-Book'), url('/assets/fonts/Router-Book.woff') format('woff'), local('Router'); font-weight: 400 normal; } @font-face { font-family: Router; src: local('Router-Medium'), url('/assets/fonts/Router-Medium.woff') format('woff'), local('Router'); font-weight: 500; } @font-face { font-family: Router; src: local('Router-Bold'), url('/assets/fonts/Router-Bold.woff') format('woff'), local('Router'); font-weight: 700 bold; } } .sc-lmvz-input-h { display: block; font-family: var(--lmvz-global-font-family-default, Router); --input-radius: var(--lmvz-component-input-radius-default, 999px); --input-bg: var(--lmvz-semantic-color-surface-input-primary, #ffffff); --input-border-color: var(--lmvz-semantic-color-border-default, #e0e0e0); --input-border-color-hover: var(--lmvz-semantic-color-border-hover, #c7c7c7); --input-border-color-focus: var(--lmvz-semantic-color-status-on-selected, #0e7ab4); --input-border-width: var(--lmvz-semantic-border-width-default, 1px); --input-height: 48px; --input-padding-x: 16px; --label-color: var(--lmvz-semantic-color-on-surface-input-secondary, #7a7a7a); --input-text-color: var(--lmvz-semantic-color-on-surface-input-primary, #000000); --helper-text-color: var(--lmvz-semantic-color-on-surface-input-secondary, #7a7a7a); --error-text-color: var(--lmvz-semantic-color-status-on-danger, #e52a31); --label-floating-scale: 0.85; --label-minimized-top: -6px; --label-minimized-bg: var(--input-bg); --label-minimized-padding-x: 4px; --input-disabled-opacity: var(--lmvz-component-input-disabled-opacity, 40%); } .input-container.sc-lmvz-input { display: flex; flex-direction: column; position: relative; width: 100%; } .input-wrapper.sc-lmvz-input { background-color: var(--input-bg); border: var(--input-border-width) solid var(--input-border-color); border-radius: var(--input-radius); display: flex; align-items: center; height: var(--input-height); padding: 0 var(--input-padding-x); position: relative; transition: border-color 0.2s ease; gap: 8px; } [disabled].sc-lmvz-input-h .input-wrapper.sc-lmvz-input { opacity: var(--input-disabled-opacity); cursor: not-allowed; pointer-events: none; } .input-container.sc-lmvz-input:focus-within .input-wrapper.sc-lmvz-input { border-color: var(--input-border-color-focus); outline: 2px solid var(--input-border-color-focus); outline-offset: 2px; } .input-container.sc-lmvz-input:has(input:focus-visible) .input-wrapper.sc-lmvz-input { box-shadow: 0 0 0 3px rgb(0 86 214 / 20%); } [error].sc-lmvz-input-h .input-wrapper.sc-lmvz-input { border-color: var(--error-text-color); } [error].sc-lmvz-input-h:focus-within .input-wrapper.sc-lmvz-input { border-color: var(--error-text-color); outline-color: var(--error-text-color); } .sc-lmvz-input-h:not([disabled]) .input-wrapper.sc-lmvz-input:hover { border-color: var(--input-border-color-hover); } .label-input-group.sc-lmvz-input { position: relative; flex-grow: 1; display: flex; align-items: center; height: 100%; } label.sc-lmvz-input { position: absolute; left: 0; top: 50%; transform: translateY(-50%); color: var(--label-color); font-size: 14px; font-family: Router, sans-serif; font-weight: 400; pointer-events: none; transition: all 0.2s ease-out; background-color: transparent; padding: 0; margin: 0; line-height: normal; white-space: nowrap; } label.floating.sc-lmvz-input { top: 0; transform: translateY(-50%) scale(0.85); transform-origin: left top; background-color: var(--label-minimized-bg); padding: 0 var(--label-minimized-padding-x); left: -2px; color: var(--input-text-color); font-weight: 500; } .required-indicator.sc-lmvz-input { color: var(--error-text-color); margin-left: 2px; } input.sc-lmvz-input { border: none; background: transparent; width: 100%; height: 100%; color: var(--input-text-color); font-family: inherit; font-size: 14px; outline: none; padding: 0; margin: 0; font-weight: 400; } input.sc-lmvz-input::placeholder { color: var(--label-color); } .
|
|
8
|
+
const lmvzInputCss = () => `@layer lmvz-ds.reset, lmvz-ds.theme, lmvz-ds.components, lmvz-ds.overrides; @layer lmvz-ds.theme { @font-face { font-family: Router; src: local('Router-Book'), url('/assets/fonts/Router-Book.woff') format('woff'), local('Router'); font-weight: 400 normal; } @font-face { font-family: Router; src: local('Router-Medium'), url('/assets/fonts/Router-Medium.woff') format('woff'), local('Router'); font-weight: 500; } @font-face { font-family: Router; src: local('Router-Bold'), url('/assets/fonts/Router-Bold.woff') format('woff'), local('Router'); font-weight: 700 bold; } } .sc-lmvz-input-h { display: block; font-family: var(--lmvz-global-font-family-default, Router); --input-radius: var(--lmvz-component-input-radius-default, 999px); --input-bg: var(--lmvz-semantic-color-surface-input-primary, #ffffff); --input-border-color: var(--lmvz-semantic-color-border-default, #e0e0e0); --input-border-color-hover: var(--lmvz-semantic-color-border-hover, #c7c7c7); --input-border-color-focus: var(--lmvz-semantic-color-status-on-selected, #0e7ab4); --input-border-width: var(--lmvz-semantic-border-width-default, 1px); --input-height: 48px; --input-padding-x: 16px; --label-color: var(--lmvz-semantic-color-on-surface-input-secondary, #7a7a7a); --input-text-color: var(--lmvz-semantic-color-on-surface-input-primary, #000000); --helper-text-color: var(--lmvz-semantic-color-on-surface-input-secondary, #7a7a7a); --error-text-color: var(--lmvz-semantic-color-status-on-danger, #e52a31); --label-floating-scale: 0.85; --label-minimized-top: -6px; --label-minimized-bg: var(--input-bg); --label-minimized-padding-x: 4px; --input-disabled-opacity: var(--lmvz-component-input-disabled-opacity, 40%); } .input-container.sc-lmvz-input { display: flex; flex-direction: column; position: relative; width: 100%; } .input-wrapper.sc-lmvz-input { background-color: var(--input-bg); border: var(--input-border-width) solid var(--input-border-color); border-radius: var(--input-radius); display: flex; align-items: center; height: var(--input-height); padding: 0 var(--input-padding-x); position: relative; transition: border-color 0.2s ease; gap: 8px; } [disabled].sc-lmvz-input-h .input-wrapper.sc-lmvz-input { opacity: var(--input-disabled-opacity); cursor: not-allowed; pointer-events: none; } .input-container.sc-lmvz-input:focus-within .input-wrapper.sc-lmvz-input { border-color: var(--input-border-color-focus); outline: 2px solid var(--input-border-color-focus); outline-offset: 2px; } .input-container.sc-lmvz-input:has(input:focus-visible) .input-wrapper.sc-lmvz-input { box-shadow: 0 0 0 3px rgb(0 86 214 / 20%); } [error].sc-lmvz-input-h .input-wrapper.sc-lmvz-input { border-color: var(--error-text-color); } [error].sc-lmvz-input-h:focus-within .input-wrapper.sc-lmvz-input { border-color: var(--error-text-color); outline-color: var(--error-text-color); } .sc-lmvz-input-h:not([disabled]) .input-wrapper.sc-lmvz-input:hover { border-color: var(--input-border-color-hover); } .label-input-group.sc-lmvz-input { position: relative; flex-grow: 1; display: flex; align-items: center; height: 100%; } label.sc-lmvz-input { position: absolute; left: 0; top: 50%; transform: translateY(-50%); color: var(--label-color); font-size: 14px; font-family: Router, sans-serif; font-weight: 400; pointer-events: none; transition: all 0.2s ease-out; background-color: transparent; padding: 0; margin: 0; line-height: normal; white-space: nowrap; } label.floating.sc-lmvz-input { top: 0; transform: translateY(-50%) scale(0.85); transform-origin: left top; background-color: var(--label-minimized-bg); padding: 0 var(--label-minimized-padding-x); left: -2px; color: var(--input-text-color); font-weight: 500; } .required-indicator.sc-lmvz-input { color: var(--error-text-color); margin-left: 2px; } input.sc-lmvz-input { border: none; background: transparent; width: 100%; height: 100%; color: var(--input-text-color); font-family: inherit; font-size: 14px; outline: none; padding: 0; margin: 0; font-weight: 400; } input.sc-lmvz-input::placeholder { color: var(--label-color); } div.sc-lmvz-input:empty { display: none; } [role='status'].sc-lmvz-input { padding-top: 8px; padding-left: 12px; font-size: 12px; color: var(--helper-text-color); font-family: Router, sans-serif; font-weight: 500; } [role='alert'].sc-lmvz-input { padding-top: 8px; padding-left: 12px; font-size: 12px; color: var(--error-text-color); font-family: Router, sans-serif; font-weight: 500; } .sc-lmvz-input-s > lmvz-button { --lmvz-button-padding: 4px; }`;
|
|
12
9
|
|
|
13
10
|
let inputIdCounter = 0;
|
|
14
|
-
const LmvzInput = class extends
|
|
11
|
+
const LmvzInput = class extends reactiveControllerHost.ReactiveControllerHost {
|
|
15
12
|
get el() { return index.getElement(this); }
|
|
16
13
|
lmvzInput;
|
|
17
14
|
internals;
|
|
@@ -104,7 +101,7 @@ const LmvzInput = class extends ariaValidationController.ReactiveControllerHost
|
|
|
104
101
|
this.internals = hostRef.$hostElement$.attachInternals();
|
|
105
102
|
hostRef.$hostElement$["s-ei"] = this.internals;
|
|
106
103
|
}
|
|
107
|
-
this.addController(new
|
|
104
|
+
this.addController(new reactiveControllerHost.AriaValidationController(this, {
|
|
108
105
|
reValidateOnPropChanges: true,
|
|
109
106
|
}));
|
|
110
107
|
}
|
|
@@ -158,9 +155,9 @@ const LmvzInput = class extends ariaValidationController.ReactiveControllerHost
|
|
|
158
155
|
render() {
|
|
159
156
|
const hasValue = Boolean(this.value);
|
|
160
157
|
const shouldFloatLabel = hasValue || Boolean(this.placeholder);
|
|
161
|
-
return (index.h("div", { key: '
|
|
158
|
+
return (index.h("div", { key: '4dffa432df9b8ca5d89c02b59cfe25b9321ca162', class: index$1.classNames('input-container', {
|
|
162
159
|
'interaction-filled': hasValue,
|
|
163
|
-
}) }, index.h("div", { key: '
|
|
160
|
+
}) }, index.h("div", { key: 'ade1cd1137acce218d458c1b66b2eb29cf887b70', class: "input-wrapper" }, index.h("slot", { key: '013dff3540481724658ff754bf3db0585ec3b6f4', name: "before-input" }), index.h("div", { key: '6587bb63c79f97c31abff5be0a91eb16374971d5', class: "label-input-group" }, index.h("label", { key: '2ef0a35fbd38b255423d2793415568a661476db3', htmlFor: this.inputId, class: index$1.classNames({ floating: shouldFloatLabel }) }, this.label, this.required && (index.h("span", { key: '0785826710ee4ecea96037cc689c34a43113552e', class: "required-indicator", "aria-hidden": "true" }, ' ', "*"))), index.h("input", { key: '5ad0d4b2d1c11dd89824db87e331232ba703a05e', id: this.inputId, ref: el => (this.nativeInputElement = el), type: this.type, min: this.min, max: this.max, step: this.step, value: this.value, name: this.name, placeholder: this.placeholder, disabled: this.disabled, readOnly: this.readonly, required: this.required, form: this.form, autocomplete: this.autocomplete, inputmode: this.inputmode, autocorrect: this.autocorrect, autocapitalize: this.autocapitalize, spellcheck: this.spellcheck, autofocus: this.autofocus, minlength: this.minlength, maxlength: this.maxlength, pattern: this.pattern, "aria-invalid": this.error ? 'true' : 'false', "aria-required": this.required ? 'true' : 'false', "aria-describedby": this.describedBy, "aria-errormessage": this.errorId, onInput: this.handleInput, onChange: this.handleChange, onFocus: this.handleFocus, onBlur: this.handleBlur })), index.h("slot", { key: 'a23676cc830cac7fbf87fef81a8d05b50b831725', name: "after-input" })), index.h("div", { key: 'e0a05138954d70508f840b6d5c4f53e74c2f2979', id: this.helperId, role: "status" }, this.helperText || null), index.h("div", { key: 'fcba57be2d596b3b8aa0ac97b2fd31dc3e77e14b', id: this.errorId, role: "alert" }, (this.showErrorMessage && this.errorMessage) || null)));
|
|
164
161
|
}
|
|
165
162
|
static get formAssociated() { return true; }
|
|
166
163
|
static get watchers() { return {
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-D3BMpL5w.js');
|
|
4
|
+
var reactiveControllerHost = require('./reactive-controller-host-BMDEj1kX.js');
|
|
4
5
|
var elementActivationController = require('./element-activation-controller-DC_6T0Rt.js');
|
|
5
|
-
var ariaValidationController = require('./aria-validation-controller-B3hMkau3.js');
|
|
6
|
-
require('./Effect-CNhHt4Xb.js');
|
|
7
|
-
require('./MutableQueue-Bk9tBfaK.js');
|
|
8
6
|
|
|
9
7
|
const lmvzMenuitemCss = () => `@layer lmvz-ds.reset, lmvz-ds.theme, lmvz-ds.components, lmvz-ds.overrides; @layer lmvz-ds.theme { @font-face { font-family: Router; src: local('Router-Book'), url('/assets/fonts/Router-Book.woff') format('woff'), local('Router'); font-weight: 400 normal; } @font-face { font-family: Router; src: local('Router-Medium'), url('/assets/fonts/Router-Medium.woff') format('woff'), local('Router'); font-weight: 500; } @font-face { font-family: Router; src: local('Router-Bold'), url('/assets/fonts/Router-Bold.woff') format('woff'), local('Router'); font-weight: 700 bold; } } .sc-lmvz-menuitem-h { display: inline-flex; flex-direction: row; align-items: center; justify-content: center; gap: var(--lmvz-component-input-md-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); border-radius: var(--lmvz-semantic-border-radius-lg, 14px); font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.4 Router); padding: var(--lmvz-component-input-md-padding-y, clamp(0.75rem, 0.69rem + 0.26vw, 1rem)) var(--lmvz-component-input-md-padding-x, clamp(0.75rem, 0.69rem + 0.26vw, 1rem)); cursor: pointer; --lmvz-menuitem-color: var(--lmvz-semantic-color-int-on-tertiary, #545454); --lmvz-menuitem-background: var(--lmvz-semantic-color-int-tertiary, #ffffff); background: var(--lmvz-menuitem-background); color: var(--lmvz-menuitem-color); } .sc-lmvz-menuitem-h:hover { --lmvz-menuitem-background: var(--lmvz-semantic-color-int-tertiary-hover, #f0f0f0); } .sc-lmvz-menuitem-h:active { --lmvz-menuitem-background: var(--lmvz-semantic-color-int-tertiary-active, #e0e0e0); } .sc-lmvz-menuitem-h:focus-visible { z-index: 1; } [aria-expanded='true'].sc-lmvz-menuitem-h { --lmvz-menuitem-background: var(--lmvz-semantic-color-status-selected, #f1f9fe); --lmvz-menuitem-color: var(--lmvz-semantic-color-status-on-selected, #0e7ab4); }`;
|
|
10
8
|
|
|
11
|
-
const LmvzMenuItem = class extends
|
|
9
|
+
const LmvzMenuItem = class extends reactiveControllerHost.ReactiveControllerHost {
|
|
12
10
|
get el() { return index.getElement(this); }
|
|
13
11
|
get role() {
|
|
14
12
|
return 'menuitem';
|
|
@@ -21,11 +19,11 @@ const LmvzMenuItem = class extends ariaValidationController.ReactiveControllerHo
|
|
|
21
19
|
super();
|
|
22
20
|
index.registerInstance(this, hostRef);
|
|
23
21
|
this.lmvzActivation = index.createEvent(this, "lmvzActivation");
|
|
24
|
-
this.addController(new
|
|
22
|
+
this.addController(new reactiveControllerHost.AriaValidationController(this));
|
|
25
23
|
this.addController(new elementActivationController.ElementActivationController(this));
|
|
26
24
|
}
|
|
27
25
|
render() {
|
|
28
|
-
return (index.h(index.Host, { key: '
|
|
26
|
+
return (index.h(index.Host, { key: 'c4a21e628aaf4e983d51ce7b1f38ff66c47ec3ac' }, index.h("slot", { key: '0040d27a11c4bdd5a49dd54f352ba7d17b53ff7b' })));
|
|
29
27
|
}
|
|
30
28
|
};
|
|
31
29
|
LmvzMenuItem.style = lmvzMenuitemCss();
|
package/dist/cjs/loader.cjs.js
CHANGED
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const GLOBAL_STATE_KEY = Symbol('__lmvzAriaValidationRuntimeState');
|
|
4
|
+
const ARIA_VALIDATION_RUNTIME_CHANGED_EVENT = 'lmvz:aria-validation-runtime-changed';
|
|
5
|
+
const getRuntimeState = () => {
|
|
6
|
+
const globalState = globalThis;
|
|
7
|
+
if (!globalState[GLOBAL_STATE_KEY]) {
|
|
8
|
+
globalState[GLOBAL_STATE_KEY] = {
|
|
9
|
+
enabled: false,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
return globalState[GLOBAL_STATE_KEY];
|
|
13
|
+
};
|
|
14
|
+
const isAriaValidationEnabled = () => getRuntimeState().enabled;
|
|
15
|
+
function queueValidation(...args) {
|
|
16
|
+
const state = getRuntimeState();
|
|
17
|
+
if (!state.enabled || !state.runtime)
|
|
18
|
+
return;
|
|
19
|
+
state.runtime.enqueueValidation(...args);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
class AriaValidationController {
|
|
23
|
+
host;
|
|
24
|
+
config;
|
|
25
|
+
visibilityObserver;
|
|
26
|
+
elementQueued = false;
|
|
27
|
+
elementValidated = false;
|
|
28
|
+
knownValidationErrors = [];
|
|
29
|
+
get disabled() {
|
|
30
|
+
return !isAriaValidationEnabled();
|
|
31
|
+
}
|
|
32
|
+
constructor(host, config) {
|
|
33
|
+
this.host = host;
|
|
34
|
+
this.config = config;
|
|
35
|
+
}
|
|
36
|
+
onRuntimeConfigChange = () => {
|
|
37
|
+
if (!isAriaValidationEnabled())
|
|
38
|
+
return;
|
|
39
|
+
this.checkLazyValidation();
|
|
40
|
+
};
|
|
41
|
+
hostDidLoad() {
|
|
42
|
+
if (typeof window !== 'undefined') {
|
|
43
|
+
window.addEventListener(ARIA_VALIDATION_RUNTIME_CHANGED_EVENT, this.onRuntimeConfigChange);
|
|
44
|
+
}
|
|
45
|
+
if (this.elementQueued || this.elementValidated)
|
|
46
|
+
return;
|
|
47
|
+
if (!this.host.el.checkVisibility()) {
|
|
48
|
+
this.observeVisibilityOnce();
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
this.enqueueValidation();
|
|
52
|
+
}
|
|
53
|
+
hostDidUpdate() {
|
|
54
|
+
this.checkLazyValidation();
|
|
55
|
+
}
|
|
56
|
+
hostDisconnected() {
|
|
57
|
+
this.discardVisibilityObserver();
|
|
58
|
+
if (typeof window !== 'undefined') {
|
|
59
|
+
window.removeEventListener(ARIA_VALIDATION_RUNTIME_CHANGED_EVENT, this.onRuntimeConfigChange);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
observeVisibilityOnce() {
|
|
63
|
+
this.visibilityObserver = new IntersectionObserver(entries => {
|
|
64
|
+
for (const entry of entries) {
|
|
65
|
+
if (entry.target !== this.host.el)
|
|
66
|
+
continue;
|
|
67
|
+
if (!entry.isIntersecting)
|
|
68
|
+
continue;
|
|
69
|
+
this.checkLazyValidation();
|
|
70
|
+
this.discardVisibilityObserver();
|
|
71
|
+
}
|
|
72
|
+
}, {
|
|
73
|
+
root: this.host.el.parentElement,
|
|
74
|
+
rootMargin: '0px',
|
|
75
|
+
threshold: 0.01,
|
|
76
|
+
});
|
|
77
|
+
this.visibilityObserver.observe(this.host.el);
|
|
78
|
+
}
|
|
79
|
+
checkLazyValidation() {
|
|
80
|
+
if (!this.config?.reValidateOnPropChanges && (this.elementQueued || this.elementValidated))
|
|
81
|
+
return;
|
|
82
|
+
this.enqueueValidation();
|
|
83
|
+
}
|
|
84
|
+
enqueueValidation() {
|
|
85
|
+
if (!isAriaValidationEnabled())
|
|
86
|
+
return;
|
|
87
|
+
this.elementQueued = true;
|
|
88
|
+
queueValidation({
|
|
89
|
+
context: { include: this.host.el, exclude: this.knownValidationErrors },
|
|
90
|
+
onComplete: (error, results) => {
|
|
91
|
+
this.elementValidated = true;
|
|
92
|
+
if (error) {
|
|
93
|
+
console.error('Error running ARIA validation:', error);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
if (!results?.violations.length) {
|
|
97
|
+
if (this.config?.verboseLogging) {
|
|
98
|
+
console.log(`No ARIA validation violations found for ${this.host.el?.tagName || 'element'}.`);
|
|
99
|
+
}
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const label = `ARIA validation violations found for ${this.host.el?.tagName || 'element'}`;
|
|
103
|
+
if (this.config?.verboseLogging) {
|
|
104
|
+
console.group(label);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
console.groupCollapsed(label);
|
|
108
|
+
}
|
|
109
|
+
const targets = results.violations.flatMap(violation => {
|
|
110
|
+
console.dir(violation, { showHidden: true, compact: false });
|
|
111
|
+
return violation.nodes.map(node => node.target);
|
|
112
|
+
});
|
|
113
|
+
console.log('element:', this.host.el);
|
|
114
|
+
console.groupEnd();
|
|
115
|
+
this.knownValidationErrors.push(...targets);
|
|
116
|
+
},
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
discardVisibilityObserver() {
|
|
120
|
+
if (!this.visibilityObserver)
|
|
121
|
+
return;
|
|
122
|
+
this.visibilityObserver.disconnect();
|
|
123
|
+
this.visibilityObserver = undefined;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
class ReactiveControllerHost {
|
|
128
|
+
controllers = new Set();
|
|
129
|
+
addController(controller) {
|
|
130
|
+
this.controllers.add(controller);
|
|
131
|
+
}
|
|
132
|
+
removeController(controller) {
|
|
133
|
+
this.controllers.delete(controller);
|
|
134
|
+
}
|
|
135
|
+
get activeControllers() {
|
|
136
|
+
return Array.from(this.controllers).filter(controller => !controller.disabled);
|
|
137
|
+
}
|
|
138
|
+
connectedCallback() {
|
|
139
|
+
if (!this.controllers.size) {
|
|
140
|
+
console.warn('ReactiveControllerHost connected with no controllers registered.', this);
|
|
141
|
+
}
|
|
142
|
+
this.activeControllers.forEach(controller => controller.hostConnected?.());
|
|
143
|
+
}
|
|
144
|
+
disconnectedCallback() {
|
|
145
|
+
this.activeControllers.forEach(controller => controller.hostDisconnected?.());
|
|
146
|
+
}
|
|
147
|
+
componentWillLoad() {
|
|
148
|
+
this.activeControllers.forEach(controller => controller.hostWillLoad?.());
|
|
149
|
+
}
|
|
150
|
+
componentDidLoad() {
|
|
151
|
+
this.activeControllers.forEach(controller => controller.hostDidLoad?.());
|
|
152
|
+
}
|
|
153
|
+
componentWillRender() {
|
|
154
|
+
this.activeControllers.forEach(controller => controller.hostWillRender?.());
|
|
155
|
+
}
|
|
156
|
+
componentDidRender() {
|
|
157
|
+
this.activeControllers.forEach(controller => controller.hostDidRender?.());
|
|
158
|
+
}
|
|
159
|
+
componentWillUpdate() {
|
|
160
|
+
this.activeControllers.forEach(controller => controller.hostWillUpdate?.());
|
|
161
|
+
}
|
|
162
|
+
componentDidUpdate() {
|
|
163
|
+
this.activeControllers.forEach(controller => controller.hostDidUpdate?.());
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
exports.AriaValidationController = AriaValidationController;
|
|
168
|
+
exports.ReactiveControllerHost = ReactiveControllerHost;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Host, h } from "@stencil/core";
|
|
2
2
|
import classNames from "classnames";
|
|
3
|
+
import { AriaValidationController } from "../../utils/aria/aria-validation-controller";
|
|
4
|
+
import { ElementActivationController } from "../../utils/aria/element-activation-controller";
|
|
3
5
|
import { findFormByRef, inheritAriaAttributes } from "../../utils/component";
|
|
4
|
-
import { ElementActivationController } from "../../utils/element-activation-controller";
|
|
5
6
|
import { ReactiveControllerHost } from "../../utils/reactive-controller-host";
|
|
6
|
-
import { AriaValidationController } from "../../utils/validation/aria-validation-controller";
|
|
7
7
|
export class LmvzButton extends ReactiveControllerHost {
|
|
8
8
|
el;
|
|
9
9
|
inheritedAttributes = {};
|
|
@@ -55,7 +55,7 @@ export class LmvzButton extends ReactiveControllerHost {
|
|
|
55
55
|
};
|
|
56
56
|
render() {
|
|
57
57
|
this.renderHiddenButton();
|
|
58
|
-
return (h(Host, { key: '
|
|
58
|
+
return (h(Host, { key: 'cd4a63b866c801ad7f96f59d15e561a54bfe9ec2', "aria-disabled": this.disabled ? 'true' : null }, h("button", { key: 'a1e3ecb88fb84d724df4939519bb22d4b6725c1d', disabled: this.disabled, class: classNames(this.variant, { [this.scale ?? '']: !!this.scale, disabled: this.disabled }), ...this.inheritedAttributes }, h("slot", { key: 'f1fd32c993b1ef9f6d62d6f3affa169c9368df78' }))));
|
|
59
59
|
}
|
|
60
60
|
static get is() { return "lmvz-button"; }
|
|
61
61
|
static get encapsulation() { return "shadow"; }
|