@lmvz-ds/components 0.17.3 → 0.18.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/CHANGELOG.md +11 -0
- package/README.md +3 -0
- package/cjs/{aria-loader-W9Zvc9e-.js → aria-loader-CfFuAbJn.js} +2 -2
- package/cjs/icons-swqMn6s2.js +163 -0
- package/cjs/{index-BNm4PQrX.js → index--7IqZZqn.js} +12179 -516
- package/cjs/index.cjs.js +6 -85
- package/cjs/lmvz-button.cjs.entry.js +3 -3
- package/cjs/lmvz-card.cjs.entry.js +22 -2
- package/cjs/lmvz-components.cjs.js +1 -1
- package/cjs/lmvz-header_2.cjs.entry.js +5 -5
- package/cjs/lmvz-icon.cjs.entry.js +24 -13
- package/cjs/lmvz-input.cjs.entry.js +4 -4
- package/cjs/lmvz-menuitem.cjs.entry.js +2 -2
- package/cjs/lmvz-select.cjs.entry.js +2 -2
- package/cjs/loader.cjs.js +1 -1
- package/cjs/logger-Bn2yoZGP.js +7189 -0
- package/cjs/{reactive-controller-host-B_davRfI.js → reactive-controller-host-CtaVAiYJ.js} +27 -23
- package/collection/api/ds.constants.js +0 -66
- package/collection/collection-manifest.json +1 -1
- package/collection/components/lmvz-button/lmvz-button.js +5 -5
- package/collection/components/lmvz-header/lmvz-header.js +2 -2
- package/collection/components/lmvz-icon/lmvz-icon.css +5 -5
- package/collection/components/lmvz-icon/lmvz-icon.js +49 -18
- package/collection/components/lmvz-input/lmvz-input.js +6 -6
- package/collection/index.js +1 -2
- package/collection/integration/header-integration/header-integration.js +51 -0
- package/collection/utils/aria/aria-validation-controller.js +27 -23
- package/collection/utils/http.js +10 -13
- package/collection/utils/icons/icons-registry.js +34 -0
- package/collection/utils/icons/icons.js +49 -0
- package/collection/utils/icons/icons.unit.js +73 -0
- package/collection/utils/icons/public.js +2 -0
- package/collection/utils/public.js +1 -1
- package/components/index.d.ts +9 -9
- package/components/index.d.ts.bak +10 -10
- package/components/index.js +1 -1
- package/components/lmvz-action.d.ts +1 -1
- package/components/lmvz-action.d.ts.bak +11 -0
- package/components/lmvz-button.d.ts +1 -1
- package/components/lmvz-button.d.ts.bak +11 -0
- package/components/lmvz-button.js +1 -1
- package/components/lmvz-card.d.ts +1 -1
- package/components/lmvz-card.d.ts.bak +11 -0
- package/components/lmvz-card.js +1 -1
- package/components/lmvz-chip.d.ts +1 -1
- package/components/lmvz-chip.d.ts.bak +11 -0
- package/components/lmvz-header.d.ts +1 -1
- package/components/lmvz-header.d.ts.bak +11 -0
- package/components/lmvz-header.js +1 -1
- package/components/lmvz-icon.d.ts +1 -1
- package/components/lmvz-icon.d.ts.bak +11 -0
- package/components/lmvz-icon.js +1 -1
- package/components/lmvz-input.d.ts +1 -1
- package/components/lmvz-input.d.ts.bak +11 -0
- package/components/lmvz-input.js +1 -1
- package/components/lmvz-menuitem.d.ts +1 -1
- package/components/lmvz-menuitem.d.ts.bak +11 -0
- package/components/lmvz-menuitem.js +1 -1
- package/components/lmvz-select.d.ts +1 -1
- package/components/lmvz-select.d.ts.bak +11 -0
- package/components/lmvz-select.js +1 -1
- package/components/{p-Clo63DJF.js → p-CBLAeife.js} +1 -1
- package/components/p-DXOTa5VF.js +12 -0
- package/components/p-fiRXhuXK.js +1 -0
- package/esm/{aria-loader-D9aySMw6.js → aria-loader-BF_AYtbb.js} +2 -2
- package/esm/icons-Ca8oMiRa.js +157 -0
- package/esm/{index-n6jVNpyp.js → index-7Ru1khgk.js} +11972 -309
- package/esm/index.js +4 -80
- package/esm/lmvz-button.entry.js +3 -3
- package/esm/lmvz-card.entry.js +21 -2
- package/esm/lmvz-components.js +1 -1
- package/esm/lmvz-header_2.entry.js +5 -5
- package/esm/lmvz-icon.entry.js +24 -13
- package/esm/lmvz-input.entry.js +4 -4
- package/esm/lmvz-menuitem.entry.js +2 -2
- package/esm/lmvz-select.entry.js +2 -2
- package/esm/loader.js +1 -1
- package/esm/logger-fiRXhuXK.js +6990 -0
- package/esm/{reactive-controller-host-ByKmPKq1.js → reactive-controller-host-sR2jJxNG.js} +27 -23
- package/hydrate/index.js +68 -3832
- package/hydrate/index.mjs +68 -3832
- package/lmvz-components/index.esm.js +1 -1
- package/lmvz-components/lmvz-components.esm.js +1 -1
- package/lmvz-components/{p-986acfd0.entry.js → p-30b99f11.entry.js} +1 -1
- package/lmvz-components/{p-1bda378c.entry.js → p-77007422.entry.js} +1 -1
- package/lmvz-components/{p-CU4XwA2K.js → p-B3dnXEPG.js} +1 -1
- package/lmvz-components/p-Bh2Epkwf.js +1 -0
- package/lmvz-components/{p-DPHHQR5F.js → p-Bkfdgg0T.js} +1 -1
- package/lmvz-components/p-DXOTa5VF.js +12 -0
- package/lmvz-components/p-ae4aeb0a.entry.js +1 -0
- package/lmvz-components/p-b0208356.entry.js +1 -0
- package/lmvz-components/{p-121f74d8.entry.js → p-bfd7db0a.entry.js} +1 -1
- package/lmvz-components/{p-abbfa6aa.entry.js → p-d2e42f6a.entry.js} +1 -1
- package/lmvz-components/{p-b704eca8.entry.js → p-ffa21507.entry.js} +1 -1
- package/lmvz-components/p-fiRXhuXK.js +1 -0
- package/manifest.json +64 -283
- package/package.json +4 -2
- package/types/api/ds.constants.d.ts +22 -1
- package/types/api/ds.types.d.ts +3 -38
- package/types/api/index.d.ts +0 -1
- package/types/components/lmvz-action/lmvz-action.d.ts +1 -0
- package/types/components/lmvz-button/lmvz-button.d.ts +2 -2
- package/types/components/lmvz-card/lmvz-card.d.ts +1 -0
- package/types/components/lmvz-chip/lmvz-chip.d.ts +1 -0
- package/types/components/lmvz-header/lmvz-header.d.ts +1 -0
- package/types/components/lmvz-icon/lmvz-icon.d.ts +4 -1
- package/types/components/lmvz-input/lmvz-input.d.ts +1 -0
- package/types/components/lmvz-menuitem/lmvz-menuitem.d.ts +1 -0
- package/types/components/lmvz-select/lmvz-select.d.ts +1 -0
- package/types/components.d.ts +747 -931
- package/types/index.d.ts +2 -2
- package/types/utils/aria/aria-validation-controller.d.ts +1 -0
- package/types/utils/aria/element-activation-controller.d.ts +1 -0
- package/types/utils/aria/list-keyboard-controller.d.ts +1 -0
- package/types/utils/assets.d.ts +1 -0
- package/types/utils/component.d.ts +2 -4
- package/types/utils/environment.d.ts +1 -0
- package/types/utils/http.d.ts +11 -8
- package/types/utils/http.unit.d.ts +1 -0
- package/types/utils/icons/icons-registry.d.ts +13 -0
- package/types/utils/icons/icons.d.ts +8 -0
- package/types/utils/icons/icons.unit.d.ts +8 -0
- package/types/utils/icons/public.d.ts +4 -0
- package/types/utils/public.d.ts +2 -1
- package/types/utils/reactive-controller-host.d.ts +1 -0
- package/assets/icons/actions.svg +0 -5
- package/assets/icons/adduser.svg +0 -3
- package/assets/icons/alert.svg +0 -3
- package/assets/icons/apple.svg +0 -3
- package/assets/icons/arrow-down.svg +0 -3
- package/assets/icons/arrow-left.svg +0 -3
- package/assets/icons/arrow-right.svg +0 -3
- package/assets/icons/arrow-up.svg +0 -3
- package/assets/icons/book.svg +0 -3
- package/assets/icons/bookmark.svg +0 -3
- package/assets/icons/checkmark.svg +0 -3
- package/assets/icons/chevron-left.svg +0 -3
- package/assets/icons/chevron-right.svg +0 -3
- package/assets/icons/chevron-up.svg +0 -3
- package/assets/icons/close-l.svg +0 -3
- package/assets/icons/close-sm.svg +0 -3
- package/assets/icons/cog.svg +0 -4
- package/assets/icons/computer.svg +0 -3
- package/assets/icons/dashboard.svg +0 -6
- package/assets/icons/delete.svg +0 -3
- package/assets/icons/download.svg +0 -3
- package/assets/icons/edit.svg +0 -3
- package/assets/icons/external.svg +0 -3
- package/assets/icons/facebook.svg +0 -3
- package/assets/icons/favorite.svg +0 -3
- package/assets/icons/filter.svg +0 -3
- package/assets/icons/group.svg +0 -3
- package/assets/icons/hide.svg +0 -3
- package/assets/icons/home.svg +0 -3
- package/assets/icons/info.svg +0 -3
- package/assets/icons/instagram.svg +0 -3
- package/assets/icons/letter.svg +0 -3
- package/assets/icons/linkedin.svg +0 -5
- package/assets/icons/logout.svg +0 -3
- package/assets/icons/map.svg +0 -3
- package/assets/icons/minus.svg +0 -3
- package/assets/icons/navigation.svg +0 -3
- package/assets/icons/plus.svg +0 -3
- package/assets/icons/qr-scan.svg +0 -3
- package/assets/icons/question.svg +0 -10
- package/assets/icons/reader.svg +0 -3
- package/assets/icons/reset.svg +0 -3
- package/assets/icons/school.svg +0 -3
- package/assets/icons/search.svg +0 -3
- package/assets/icons/send.svg +0 -3
- package/assets/icons/settings.svg +0 -3
- package/assets/icons/share.svg +0 -10
- package/assets/icons/shopping-cart.svg +0 -3
- package/assets/icons/show.svg +0 -3
- package/assets/icons/snapchat.svg +0 -3
- package/assets/icons/sort.svg +0 -3
- package/assets/icons/speech-bubble.svg +0 -3
- package/assets/icons/star.svg +0 -3
- package/assets/icons/student.svg +0 -3
- package/assets/icons/upload.svg +0 -3
- package/assets/icons/user.svg +0 -3
- package/assets/icons/warn-circle.svg +0 -3
- package/assets/icons/warn-triangle.svg +0 -3
- package/assets/icons/whatsapp.svg +0 -4
- package/assets/icons/world.svg +0 -10
- package/assets/icons/x.svg +0 -3
- package/assets/icons/youtube.svg +0 -3
- package/cjs/Effect-YVFLBEfy.js +0 -19037
- package/cjs/assets-DxYhun-q.js +0 -26
- package/cjs/icons-DgYgcKGK.js +0 -653
- package/collection/api/index.js +0 -1
- package/collection/assets/icons/actions.svg +0 -5
- package/collection/assets/icons/adduser.svg +0 -3
- package/collection/assets/icons/alert.svg +0 -3
- package/collection/assets/icons/apple.svg +0 -3
- package/collection/assets/icons/arrow-down.svg +0 -3
- package/collection/assets/icons/arrow-left.svg +0 -3
- package/collection/assets/icons/arrow-right.svg +0 -3
- package/collection/assets/icons/arrow-up.svg +0 -3
- package/collection/assets/icons/book.svg +0 -3
- package/collection/assets/icons/bookmark.svg +0 -3
- package/collection/assets/icons/checkmark.svg +0 -3
- package/collection/assets/icons/chevron-left.svg +0 -3
- package/collection/assets/icons/chevron-right.svg +0 -3
- package/collection/assets/icons/chevron-up.svg +0 -3
- package/collection/assets/icons/close-l.svg +0 -3
- package/collection/assets/icons/close-sm.svg +0 -3
- package/collection/assets/icons/cog.svg +0 -4
- package/collection/assets/icons/computer.svg +0 -3
- package/collection/assets/icons/dashboard.svg +0 -6
- package/collection/assets/icons/delete.svg +0 -3
- package/collection/assets/icons/download.svg +0 -3
- package/collection/assets/icons/edit.svg +0 -3
- package/collection/assets/icons/external.svg +0 -3
- package/collection/assets/icons/facebook.svg +0 -3
- package/collection/assets/icons/favorite.svg +0 -3
- package/collection/assets/icons/filter.svg +0 -3
- package/collection/assets/icons/group.svg +0 -3
- package/collection/assets/icons/hide.svg +0 -3
- package/collection/assets/icons/home.svg +0 -3
- package/collection/assets/icons/info.svg +0 -3
- package/collection/assets/icons/instagram.svg +0 -3
- package/collection/assets/icons/letter.svg +0 -3
- package/collection/assets/icons/linkedin.svg +0 -5
- package/collection/assets/icons/logout.svg +0 -3
- package/collection/assets/icons/map.svg +0 -3
- package/collection/assets/icons/minus.svg +0 -3
- package/collection/assets/icons/navigation.svg +0 -3
- package/collection/assets/icons/plus.svg +0 -3
- package/collection/assets/icons/qr-scan.svg +0 -3
- package/collection/assets/icons/question.svg +0 -10
- package/collection/assets/icons/reader.svg +0 -3
- package/collection/assets/icons/reset.svg +0 -3
- package/collection/assets/icons/school.svg +0 -3
- package/collection/assets/icons/search.svg +0 -3
- package/collection/assets/icons/send.svg +0 -3
- package/collection/assets/icons/settings.svg +0 -3
- package/collection/assets/icons/share.svg +0 -10
- package/collection/assets/icons/shopping-cart.svg +0 -3
- package/collection/assets/icons/show.svg +0 -3
- package/collection/assets/icons/snapchat.svg +0 -3
- package/collection/assets/icons/sort.svg +0 -3
- package/collection/assets/icons/speech-bubble.svg +0 -3
- package/collection/assets/icons/star.svg +0 -3
- package/collection/assets/icons/student.svg +0 -3
- package/collection/assets/icons/upload.svg +0 -3
- package/collection/assets/icons/user.svg +0 -3
- package/collection/assets/icons/warn-circle.svg +0 -3
- package/collection/assets/icons/warn-triangle.svg +0 -3
- package/collection/assets/icons/whatsapp.svg +0 -4
- package/collection/assets/icons/world.svg +0 -10
- package/collection/assets/icons/x.svg +0 -3
- package/collection/assets/icons/youtube.svg +0 -3
- package/collection/components/lmvz-icon/icons.js +0 -36
- package/collection/components/lmvz-icon/public.js +0 -1
- package/collection/components/lmvz-icon/test/icons.unit.js +0 -98
- package/collection/integration/header-integration.js +0 -46
- package/collection/utils/effect.js +0 -6
- package/collection/utils/validation/svg.js +0 -24
- package/components/p-CYcWxAp5.js +0 -1
- package/components/p-DHtXOUVf.js +0 -1
- package/components/p-VkiNs_yz.js +0 -12
- package/esm/Effect-DkwJP3kx.js +0 -18828
- package/esm/assets-_WDisN-f.js +0 -23
- package/esm/icons-Crg18Lio.js +0 -649
- package/lmvz-components/p-373a9cbf.entry.js +0 -1
- package/lmvz-components/p-6d5fa8c4.entry.js +0 -1
- package/lmvz-components/p-BT8PQPMJ.js +0 -1
- package/lmvz-components/p-BxiCs9Wn.js +0 -1
- package/lmvz-components/p-CXQcJLbG.js +0 -12
- package/lmvz-components/p-DkwJP3kx.js +0 -1
- package/types/components/lmvz-icon/icons.d.ts +0 -8
- package/types/components/lmvz-icon/public.d.ts +0 -1
- package/types/components/lmvz-icon/test/icons.unit.d.ts +0 -1
- package/types/utils/effect.d.ts +0 -3
- package/types/utils/validation/svg.d.ts +0 -11
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var ariaLoader = require('./aria-loader-
|
|
3
|
+
var ariaLoader = require('./aria-loader-CfFuAbJn.js');
|
|
4
4
|
var index = require('./index-C2yDXRqP.js');
|
|
5
5
|
|
|
6
6
|
class AriaValidationController {
|
|
@@ -59,25 +59,27 @@ class AriaValidationController {
|
|
|
59
59
|
this.host.validationSlot?.addEventListener('slotchange', this.enqueueValidation.bind(this));
|
|
60
60
|
}
|
|
61
61
|
observeVisibilityOnce() {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
62
|
+
{
|
|
63
|
+
window.setTimeout(() => {
|
|
64
|
+
if (!this.host.validationEl)
|
|
65
|
+
return;
|
|
66
|
+
this.visibilityObserver = new IntersectionObserver((entries) => {
|
|
67
|
+
for (const entry of entries) {
|
|
68
|
+
if (entry.target !== this.host.validationEl)
|
|
69
|
+
continue;
|
|
70
|
+
if (!entry.isIntersecting)
|
|
71
|
+
continue;
|
|
72
|
+
this.checkLazyValidation();
|
|
73
|
+
this.discardVisibilityObserver();
|
|
74
|
+
}
|
|
75
|
+
}, {
|
|
76
|
+
root: this.host.validationEl?.parentElement,
|
|
77
|
+
rootMargin: '0px',
|
|
78
|
+
threshold: 0.01,
|
|
79
|
+
});
|
|
80
|
+
this.visibilityObserver.observe(this.host.validationEl);
|
|
78
81
|
});
|
|
79
|
-
|
|
80
|
-
});
|
|
82
|
+
}
|
|
81
83
|
}
|
|
82
84
|
checkLazyValidation() {
|
|
83
85
|
if (!this.elementLoaded)
|
|
@@ -138,10 +140,12 @@ class AriaValidationController {
|
|
|
138
140
|
});
|
|
139
141
|
}
|
|
140
142
|
discardVisibilityObserver() {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
143
|
+
{
|
|
144
|
+
if (!this.visibilityObserver)
|
|
145
|
+
return;
|
|
146
|
+
this.visibilityObserver.disconnect();
|
|
147
|
+
this.visibilityObserver = undefined;
|
|
148
|
+
}
|
|
145
149
|
}
|
|
146
150
|
}
|
|
147
151
|
|
|
@@ -5,69 +5,3 @@ export const textSizes = [...sizes, 'xl'];
|
|
|
5
5
|
export const inputTypes = ['text', 'email', 'password', 'tel', 'url', 'search', 'number'];
|
|
6
6
|
export const iconSizes = [...sizes, 'inherit'];
|
|
7
7
|
export const iconWeights = ['thin', 'medium', 'bold', 'filled'];
|
|
8
|
-
export const iconNames = [
|
|
9
|
-
'Logo',
|
|
10
|
-
'actions',
|
|
11
|
-
'adduser',
|
|
12
|
-
'alert',
|
|
13
|
-
'apple',
|
|
14
|
-
'arrow-down',
|
|
15
|
-
'arrow-left',
|
|
16
|
-
'arrow-right',
|
|
17
|
-
'arrow-up',
|
|
18
|
-
'book',
|
|
19
|
-
'bookmark',
|
|
20
|
-
'checkmark',
|
|
21
|
-
'chevron-down',
|
|
22
|
-
'chevron-left',
|
|
23
|
-
'chevron-right',
|
|
24
|
-
'chevron-up',
|
|
25
|
-
'close-l',
|
|
26
|
-
'close-sm',
|
|
27
|
-
'cog',
|
|
28
|
-
'computer',
|
|
29
|
-
'dashboard',
|
|
30
|
-
'delete',
|
|
31
|
-
'download',
|
|
32
|
-
'edit',
|
|
33
|
-
'external',
|
|
34
|
-
'facebook',
|
|
35
|
-
'favorite',
|
|
36
|
-
'filter',
|
|
37
|
-
'group',
|
|
38
|
-
'hide',
|
|
39
|
-
'home',
|
|
40
|
-
'info',
|
|
41
|
-
'instagram',
|
|
42
|
-
'letter',
|
|
43
|
-
'linkedin',
|
|
44
|
-
'logout',
|
|
45
|
-
'map',
|
|
46
|
-
'minus',
|
|
47
|
-
'navigation',
|
|
48
|
-
'plus',
|
|
49
|
-
'qr-scan',
|
|
50
|
-
'question',
|
|
51
|
-
'reader',
|
|
52
|
-
'reset',
|
|
53
|
-
'school',
|
|
54
|
-
'search',
|
|
55
|
-
'send',
|
|
56
|
-
'settings',
|
|
57
|
-
'share',
|
|
58
|
-
'shopping-cart',
|
|
59
|
-
'show',
|
|
60
|
-
'snapchat',
|
|
61
|
-
'sort',
|
|
62
|
-
'speech-bubble',
|
|
63
|
-
'star',
|
|
64
|
-
'student',
|
|
65
|
-
'upload',
|
|
66
|
-
'user',
|
|
67
|
-
'warn-circle',
|
|
68
|
-
'warn-triangle',
|
|
69
|
-
'whatsapp',
|
|
70
|
-
'world',
|
|
71
|
-
'x',
|
|
72
|
-
'youtube',
|
|
73
|
-
];
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"components/lmvz-input/lmvz-input.js",
|
|
10
10
|
"components/lmvz-menuitem/lmvz-menuitem.js",
|
|
11
11
|
"components/lmvz-select/lmvz-select.js",
|
|
12
|
-
"integration/header-integration.js"
|
|
12
|
+
"integration/header-integration/header-integration.js"
|
|
13
13
|
],
|
|
14
14
|
"mixins": [],
|
|
15
15
|
"compiler": {
|
|
@@ -57,7 +57,7 @@ export class LmvzButton extends ReactiveControllerHost {
|
|
|
57
57
|
};
|
|
58
58
|
render() {
|
|
59
59
|
this.renderHiddenButton();
|
|
60
|
-
return (h(Host, { key: '
|
|
60
|
+
return (h(Host, { key: '2897a943aca62561b0e78b5b3f2b7b85d76f4e78', "aria-disabled": this.disabled ? 'true' : null }, h("button", { key: '92555224e33b00fb2602fdb2d19075145c0d9097', ref: (e) => (this.validationEl = e), disabled: this.disabled, class: classNames(this.variant, { [this.scale ?? '']: !!this.scale, disabled: this.disabled }), ...this.inheritedAttributes }, h("slot", { key: '637a03a73db84a63bf1e3165d57c474151f87783' }))));
|
|
61
61
|
}
|
|
62
62
|
static get is() { return "lmvz-button"; }
|
|
63
63
|
static get encapsulation() { return "shadow"; }
|
|
@@ -104,7 +104,7 @@ export class LmvzButton extends ReactiveControllerHost {
|
|
|
104
104
|
"Button": {
|
|
105
105
|
"location": "import",
|
|
106
106
|
"path": "../../api",
|
|
107
|
-
"id": "src/api/index.ts::Button",
|
|
107
|
+
"id": "src/api/index.d.ts::Button",
|
|
108
108
|
"referenceLocation": "Button"
|
|
109
109
|
}
|
|
110
110
|
}
|
|
@@ -134,7 +134,7 @@ export class LmvzButton extends ReactiveControllerHost {
|
|
|
134
134
|
"Button": {
|
|
135
135
|
"location": "import",
|
|
136
136
|
"path": "../../api",
|
|
137
|
-
"id": "src/api/index.ts::Button",
|
|
137
|
+
"id": "src/api/index.d.ts::Button",
|
|
138
138
|
"referenceLocation": "Button"
|
|
139
139
|
}
|
|
140
140
|
}
|
|
@@ -206,8 +206,8 @@ export class LmvzButton extends ReactiveControllerHost {
|
|
|
206
206
|
"references": {
|
|
207
207
|
"FormRef": {
|
|
208
208
|
"location": "import",
|
|
209
|
-
"path": "../../
|
|
210
|
-
"id": "src/
|
|
209
|
+
"path": "../../api",
|
|
210
|
+
"id": "src/api/index.d.ts::FormRef",
|
|
211
211
|
"referenceLocation": "FormRef"
|
|
212
212
|
}
|
|
213
213
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { h, Host } from "@stencil/core";
|
|
2
|
-
import logo from "../../assets/icons/Logo.svg";
|
|
3
2
|
import { AriaValidationController } from "../../utils/aria/aria-validation-controller";
|
|
4
3
|
import { ListKeyboardNavigationController } from "../../utils/aria/list-keyboard-controller";
|
|
5
4
|
import { ReactiveControllerHost } from "../../utils/reactive-controller-host";
|
|
5
|
+
import logo from "../../assets/icons/Logo.svg";
|
|
6
6
|
export class LmvzHeader extends ReactiveControllerHost {
|
|
7
7
|
el;
|
|
8
8
|
get validationEl() {
|
|
@@ -84,7 +84,7 @@ export class LmvzHeader extends ReactiveControllerHost {
|
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
86
|
render() {
|
|
87
|
-
return (h(Host, { key: '
|
|
87
|
+
return (h(Host, { key: '96626b8d29cdefc8ed97a7bb68a689ff6155d2c7', onFocus: this.delegateFocus.bind(this) }, h("div", { key: '41ac004bdc6c2c6a1f8e3d293f6b0c3727c27aff', class: "brand" }, h("slot", { key: '8e33150a54c8b8070b22db51c8584e06dd06dd5c', name: "brand" }, h("img", { key: '889955c7335d64f2c8d0b2e032db3dd64a27cbd2', id: "fallback-logo-lmvz", src: logo, alt: "Lehrmittelverlag Z\u00FCrich" }))), h("nav", { key: '37b6ef465d320c325e0c830bcc91ea3a575d2690', "aria-label": "Hauptnavigation" }, h("div", { key: '7a0ec1a78d6eee3b3e37f55f872806b0791c2156', role: "menubar", class: "primary-menubar" }, h("slot", { key: 'e0403633c6acd137c94b1552cc7f08e3549550d3', name: "nav-primary", ref: (el) => (this.primarySlot = el) }), h("div", { key: '4e377f38a0b94a766f9001174729e5763fa0a194', role: "menu", id: "nav-secondary", class: "secondary-menubar", hidden: !this.lmvzActiveNav, ref: (el) => (this.secondaryNav = el) }, h("slot", { key: '368e461f239498c706a3c9bb27a7b05de2b79cac', name: this.secondarySlotName, ref: (el) => (this.secondarySlot = el) })))), h("div", { key: '8ffaf8d6f1254644b48dc0a40b9f552339ecc690', class: "actions" }, h("slot", { key: '5b679885e4fa111d66e993458ab7f5092d8179d4', name: "actions" }))));
|
|
88
88
|
}
|
|
89
89
|
static get is() { return "lmvz-header"; }
|
|
90
90
|
static get encapsulation() { return "shadow"; }
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
display: block;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
svg
|
|
16
|
+
svg path {
|
|
17
17
|
stroke: var(--lmvz-icon-color);
|
|
18
18
|
fill: none;
|
|
19
19
|
}
|
|
@@ -55,27 +55,27 @@
|
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
:host([weight='light']) {
|
|
58
|
-
svg
|
|
58
|
+
svg path {
|
|
59
59
|
stroke-width: 1;
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
:host([weight='medium']) {
|
|
64
|
-
svg
|
|
64
|
+
svg path {
|
|
65
65
|
/* TODO: use semantic token */
|
|
66
66
|
stroke-width: 1.5;
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
:host([weight='bold']) {
|
|
71
|
-
svg
|
|
71
|
+
svg path {
|
|
72
72
|
/* TODO: use semantic token */
|
|
73
73
|
stroke-width: 2;
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
:host([weight='filled']) {
|
|
78
|
-
svg
|
|
78
|
+
svg path {
|
|
79
79
|
stroke-width: 2;
|
|
80
80
|
fill: var(--lmvz-icon-color);
|
|
81
81
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import { isValidSVG } from "@lmvz-ds/lib-ts/validation/svg.js";
|
|
1
2
|
import { Build, h, Host } from "@stencil/core";
|
|
2
|
-
import { Effect } from "effect";
|
|
3
3
|
import { AriaValidationController } from "../../utils/aria/aria-validation-controller";
|
|
4
|
+
import { resolveIconSvg } from "../../utils/icons/icons";
|
|
4
5
|
import { ReactiveControllerHost } from "../../utils/reactive-controller-host";
|
|
5
|
-
import { emptyDefaultSvg, fetchIconSvg } from "./icons";
|
|
6
6
|
export class LmvzIcon extends ReactiveControllerHost {
|
|
7
7
|
intersectionObserver;
|
|
8
8
|
ariaValidationController = new AriaValidationController(this);
|
|
@@ -11,6 +11,7 @@ export class LmvzIcon extends ReactiveControllerHost {
|
|
|
11
11
|
icon;
|
|
12
12
|
weight = 'medium';
|
|
13
13
|
size = 'md';
|
|
14
|
+
iconset;
|
|
14
15
|
iconData;
|
|
15
16
|
visible = false;
|
|
16
17
|
ariaLabel;
|
|
@@ -29,18 +30,25 @@ export class LmvzIcon extends ReactiveControllerHost {
|
|
|
29
30
|
super.connectedCallback();
|
|
30
31
|
}
|
|
31
32
|
disconnectedCallback() {
|
|
32
|
-
if (this.intersectionObserver) {
|
|
33
|
+
if (this.intersectionObserver && typeof this.intersectionObserver.disconnect === 'function') {
|
|
33
34
|
this.intersectionObserver.disconnect();
|
|
34
|
-
this.intersectionObserver = undefined;
|
|
35
35
|
}
|
|
36
|
+
this.intersectionObserver = undefined;
|
|
36
37
|
super.disconnectedCallback();
|
|
37
38
|
}
|
|
38
39
|
async loadIconPathData() {
|
|
39
|
-
const { icon, visible } = this;
|
|
40
|
+
const { icon, iconset, visible } = this;
|
|
40
41
|
if (!Build.isBrowser || !icon || !visible) {
|
|
41
42
|
return;
|
|
42
43
|
}
|
|
43
|
-
|
|
44
|
+
if (isValidSVG(icon)) {
|
|
45
|
+
this.iconData = icon;
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
this.iconData = await resolveIconSvg({
|
|
49
|
+
icon,
|
|
50
|
+
iconset,
|
|
51
|
+
});
|
|
44
52
|
}
|
|
45
53
|
componentDidRender() {
|
|
46
54
|
this.validationEl = this.el.querySelector('svg');
|
|
@@ -48,7 +56,7 @@ export class LmvzIcon extends ReactiveControllerHost {
|
|
|
48
56
|
super.componentDidRender();
|
|
49
57
|
}
|
|
50
58
|
render() {
|
|
51
|
-
return h(Host, { key: '
|
|
59
|
+
return h(Host, { key: '6022ed0e30bcdd13455ccaae65784ac70abcb349', role: "img", "aria-hidden": `${this.ariaHidden}`, innerHTML: this.iconData });
|
|
52
60
|
}
|
|
53
61
|
waitUntilVisible(callback, rootMargin = 50) {
|
|
54
62
|
if (!Build.isBrowser || typeof window === 'undefined' || !window.IntersectionObserver) {
|
|
@@ -58,7 +66,9 @@ export class LmvzIcon extends ReactiveControllerHost {
|
|
|
58
66
|
this.intersectionObserver = new IntersectionObserver((entries) => {
|
|
59
67
|
entries.some((entry) => {
|
|
60
68
|
if (entry.isIntersecting) {
|
|
61
|
-
this.intersectionObserver
|
|
69
|
+
if (this.intersectionObserver && typeof this.intersectionObserver.disconnect === 'function') {
|
|
70
|
+
this.intersectionObserver.disconnect();
|
|
71
|
+
}
|
|
62
72
|
this.intersectionObserver = undefined;
|
|
63
73
|
callback();
|
|
64
74
|
return true;
|
|
@@ -80,21 +90,20 @@ export class LmvzIcon extends ReactiveControllerHost {
|
|
|
80
90
|
"$": ["lmvz-icon.css"]
|
|
81
91
|
};
|
|
82
92
|
}
|
|
83
|
-
static get assetsDirs() { return ["../../assets/icons"]; }
|
|
84
93
|
static get properties() {
|
|
85
94
|
return {
|
|
86
95
|
"icon": {
|
|
87
96
|
"type": "string",
|
|
88
97
|
"mutable": false,
|
|
89
98
|
"complexType": {
|
|
90
|
-
"original": "
|
|
91
|
-
"resolved": "
|
|
99
|
+
"original": "SVGString | string",
|
|
100
|
+
"resolved": "string | string & Brand<\"SVG\">",
|
|
92
101
|
"references": {
|
|
93
|
-
"
|
|
102
|
+
"SVGString": {
|
|
94
103
|
"location": "import",
|
|
95
|
-
"path": "
|
|
96
|
-
"id": "
|
|
97
|
-
"referenceLocation": "
|
|
104
|
+
"path": "@lmvz-ds/lib-ts/validation/SVGString.d.ts",
|
|
105
|
+
"id": "../../lib/ts/dist/validation/SVGString.d.ts::SVGString",
|
|
106
|
+
"referenceLocation": "SVGString"
|
|
98
107
|
}
|
|
99
108
|
}
|
|
100
109
|
},
|
|
@@ -102,7 +111,7 @@ export class LmvzIcon extends ReactiveControllerHost {
|
|
|
102
111
|
"optional": false,
|
|
103
112
|
"docs": {
|
|
104
113
|
"tags": [],
|
|
105
|
-
"text": "
|
|
114
|
+
"text": "Required\n\nEither a valid name from a registered iconset, or the icon's SVG content (inline).\n\nWill be checked against the (default) iconset."
|
|
106
115
|
},
|
|
107
116
|
"getter": false,
|
|
108
117
|
"setter": false,
|
|
@@ -119,7 +128,7 @@ export class LmvzIcon extends ReactiveControllerHost {
|
|
|
119
128
|
"Icon": {
|
|
120
129
|
"location": "import",
|
|
121
130
|
"path": "../../api",
|
|
122
|
-
"id": "src/api/index.ts::Icon",
|
|
131
|
+
"id": "src/api/index.d.ts::Icon",
|
|
123
132
|
"referenceLocation": "Icon"
|
|
124
133
|
}
|
|
125
134
|
}
|
|
@@ -146,7 +155,7 @@ export class LmvzIcon extends ReactiveControllerHost {
|
|
|
146
155
|
"Icon": {
|
|
147
156
|
"location": "import",
|
|
148
157
|
"path": "../../api",
|
|
149
|
-
"id": "src/api/index.ts::Icon",
|
|
158
|
+
"id": "src/api/index.d.ts::Icon",
|
|
150
159
|
"referenceLocation": "Icon"
|
|
151
160
|
}
|
|
152
161
|
}
|
|
@@ -163,6 +172,25 @@ export class LmvzIcon extends ReactiveControllerHost {
|
|
|
163
172
|
"attribute": "size",
|
|
164
173
|
"defaultValue": "'md'"
|
|
165
174
|
},
|
|
175
|
+
"iconset": {
|
|
176
|
+
"type": "string",
|
|
177
|
+
"mutable": false,
|
|
178
|
+
"complexType": {
|
|
179
|
+
"original": "string",
|
|
180
|
+
"resolved": "string | undefined",
|
|
181
|
+
"references": {}
|
|
182
|
+
},
|
|
183
|
+
"required": false,
|
|
184
|
+
"optional": true,
|
|
185
|
+
"docs": {
|
|
186
|
+
"tags": [],
|
|
187
|
+
"text": "Optional custom icon iconset id. Must reference a registered custom iconset by its exported name."
|
|
188
|
+
},
|
|
189
|
+
"getter": false,
|
|
190
|
+
"setter": false,
|
|
191
|
+
"reflect": true,
|
|
192
|
+
"attribute": "iconset"
|
|
193
|
+
},
|
|
166
194
|
"ariaLabel": {
|
|
167
195
|
"type": "string",
|
|
168
196
|
"mutable": false,
|
|
@@ -195,6 +223,9 @@ export class LmvzIcon extends ReactiveControllerHost {
|
|
|
195
223
|
return [{
|
|
196
224
|
"propName": "icon",
|
|
197
225
|
"methodName": "loadIconPathData"
|
|
226
|
+
}, {
|
|
227
|
+
"propName": "iconset",
|
|
228
|
+
"methodName": "loadIconPathData"
|
|
198
229
|
}];
|
|
199
230
|
}
|
|
200
231
|
}
|
|
@@ -150,9 +150,9 @@ export class LmvzInput extends ReactiveControllerHost {
|
|
|
150
150
|
render() {
|
|
151
151
|
const hasValue = Boolean(this.value);
|
|
152
152
|
const shouldFloatLabel = hasValue || Boolean(this.placeholder);
|
|
153
|
-
return (h("div", { key: '
|
|
153
|
+
return (h("div", { key: '3f14adbe321717cdfe305dc623940acb8be194f8', class: classNames('input-container', {
|
|
154
154
|
'interaction-filled': hasValue,
|
|
155
|
-
}) }, h("div", { key: '
|
|
155
|
+
}) }, h("div", { key: '2cc559cc0ff4da1f8418c510188bcbb93b42da02', class: "input-wrapper" }, h("slot", { key: 'b41a5179b6d8651a9b60777718f92b32f80fda89', name: "before-input" }), h("div", { key: '4ac81c8d277d6592e1d84f4b3abfffef03843a9c', class: "label-input-group" }, h("label", { key: '80b272c3b069a246dcbf26812d2281e436c6cdfa', htmlFor: this.inputId, class: classNames({ floating: shouldFloatLabel }) }, this.label, this.required && (h("span", { key: 'eb00d3be1a3eddd0661df74cfb2d4b95c75f5eea', class: "required-indicator", "aria-hidden": "true" }, ' ', "*"))), h("input", { key: '6192c875976e7d21003de29badabd5a910ed0c17', 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 })), h("slot", { key: '9a908984ecebead7f08bbd88ed57fa8f30a69b67', name: "after-input" })), h("div", { key: 'abe658929d955042358ff24ea2267ae5b7b3484d', id: this.helperId, role: "status" }, this.helperText || null), h("div", { key: '61c689c7d8ab3bbb7c62dc7a227c35441b4bbbd8', id: this.errorId, role: "alert" }, (this.showErrorMessage && this.errorMessage) || null)));
|
|
156
156
|
}
|
|
157
157
|
static get is() { return "lmvz-input"; }
|
|
158
158
|
static get encapsulation() { return "scoped"; }
|
|
@@ -343,7 +343,7 @@ export class LmvzInput extends ReactiveControllerHost {
|
|
|
343
343
|
"Input": {
|
|
344
344
|
"location": "import",
|
|
345
345
|
"path": "../../api",
|
|
346
|
-
"id": "src/api/index.ts::Input",
|
|
346
|
+
"id": "src/api/index.d.ts::Input",
|
|
347
347
|
"referenceLocation": "Input"
|
|
348
348
|
}
|
|
349
349
|
}
|
|
@@ -392,7 +392,7 @@ export class LmvzInput extends ReactiveControllerHost {
|
|
|
392
392
|
"Input": {
|
|
393
393
|
"location": "import",
|
|
394
394
|
"path": "../../api",
|
|
395
|
-
"id": "src/api/index.ts::Input",
|
|
395
|
+
"id": "src/api/index.d.ts::Input",
|
|
396
396
|
"referenceLocation": "Input"
|
|
397
397
|
}
|
|
398
398
|
}
|
|
@@ -418,7 +418,7 @@ export class LmvzInput extends ReactiveControllerHost {
|
|
|
418
418
|
"Input": {
|
|
419
419
|
"location": "import",
|
|
420
420
|
"path": "../../api",
|
|
421
|
-
"id": "src/api/index.ts::Input",
|
|
421
|
+
"id": "src/api/index.d.ts::Input",
|
|
422
422
|
"referenceLocation": "Input"
|
|
423
423
|
}
|
|
424
424
|
}
|
|
@@ -466,7 +466,7 @@ export class LmvzInput extends ReactiveControllerHost {
|
|
|
466
466
|
"Input": {
|
|
467
467
|
"location": "import",
|
|
468
468
|
"path": "../../api",
|
|
469
|
-
"id": "src/api/index.ts::Input",
|
|
469
|
+
"id": "src/api/index.d.ts::Input",
|
|
470
470
|
"referenceLocation": "Input"
|
|
471
471
|
}
|
|
472
472
|
}
|
package/collection/index.js
CHANGED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { LmvzOnDemandProvider } from "@lmvz-ds/icons/on-demand";
|
|
2
|
+
import { h, Host } from "@stencil/core";
|
|
3
|
+
import { registerIconProvider, typedIconFromSet } from "../../utils/public";
|
|
4
|
+
export class HeaderIntegration {
|
|
5
|
+
activeNav;
|
|
6
|
+
constructor() {
|
|
7
|
+
registerIconProvider('lmvz', new LmvzOnDemandProvider());
|
|
8
|
+
}
|
|
9
|
+
activate(event) {
|
|
10
|
+
const target = event.currentTarget;
|
|
11
|
+
const navItem = target.closest('[slot="nav-primary"]');
|
|
12
|
+
if (!navItem)
|
|
13
|
+
return;
|
|
14
|
+
const navId = navItem.id;
|
|
15
|
+
if (!navId) {
|
|
16
|
+
console.warn('Nav item does not have an id:', navItem);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
console.log('Activating nav item:', navId);
|
|
20
|
+
this.activeNav = navId;
|
|
21
|
+
}
|
|
22
|
+
render() {
|
|
23
|
+
return (h(Host, { key: '0a3908f0f3d84284afd64773a256b4fda818fd0c' }, h("lmvz-header", { key: '618e855ba5dda9056d55b82a4b162c730abd4a28', lmvzActiveNav: this.activeNav }, h("lmvz-menuitem", { key: 'f65954cceeb98a5a6e09af7d8d0fd3997765d329', slot: "nav-primary", id: "lehrmittel", onLmvzActivation: this.activate.bind(this) }, h("a", { key: '6d826ec9d509eba7d698bb7cc0e18b542856d824', href: "#" }, "Lehrmittel")), h("lmvz-menuitem", { key: '45ebdab853640539643f78c8e070a569bb16348f', slot: "nav-primary", id: "verwaltung", onLmvzActivation: this.activate.bind(this) }, h("a", { key: '1bbb9d73614f01054d592e63fa455153a86f9508', href: "#" }, "Verwaltung")), h("lmvz-menuitem", { key: '3b60360fb264ada58cb8667e860a9009d26dafad', slot: "connect-nav-lehrmittel" }, h("lmvz-icon", { key: 'dd01522ebe1e4d110f645476ba696864f546247e', ...typedIconFromSet('lmvz', 'edit') }), "Deutsch 7"), h("lmvz-menuitem", { key: '11e04037ea5d1f14ff8b3c166cc212554c736d06', slot: "connect-nav-lehrmittel" }, h("lmvz-icon", { key: '32d13093b3c42b125cdb6ca8d8e51da8f58856d3', ...typedIconFromSet('lmvz', 'edit') }), "Mathe 2"), h("lmvz-menuitem", { key: '842a7ac6e7d5205483b93b06bb50e8abf8bb22f8', slot: "connect-nav-verwaltung" }, h("lmvz-icon", { key: '60749db9c1706e50661630786bd3415f5cc315be', ...typedIconFromSet('lmvz', 'settings') }), "iwas mit Verwaltung"), h("lmvz-menuitem", { key: 'e81697a20343fbba1d2e7e378c83b19543222b53', slot: "connect-nav-verwaltung", "aria-label": "Einstellungen" }, h("lmvz-icon", { key: '789a3e28b7ba0d1f24937866fa1f82d4c55bd48f', ...typedIconFromSet('lmvz', 'settings') })), h("lmvz-button", { key: '2239f72674551d5fb495d4a79e3fcd53a126f6c1', slot: "actions", "aria-label": "Benutzerkonto" }, h("lmvz-icon", { key: '64f2ca4135431efac7702b4dd1e59fdfd1ed733d', ...typedIconFromSet('lmvz', 'user'), size: "lg" })))));
|
|
24
|
+
}
|
|
25
|
+
static get is() { return "header-integration"; }
|
|
26
|
+
static get encapsulation() { return "shadow"; }
|
|
27
|
+
static get styles() { return ".active button {\n background-color: var(--lmvz-semantic-color-status-selected);\n }"; }
|
|
28
|
+
static get properties() {
|
|
29
|
+
return {
|
|
30
|
+
"activeNav": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"mutable": true,
|
|
33
|
+
"complexType": {
|
|
34
|
+
"original": "string",
|
|
35
|
+
"resolved": "string | undefined",
|
|
36
|
+
"references": {}
|
|
37
|
+
},
|
|
38
|
+
"required": false,
|
|
39
|
+
"optional": true,
|
|
40
|
+
"docs": {
|
|
41
|
+
"tags": [],
|
|
42
|
+
"text": ""
|
|
43
|
+
},
|
|
44
|
+
"getter": false,
|
|
45
|
+
"setter": false,
|
|
46
|
+
"reflect": false,
|
|
47
|
+
"attribute": "active-nav"
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ARIA_VALIDATION_RUNTIME_CHANGED_EVENT, enableAriaValidation, isAriaValidationEnabled, queueValidation, useVerboseLogging, } from "@lmvz-ds/aria-validation";
|
|
2
2
|
import { Build } from "@stencil/core";
|
|
3
|
-
if (Build.isDev) {
|
|
3
|
+
if (Build.isDev && Build.isBrowser) {
|
|
4
4
|
enableAriaValidation();
|
|
5
5
|
}
|
|
6
6
|
export class AriaValidationController {
|
|
@@ -59,25 +59,27 @@ export class AriaValidationController {
|
|
|
59
59
|
this.host.validationSlot?.addEventListener('slotchange', this.enqueueValidation.bind(this));
|
|
60
60
|
}
|
|
61
61
|
observeVisibilityOnce() {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
62
|
+
if (Build.isBrowser) {
|
|
63
|
+
window.setTimeout(() => {
|
|
64
|
+
if (!this.host.validationEl)
|
|
65
|
+
return;
|
|
66
|
+
this.visibilityObserver = new IntersectionObserver((entries) => {
|
|
67
|
+
for (const entry of entries) {
|
|
68
|
+
if (entry.target !== this.host.validationEl)
|
|
69
|
+
continue;
|
|
70
|
+
if (!entry.isIntersecting)
|
|
71
|
+
continue;
|
|
72
|
+
this.checkLazyValidation();
|
|
73
|
+
this.discardVisibilityObserver();
|
|
74
|
+
}
|
|
75
|
+
}, {
|
|
76
|
+
root: this.host.validationEl?.parentElement,
|
|
77
|
+
rootMargin: '0px',
|
|
78
|
+
threshold: 0.01,
|
|
79
|
+
});
|
|
80
|
+
this.visibilityObserver.observe(this.host.validationEl);
|
|
78
81
|
});
|
|
79
|
-
|
|
80
|
-
});
|
|
82
|
+
}
|
|
81
83
|
}
|
|
82
84
|
checkLazyValidation() {
|
|
83
85
|
if (!this.elementLoaded)
|
|
@@ -138,9 +140,11 @@ export class AriaValidationController {
|
|
|
138
140
|
});
|
|
139
141
|
}
|
|
140
142
|
discardVisibilityObserver() {
|
|
141
|
-
if (
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
143
|
+
if (Build.isBrowser) {
|
|
144
|
+
if (!this.visibilityObserver)
|
|
145
|
+
return;
|
|
146
|
+
this.visibilityObserver.disconnect();
|
|
147
|
+
this.visibilityObserver = undefined;
|
|
148
|
+
}
|
|
145
149
|
}
|
|
146
150
|
}
|
package/collection/utils/http.js
CHANGED
|
@@ -1,24 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export class FetchError extends
|
|
1
|
+
import { Micro } from "effect";
|
|
2
|
+
export class FetchError extends Micro.TaggedError('FetchError') {
|
|
3
3
|
}
|
|
4
|
-
export class NotFoundError extends
|
|
4
|
+
export class NotFoundError extends Micro.TaggedError('NotFoundError') {
|
|
5
5
|
}
|
|
6
|
-
export const httpClient = (input, init) =>
|
|
7
|
-
const response = yield*
|
|
6
|
+
export const httpClient = (input, init) => Micro.gen(function* () {
|
|
7
|
+
const response = yield* Micro.tryPromise({
|
|
8
8
|
try: () => fetch(input, init),
|
|
9
|
-
catch: error => new FetchError({ cause: error }),
|
|
9
|
+
catch: (error) => new FetchError({ cause: error }),
|
|
10
10
|
});
|
|
11
11
|
if (response.status === 404) {
|
|
12
|
-
return yield*
|
|
12
|
+
return yield* Micro.fail(new NotFoundError({ url: response.url }));
|
|
13
13
|
}
|
|
14
14
|
return response;
|
|
15
15
|
});
|
|
16
|
-
export class ResponseTextError extends
|
|
17
|
-
constructor(error) {
|
|
18
|
-
super(new Error(`Failed to read response text`, { cause: error }));
|
|
19
|
-
}
|
|
16
|
+
export class ResponseTextError extends Micro.TaggedError('ResponseTextError') {
|
|
20
17
|
}
|
|
21
|
-
export const responseAsText = (res) =>
|
|
18
|
+
export const responseAsText = (res) => Micro.tryPromise({
|
|
22
19
|
try: () => res.text(),
|
|
23
|
-
catch: error => new ResponseTextError(error),
|
|
20
|
+
catch: (error) => new ResponseTextError({ message: 'Failed to read response text', cause: error }),
|
|
24
21
|
});
|