@kirbydesign/extensions-angular 4.1.0 → 4.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/spot-illustrations/money-coinstack.graphline.topcoin.bars.medium.svg +5 -0
- package/assets/spot-illustrations/money-notes.shield.heart.circle.medium.svg +5 -0
- package/fesm2022/kirbydesign-extensions-angular-image-banner.mjs +6 -6
- package/fesm2022/kirbydesign-extensions-angular-localization.mjs +30 -30
- package/fesm2022/kirbydesign-extensions-angular-sidebar-menu.mjs +52 -41
- package/fesm2022/kirbydesign-extensions-angular-sidebar-menu.mjs.map +1 -1
- package/fesm2022/kirbydesign-extensions-angular-skeleton-loader.mjs +3 -3
- package/fesm2022/kirbydesign-extensions-angular-spot-illustration.mjs +9 -3
- package/fesm2022/kirbydesign-extensions-angular-spot-illustration.mjs.map +1 -1
- package/image-banner/package.json +4 -0
- package/localization/package.json +4 -0
- package/package.json +1 -1
- package/sidebar-menu/package.json +4 -0
- package/skeleton-loader/package.json +4 -0
- package/spot-illustration/package.json +4 -0
- package/types/kirbydesign-extensions-angular-sidebar-menu.d.ts +2 -1
- package/types/kirbydesign-extensions-angular-spot-illustration.d.ts +10 -0
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg width="56" height="56" viewBox="0 0 56 56" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path part="background" d="M49.0098 28.291C50.6698 28.291 52.0098 29.631 52.0098 31.291V46.1504C52.0098 47.8104 50.6698 49.1504 49.0098 49.1504H41.9199C40.26 49.1503 38.9199 47.8103 38.9199 46.1504V39.5205C42.1999 40.1705 45.5404 40.5301 48.9404 40.5801H48.9502C49.3601 40.5801 49.7 40.2507 49.7002 39.8408C49.7102 39.4308 49.38 39.0801 48.96 39.0801C45.5501 39.0301 42.2001 38.661 38.9102 38.001V31.3008C38.9102 29.6408 40.2502 28.3008 41.9102 28.3008H49L49.0098 28.291Z M14.0996 10.1504C15.7596 10.1504 17.0996 11.4904 17.0996 13.1504V28.2002C13.6097 25.5803 10.4296 22.54 7.63965 19.1602C7.36961 18.8404 6.89997 18.8006 6.58008 19.0605C6.26011 19.3306 6.22048 19.8001 6.48047 20.1201C9.58038 23.88 13.16 27.2101 17.0898 30.04V40.0303C15.8999 39.5903 14.4297 39.3408 12.7998 39.3408C8.6699 39.3409 5.5498 40.9509 5.5498 43.0908V48.7705C4.62986 48.2605 4 47.2901 4 46.1602V13.1602C4.00013 11.5003 5.34008 10.1602 7 10.1602H14.0898L14.0996 10.1504Z M34.5498 38.4902V46.1602C34.5498 47.1401 34.0793 47.99 33.3594 48.54V38.1504C33.7594 38.2704 34.1498 38.3802 34.5498 38.4902Z M31.541 19.2305C33.201 19.2305 34.541 20.5705 34.541 22.2305V36.9209C34.1211 36.8009 33.7011 36.6807 33.2812 36.5508C32.8113 34.6908 29.8911 33.3409 26.1113 33.3408C25.8814 33.3408 25.6411 33.3504 25.4111 33.3604C24.0612 32.6804 22.7509 31.9306 21.4609 31.1406V22.2305C21.4609 20.5705 22.8009 19.2305 24.4609 19.2305H31.541Z" fill="silver"/>
|
|
3
|
+
<path part="outline" fill-rule="evenodd" clip-rule="evenodd" d="M6.5498 19.0399C6.86975 18.78 7.34936 18.8197 7.60938 19.1395C12.4894 25.0695 18.5899 29.9299 25.3799 33.3299C25.6096 33.31 25.8394 33.3094 26.0791 33.3094C29.849 33.3094 32.7799 34.6594 33.25 36.5194C38.2899 38.1193 43.55 38.9696 48.9199 39.0496C49.3396 39.0598 49.6591 39.3996 49.6592 39.8094C49.6492 40.2194 49.3192 40.5496 48.9092 40.5496H48.8994C43.5595 40.4696 38.3393 39.6492 33.3193 38.1092V49.16C33.219 51.2498 30.1389 52.8094 26.0791 52.8094C23.4794 52.8093 21.2797 52.1696 20.0098 51.1698C19.9097 53.2497 16.8995 54.8094 12.7695 54.8094C8.63953 54.8094 5.51953 53.1994 5.51953 51.0594V43.0594C5.51976 40.9195 8.63968 39.3094 12.7695 39.3094C15.3592 39.3094 17.559 39.9395 18.8291 40.9393V37.0594C18.8293 35.5295 20.4296 34.2695 22.8594 33.6795C16.6294 30.2595 11.0192 25.6394 6.44922 20.0994C6.17947 19.7794 6.22989 19.2998 6.5498 19.0399ZM18.5195 49.3895C17.2195 50.2695 15.1695 50.8094 12.7695 50.8094C10.3695 50.8094 8.31953 50.2595 7.01953 49.3895V51.0594C7.01953 51.9994 9.20953 53.3094 12.7695 53.3094C16.3295 53.3094 18.5195 51.9994 18.5195 51.0594V49.3895ZM31.8193 47.3895C30.5193 48.2695 28.4693 48.8094 26.0693 48.8094C23.6694 48.8094 21.6193 48.2595 20.3193 47.3895V49.0594C20.3193 49.9994 22.5095 51.3094 26.0693 51.3094C29.6293 51.3094 31.8193 49.9994 31.8193 49.0594V47.3895ZM18.5195 45.3895C17.2195 46.2695 15.1695 46.8094 12.7695 46.8094C10.3695 46.8094 8.31953 46.2595 7.01953 45.3895V47.0594C7.01953 47.9994 9.20953 49.3094 12.7695 49.3094C16.3295 49.3094 18.5195 47.9994 18.5195 47.0594V45.3895ZM31.8193 43.3895C30.5193 44.2695 28.4693 44.8094 26.0693 44.8094C23.6694 44.8094 21.6193 44.2595 20.3193 43.3895V45.0594C20.3193 45.9994 22.5095 47.3094 26.0693 47.3094C29.6293 47.3094 31.8193 45.9994 31.8193 45.0594V43.3895ZM12.7695 40.8094C9.20983 40.8094 7.0199 42.1194 7.01953 43.0594C7.01953 43.9994 9.20953 45.3094 12.7695 45.3094C16.3295 45.3094 18.5195 43.9994 18.5195 43.0594C18.5192 42.1194 16.3292 40.8094 12.7695 40.8094ZM31.8193 39.3699C30.5193 40.2498 28.4692 40.8094 26.0693 40.8094C23.6694 40.8094 21.6193 40.2595 20.3193 39.3895V41.0594C20.3193 41.9994 22.5095 43.3094 26.0693 43.3094C29.6293 43.3094 31.8193 41.9994 31.8193 41.0594V39.3699ZM26.0693 34.8094C25.7295 34.8094 25.4097 34.8295 25.0898 34.8494C22.1201 35.0694 20.3197 36.2094 20.3193 37.0594C20.3193 37.9994 22.5095 39.3094 26.0693 39.3094C29.0391 39.3094 31.029 38.3996 31.6191 37.5496C31.7391 37.3796 31.8193 37.2194 31.8193 37.0594C31.819 36.1194 29.629 34.8094 26.0693 34.8094Z" fill="black"/>
|
|
4
|
+
<path part="highlight" d="M26.0698 39.3105C29.2344 39.3105 31.7998 38.3032 31.7998 37.0605C31.7998 35.8179 29.2344 34.8105 26.0698 34.8105C22.9053 34.8105 20.3398 35.8179 20.3398 37.0605C20.3398 38.3032 22.9053 39.3105 26.0698 39.3105Z" fill="green"/>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg width="56" height="56" viewBox="0 0 56 56" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path part="background" d="M27.9997 1.42969C13.3197 1.42969 1.42969 13.3197 1.42969 27.9997C1.42969 42.6797 13.3297 54.5697 27.9997 54.5697C42.6697 54.5697 54.5697 42.6697 54.5697 27.9997C54.5697 13.3297 42.6797 1.42969 27.9997 1.42969ZM48.4497 40.9197L46.5097 44.4597C46.0297 45.3297 45.3097 45.9397 44.4897 46.1797C44.2397 46.2497 43.9797 46.2897 43.7297 46.2897C43.3097 46.2897 42.8797 46.1697 42.4697 45.9797L42.4297 46.0497C41.9997 46.8297 41.2897 47.3997 40.4297 47.6397C40.1297 47.7297 39.8197 47.7697 39.5097 47.7697C38.9497 47.7697 38.3897 47.6297 37.8797 47.3397L23.7597 39.4397C22.9897 39.0097 22.4597 38.3097 22.2097 37.5197L20.9097 38.4297C21.1497 38.7697 21.0597 39.2397 20.7197 39.4697C19.9897 39.9797 19.1297 40.2297 18.2797 40.2297C17.4297 40.2297 16.5697 39.9797 15.8397 39.4697L11.7497 36.6197C8.20969 34.1597 6.09969 30.1097 6.09969 25.7997V16.8597C6.09969 15.5297 6.99969 14.3397 8.27969 13.9697L17.1397 11.4497C17.9097 11.2297 18.7197 11.2297 19.4897 11.4497L28.2997 13.9697C29.5797 14.3397 30.4797 15.5197 30.4797 16.8597V24.7697C30.4797 25.1797 30.1397 25.5197 29.7297 25.5197V25.7997C29.7297 26.3197 29.6997 26.8397 29.6297 27.3397C29.6797 27.3597 29.7397 27.3797 29.7897 27.3997L29.8897 27.2597C30.2797 26.5497 30.9897 25.9797 31.8397 25.7397C32.6997 25.4897 33.5997 25.5997 34.3897 26.0397L36.2397 27.1297C36.5997 27.3397 36.7197 27.7997 36.5097 28.1597C36.5097 28.1697 36.4897 28.1797 36.4797 28.1897L37.1497 28.5897C37.1497 28.5897 37.1497 28.5697 37.1597 28.5597C37.3697 28.1997 37.8297 28.0797 38.1897 28.2897L40.3697 29.5597C40.7297 29.7697 40.8497 30.2297 40.6397 30.5897C40.6197 30.6197 40.5897 30.6297 40.5697 30.6597L41.1397 30.9997C41.1397 30.9997 41.1497 30.9497 41.1697 30.9197C41.3797 30.5597 41.8397 30.4397 42.1997 30.6497L43.7397 31.5497C44.0997 31.7597 44.2197 32.2197 44.0097 32.5797C43.9897 32.6197 43.9397 32.6397 43.9097 32.6697L44.5297 33.0397C44.5297 33.0397 44.5497 32.9597 44.5697 32.9197C44.7797 32.5597 45.2397 32.4397 45.5997 32.6597L48.1397 34.1597C48.9697 34.6497 49.5697 35.4297 49.8097 36.3697C50.0497 37.3097 49.9097 38.2797 49.4097 39.0997L48.4597 40.9097L48.4497 40.9197Z" fill="silver"/>
|
|
3
|
+
<path part="outline" fill-rule="evenodd" clip-rule="evenodd" d="M31.8408 25.7792C32.7007 25.5394 33.6108 25.6391 34.3906 26.079L36.2402 27.1698C36.6 27.3798 36.7204 27.8393 36.5107 28.1991C36.3008 28.559 35.8404 28.6794 35.4805 28.4696L33.6504 27.3896C33.2305 27.1496 32.7306 27.0996 32.2607 27.2294C31.7908 27.3594 31.4002 27.6695 31.1602 28.0995L31.1201 28.1493L44.0508 35.789C44.8906 36.2689 45.4807 37.0592 45.7207 37.9989C45.9607 38.9389 45.8203 39.9094 45.3203 40.7294L44.3701 42.539L43.1904 44.6991C43.4903 44.8291 43.7902 44.8493 44.0801 44.7694C44.52 44.6394 44.9102 44.2894 45.2002 43.7694L48.0908 38.3993C48.4007 37.8894 48.4808 37.3191 48.3408 36.7792C48.2008 36.2293 47.86 35.7692 47.3701 35.4892L44.8203 33.9892C44.4705 33.7792 44.3508 33.3198 44.5605 32.9599C44.7706 32.6099 45.2308 32.4891 45.5908 32.6991L48.1299 34.1991C48.9698 34.6791 49.5608 35.4692 49.8008 36.4091L49.8203 36.4296C50.0602 37.3695 49.9199 38.3392 49.4199 39.1591L48.4707 40.9696L46.5303 44.5097C46.0504 45.3794 45.3405 45.9893 44.5107 46.2294C44.2608 46.2994 44.01 46.3397 43.75 46.3398C43.3202 46.3397 42.9001 46.2191 42.4902 46.0292L42.4502 46.0995C42.0202 46.8794 41.3101 47.4494 40.4502 47.6894C40.1503 47.7793 39.8402 47.8192 39.5303 47.8192C38.9704 47.8192 38.4103 47.6695 37.9004 47.3896L23.7803 39.4892C22.1704 38.5891 21.5807 36.5395 22.4707 34.9296L25.7607 28.9599C26.1907 28.1799 26.9008 27.6091 27.7607 27.3691C28.4305 27.1693 29.1403 27.2095 29.79 27.4394L29.8906 27.2997C30.2706 26.5897 30.9808 26.0292 31.8408 25.7792ZM28.6602 28.7294C28.4903 28.7294 28.3301 28.7498 28.1602 28.7997C27.6903 28.9298 27.3005 29.2399 27.0605 29.6698L23.7705 35.6396C23.2806 36.5294 23.6103 37.659 24.5 38.1591L38.6201 46.0595C39.0501 46.3094 39.5405 46.3594 40.0205 46.2294L40.0107 46.2196C40.4805 46.0896 40.8704 45.7794 41.1104 45.3495L44 39.9794C44.31 39.4694 44.39 38.8993 44.25 38.3593C44.11 37.8094 43.7702 37.3492 43.2803 37.0692L29.5508 28.9599C29.2708 28.8099 28.9701 28.7294 28.6602 28.7294Z M17.1201 11.4892C17.89 11.2692 18.6998 11.2693 19.4697 11.4892L28.2803 14.0087C29.5602 14.3787 30.46 15.5694 30.46 16.8993V24.8095C30.4597 25.2192 30.1198 25.5595 29.71 25.5595C29.3002 25.5594 28.9603 25.2192 28.96 24.8095V16.8993C28.96 16.2294 28.5101 15.6292 27.8701 15.4491L19.0605 12.9296C18.5605 12.7896 18.04 12.7896 17.54 12.9296L8.67969 15.4491C8.0399 15.6393 7.58984 16.2295 7.58984 16.8993V25.8388C7.5899 29.6587 9.45972 33.2496 12.5996 35.4296L16.6904 38.2792C17.6404 38.9389 18.9105 38.9391 19.8604 38.2792H19.8496C20.1894 38.0493 20.6495 38.1291 20.8896 38.4687C21.1195 38.8086 21.0399 39.2687 20.7002 39.5087C19.9702 40.0187 19.1097 40.2694 18.2598 40.2694C17.4099 40.2694 16.5502 40.0186 15.8203 39.5087L11.7305 36.6591C8.19052 34.1991 6.08014 30.1487 6.08008 25.8388V16.8993C6.08008 15.5594 6.97988 14.3788 8.25977 14.0087L17.1201 11.4892Z M41.1504 30.9491C41.3605 30.5896 41.8199 30.4699 42.1797 30.6796L43.7197 31.58C44.0796 31.79 44.2 32.2494 43.9902 32.6093C43.8503 32.8493 43.5998 32.9794 43.3398 32.9794C43.21 32.9794 43.0799 32.9497 42.96 32.8798L41.4199 31.9794C41.06 31.7694 40.9404 31.3091 41.1504 30.9491Z M18.2793 18.0595C20.4193 18.0595 22.1601 19.7994 22.1602 21.9394C22.1601 22.4993 22.0298 23.0595 21.7998 23.5595C23.3797 24.6895 24.3301 26.52 24.3301 28.4999V29.9198C24.2099 30.7996 23.4893 31.4298 22.6494 31.4198H13.7197C12.8398 31.2998 12.2198 30.5791 12.2197 29.7392V28.2099C12.3197 26.3499 13.2698 24.6393 14.7598 23.5692C14.5198 23.0593 14.3994 22.5092 14.3994 21.9394C14.3995 19.7996 16.1395 18.0597 18.2793 18.0595ZM18.2793 19.5497C16.9695 19.55 15.8994 20.6197 15.8994 21.9296C15.8995 22.4395 16.0602 22.9396 16.3701 23.3495L16.8994 24.0497L16.1299 24.4599L16.1396 24.4491C14.7298 25.1991 13.8098 26.6493 13.7197 28.2392V29.7294C13.7198 29.8293 13.7899 29.9098 13.8799 29.9198H22.6602C22.7598 29.9196 22.8394 29.8494 22.8496 29.7597V28.4892C22.8495 26.7994 21.9195 25.2599 20.4297 24.4599L19.6602 24.0497L20.1895 23.3495C20.4994 22.9396 20.6601 22.4495 20.6602 21.9296C20.6602 20.6196 19.5893 19.5497 18.2793 19.5497Z M37.1406 28.5888C37.3507 28.2292 37.8101 28.1095 38.1699 28.3192L40.3506 29.5888C40.7104 29.7988 40.83 30.2591 40.6201 30.6191C40.4802 30.8589 40.2305 30.989 39.9707 30.9892C39.8407 30.9892 39.7098 30.9595 39.5898 30.8896L37.4102 29.6191C37.0503 29.409 36.9306 28.9487 37.1406 28.5888Z" fill="black"/>
|
|
4
|
+
<path part="highlight" d="M37.9402 38.5999C37.6602 39.1199 37.1802 39.4999 36.6102 39.6499L32.7602 40.7099C32.4702 40.7899 32.1602 40.6199 32.0802 40.3199L31.0202 36.4699C30.8602 35.8999 30.9402 35.2999 31.2402 34.7899C31.5402 34.2799 32.0302 33.9199 32.6002 33.7799C33.1602 33.6599 33.7502 33.7499 34.2402 34.0499C34.7302 34.3499 35.0902 34.8299 35.2302 35.3899L35.2602 35.4999L35.3702 35.4699C35.9202 35.3099 36.5202 35.3699 37.0202 35.6399C37.5302 35.9099 37.9202 36.3599 38.1002 36.9099C38.2802 37.4699 38.2202 38.0799 37.9302 38.5999H37.9402Z" fill="green"/>
|
|
5
|
+
</svg>
|
|
@@ -36,10 +36,10 @@ class ImageBannerHeightDirective {
|
|
|
36
36
|
this.currentHeight = cardHeight;
|
|
37
37
|
this.renderer.setStyle(hostElement, 'min-height', `${cardHeight}px`);
|
|
38
38
|
}
|
|
39
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0
|
|
40
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0
|
|
39
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ImageBannerHeightDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
40
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: ImageBannerHeightDirective, isStandalone: true, selector: "[kirbyImageBannerResize]", ngImport: i0 }); }
|
|
41
41
|
}
|
|
42
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0
|
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ImageBannerHeightDirective, decorators: [{
|
|
43
43
|
type: Directive,
|
|
44
44
|
args: [{
|
|
45
45
|
selector: `[kirbyImageBannerResize]`,
|
|
@@ -87,10 +87,10 @@ class ImageBannerComponent {
|
|
|
87
87
|
onImageError($event) {
|
|
88
88
|
this.imageError.emit($event);
|
|
89
89
|
}
|
|
90
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0
|
|
91
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0
|
|
90
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ImageBannerComponent, deps: [{ token: i1.TranslationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
91
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: ImageBannerComponent, isStandalone: true, selector: "kirby-x-image-banner", inputs: { title: "title", imagePath: "imagePath", bodyText: "bodyText", showButtonInNarrowView: "showButtonInNarrowView", actionButtonText: "actionButtonText", externalLink: "externalLink", backgroundBlur: "backgroundBlur" }, outputs: { bannerClick: "bannerClick", dismissClick: "dismissClick", imageError: "imageError" }, host: { properties: { "class.show-button-in-narrow-view": "this.showButtonInNarrowView", "class": "this.backgroundBlur" } }, hostDirectives: [{ directive: ImageBannerHeightDirective }], ngImport: i0, template: "<kirby-card [themeColor]=\"backgroundBlur === 'none' ? 'white' : backgroundBlur\">\n <div class=\"blur-image-wrapper\">\n <img class=\"blur-image\" [src]=\"imagePath\" alt=\"\" />\n </div>\n\n <div class=\"main-content-wrapper\">\n <div class=\"main-content-image-wrapper\">\n <img class=\"main-content-image\" [src]=\"imagePath\" alt=\"\" (error)=\"onImageError($event)\" />\n </div>\n\n <div class=\"main-content\">\n <div class=\"text-content-layout\">\n <div class=\"main-content-header\">\n @if (title) {\n <p class=\"kirby-text-normal-bold\">\n {{ title }}\n </p>\n } @else {\n <div class=\"title kirby-text-normal-bold\">\n <ng-content select=\"[title]\"></ng-content>\n </div>\n }\n </div>\n\n <div class=\"main-content-body\">\n <p class=\"main-content-body-text kirby-text-small\">\n @if (bodyText) {\n {{ bodyText }}\n } @else {\n <ng-content select=\"[bodyText]\"></ng-content>\n }\n </p>\n </div>\n </div>\n @if (externalLink) {\n <!-- Only one of below anchors is displayed at a time -\n we want different behavior on varying screen widths -->\n <a\n kirby-button\n class=\"breakout wide-view-action\"\n [attentionLevel]=\"backgroundBlur === 'none' ? '3' : '2'\"\n [href]=\"externalLink\"\n target=\"_blank\"\n size=\"sm\"\n >\n {{ actionButtonText }}\n <kirby-icon name=\"link\"></kirby-icon>\n </a>\n\n <a\n kirby-button\n class=\"breakout narrow-view-action\"\n [attentionLevel]=\"backgroundBlur === 'none' ? '3' : '2'\"\n [href]=\"externalLink\"\n [noDecoration]=\"true\"\n [showIconOnly]=\"true\"\n target=\"_blank\"\n size=\"sm\"\n >\n {{ actionButtonText }}\n <kirby-icon name=\"link\"></kirby-icon>\n </a>\n }\n\n @if (!externalLink) {\n <!-- Only one of below buttons is displayed at a time -\n we want different behavior on varying screen widths -->\n <button\n kirby-button\n class=\"breakout wide-view-action\"\n size=\"sm\"\n (click)=\"bannerClicked($event)\"\n [attentionLevel]=\"backgroundBlur === 'none' ? '3' : '2'\"\n >\n {{ actionButtonText }}\n </button>\n\n <button\n kirby-button\n class=\"breakout narrow-view-action\"\n size=\"sm\"\n (click)=\"bannerClicked($event)\"\n [attentionLevel]=\"backgroundBlur === 'none' ? '3' : '2'\"\n [noDecoration]=\"true\"\n [showIconOnly]=\"true\"\n >\n <span class=\"kirby-visually-hidden\">\n {{ actionButtonText }}\n </span>\n </button>\n }\n </div>\n </div>\n\n @if (dismissClick.observed) {\n <div class=\"dismiss\">\n <button\n kirby-button\n size=\"xs\"\n (click)=\"dismissClicked($event)\"\n [attentionLevel]=\"backgroundBlur === 'none' ? '3' : '2'\"\n [showIconOnly]=\"true\"\n [attr.aria-label]=\"translations.get('close') + ' ' + title\"\n >\n <kirby-icon name=\"close\"></kirby-icon>\n </button>\n </div>\n }\n</kirby-card>\n", styles: [":host{display:block}:host(.none) .blur-image{display:none}@container banner (width < 600px){:host(.none) .dismiss{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black)}}:host(.none) .main-content-body-action-link{color:var(--kirby-semi-dark)}:host(.dark) .blur-image{filter:blur(110px)}:host(.light) .blur-image{filter:blur(110px)}:host(.dark) .blur-image-wrapper:before{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background-color:#00000052;z-index:1}:host(.light) .blur-image-wrapper:before{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background-color:#ffffff73;z-index:1}.blur-image-wrapper{position:absolute;inset:-330px;z-index:-1}.blur-image{display:block;width:100%;height:100%;object-fit:cover;object-position:center;transform:translateZ(0)}kirby-card{container-name:banner;container-type:inline-size;height:100%}kirby-card:focus-within:has(:focus-visible):not(:has(.dismiss :focus)){transition:all 80ms linear 0ms;box-shadow:0 1px 24px #1c1c1c0a,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}kirby-card:focus-within:has(:focus-visible):not(:has(.dismiss :focus)) .breakout{box-shadow:none}.main-content-wrapper{width:100%;padding:8px;box-sizing:border-box;display:flex;flex-direction:column}@container banner (width >= 600px){.main-content-wrapper{gap:16px;flex-direction:initial}}.main-content-image-wrapper{display:flex;overflow:hidden;border-radius:8px}@container banner (width >= 600px){.main-content-image-wrapper{flex:1}}.main-content{display:flex;flex-direction:column;justify-content:space-between}@container banner (width < 600px){.main-content{flex-direction:row}}.main-content{min-height:var(--kirby-x-image-banner-min-height, 84px);box-sizing:border-box;padding:12px 0 8px 8px;overflow:hidden}.main-content .main-content-header{padding-inline-end:8px}@container banner (width >= 600px){.main-content .main-content-header{padding-inline-end:40px}}.main-content:has(.main-content-body-action-link) .main-content-header{padding-inline-end:40px}@container banner (width >= 600px){.main-content{flex:1;gap:12px;padding:8px 8px 8px 0}}.main-content-header p{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;margin:0;padding:0}.main-content-image{width:100%;height:132px;object-fit:cover;object-position:center}@container banner (width >= 600px){.main-content-image{height:164px}}.main-content-body{display:flex;flex:1;justify-content:space-between;height:100%}.main-content-body p{text-wrap-mode:wrap;margin-bottom:0}@container banner (width >= 600px){.main-content-body{flex-direction:column;max-width:324px}}@container banner (width >= 600px){.main-content-body .main-content-body-action-link{display:none}}.main-content-body-text{display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;padding-inline-end:8px}@container banner (width >= 600px){.main-content-body-text{padding-inline-end:48px}}@container banner (width < 600px){.main-content-body-text{-webkit-line-clamp:2;line-clamp:2;max-height:3em}}.breakout{position:initial;border-radius:16px;align-self:center}.breakout:before{content:\"\";display:block;position:absolute;inset:0}.wide-view-action{display:none}@container banner (width >= 600px){.wide-view-action{display:inline-flex;align-self:start;margin:0}}.narrow-view-action{display:inline-flex;margin:0}@container banner (width >= 600px){.narrow-view-action{display:none}}.narrow-view-action:is(a){width:24px;min-width:24px}.narrow-view-action:is(a) kirby-icon{font-size:24px}.narrow-view-action:is(button){min-width:1px;width:1px;height:1px}:host(.show-button-in-narrow-view) .wide-view-action{display:inline-flex}:host(.show-button-in-narrow-view) .narrow-view-action{display:none}.dismiss{position:absolute;top:16px;right:16px;height:fit-content}.dismiss button{margin:0}.text-content-layout{display:flex;flex:1;flex-direction:column;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@container banner (width >= 600px){.text-content-layout{gap:12px}}.title ::ng-deep>h1,.title ::ng-deep>h2,.title ::ng-deep>h3,.title ::ng-deep>h4,.title ::ng-deep>h5,.title ::ng-deep>h6{margin-bottom:0;font-size:16px;font-weight:700;line-height:24px}\n"], dependencies: [{ kind: "component", type: CardComponent, selector: "kirby-card", inputs: ["title", "subtitle", "backgroundImageUrl", "hasPadding", "sizes", "variant"] }, { kind: "component", type: ButtonComponent, selector: "button[kirby-button],Button[kirby-button],a[kirby-button]", inputs: ["attentionLevel", "noDecoration", "themeColor", "expand", "isFloating", "size", "showIconOnly"] }, { kind: "component", type: IconComponent, selector: "kirby-icon", inputs: ["size", "name"] }, { kind: "directive", type: ThemeColorDirective, selector: "kirby-avatar[themeColor], kirby-card[themeColor], kirby-icon[themeColor], kirby-progress-circle-ring[themeColor], kirby-modal-footer[themeColor], kirby-empty-state[themeColor]", inputs: ["themeColor"] }] }); }
|
|
92
92
|
}
|
|
93
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0
|
|
93
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ImageBannerComponent, decorators: [{
|
|
94
94
|
type: Component,
|
|
95
95
|
args: [{ selector: 'kirby-x-image-banner', imports: [CardComponent, ButtonComponent, IconComponent, ThemeColorDirective], hostDirectives: [ImageBannerHeightDirective], template: "<kirby-card [themeColor]=\"backgroundBlur === 'none' ? 'white' : backgroundBlur\">\n <div class=\"blur-image-wrapper\">\n <img class=\"blur-image\" [src]=\"imagePath\" alt=\"\" />\n </div>\n\n <div class=\"main-content-wrapper\">\n <div class=\"main-content-image-wrapper\">\n <img class=\"main-content-image\" [src]=\"imagePath\" alt=\"\" (error)=\"onImageError($event)\" />\n </div>\n\n <div class=\"main-content\">\n <div class=\"text-content-layout\">\n <div class=\"main-content-header\">\n @if (title) {\n <p class=\"kirby-text-normal-bold\">\n {{ title }}\n </p>\n } @else {\n <div class=\"title kirby-text-normal-bold\">\n <ng-content select=\"[title]\"></ng-content>\n </div>\n }\n </div>\n\n <div class=\"main-content-body\">\n <p class=\"main-content-body-text kirby-text-small\">\n @if (bodyText) {\n {{ bodyText }}\n } @else {\n <ng-content select=\"[bodyText]\"></ng-content>\n }\n </p>\n </div>\n </div>\n @if (externalLink) {\n <!-- Only one of below anchors is displayed at a time -\n we want different behavior on varying screen widths -->\n <a\n kirby-button\n class=\"breakout wide-view-action\"\n [attentionLevel]=\"backgroundBlur === 'none' ? '3' : '2'\"\n [href]=\"externalLink\"\n target=\"_blank\"\n size=\"sm\"\n >\n {{ actionButtonText }}\n <kirby-icon name=\"link\"></kirby-icon>\n </a>\n\n <a\n kirby-button\n class=\"breakout narrow-view-action\"\n [attentionLevel]=\"backgroundBlur === 'none' ? '3' : '2'\"\n [href]=\"externalLink\"\n [noDecoration]=\"true\"\n [showIconOnly]=\"true\"\n target=\"_blank\"\n size=\"sm\"\n >\n {{ actionButtonText }}\n <kirby-icon name=\"link\"></kirby-icon>\n </a>\n }\n\n @if (!externalLink) {\n <!-- Only one of below buttons is displayed at a time -\n we want different behavior on varying screen widths -->\n <button\n kirby-button\n class=\"breakout wide-view-action\"\n size=\"sm\"\n (click)=\"bannerClicked($event)\"\n [attentionLevel]=\"backgroundBlur === 'none' ? '3' : '2'\"\n >\n {{ actionButtonText }}\n </button>\n\n <button\n kirby-button\n class=\"breakout narrow-view-action\"\n size=\"sm\"\n (click)=\"bannerClicked($event)\"\n [attentionLevel]=\"backgroundBlur === 'none' ? '3' : '2'\"\n [noDecoration]=\"true\"\n [showIconOnly]=\"true\"\n >\n <span class=\"kirby-visually-hidden\">\n {{ actionButtonText }}\n </span>\n </button>\n }\n </div>\n </div>\n\n @if (dismissClick.observed) {\n <div class=\"dismiss\">\n <button\n kirby-button\n size=\"xs\"\n (click)=\"dismissClicked($event)\"\n [attentionLevel]=\"backgroundBlur === 'none' ? '3' : '2'\"\n [showIconOnly]=\"true\"\n [attr.aria-label]=\"translations.get('close') + ' ' + title\"\n >\n <kirby-icon name=\"close\"></kirby-icon>\n </button>\n </div>\n }\n</kirby-card>\n", styles: [":host{display:block}:host(.none) .blur-image{display:none}@container banner (width < 600px){:host(.none) .dismiss{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black)}}:host(.none) .main-content-body-action-link{color:var(--kirby-semi-dark)}:host(.dark) .blur-image{filter:blur(110px)}:host(.light) .blur-image{filter:blur(110px)}:host(.dark) .blur-image-wrapper:before{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background-color:#00000052;z-index:1}:host(.light) .blur-image-wrapper:before{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background-color:#ffffff73;z-index:1}.blur-image-wrapper{position:absolute;inset:-330px;z-index:-1}.blur-image{display:block;width:100%;height:100%;object-fit:cover;object-position:center;transform:translateZ(0)}kirby-card{container-name:banner;container-type:inline-size;height:100%}kirby-card:focus-within:has(:focus-visible):not(:has(.dismiss :focus)){transition:all 80ms linear 0ms;box-shadow:0 1px 24px #1c1c1c0a,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}kirby-card:focus-within:has(:focus-visible):not(:has(.dismiss :focus)) .breakout{box-shadow:none}.main-content-wrapper{width:100%;padding:8px;box-sizing:border-box;display:flex;flex-direction:column}@container banner (width >= 600px){.main-content-wrapper{gap:16px;flex-direction:initial}}.main-content-image-wrapper{display:flex;overflow:hidden;border-radius:8px}@container banner (width >= 600px){.main-content-image-wrapper{flex:1}}.main-content{display:flex;flex-direction:column;justify-content:space-between}@container banner (width < 600px){.main-content{flex-direction:row}}.main-content{min-height:var(--kirby-x-image-banner-min-height, 84px);box-sizing:border-box;padding:12px 0 8px 8px;overflow:hidden}.main-content .main-content-header{padding-inline-end:8px}@container banner (width >= 600px){.main-content .main-content-header{padding-inline-end:40px}}.main-content:has(.main-content-body-action-link) .main-content-header{padding-inline-end:40px}@container banner (width >= 600px){.main-content{flex:1;gap:12px;padding:8px 8px 8px 0}}.main-content-header p{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;margin:0;padding:0}.main-content-image{width:100%;height:132px;object-fit:cover;object-position:center}@container banner (width >= 600px){.main-content-image{height:164px}}.main-content-body{display:flex;flex:1;justify-content:space-between;height:100%}.main-content-body p{text-wrap-mode:wrap;margin-bottom:0}@container banner (width >= 600px){.main-content-body{flex-direction:column;max-width:324px}}@container banner (width >= 600px){.main-content-body .main-content-body-action-link{display:none}}.main-content-body-text{display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;padding-inline-end:8px}@container banner (width >= 600px){.main-content-body-text{padding-inline-end:48px}}@container banner (width < 600px){.main-content-body-text{-webkit-line-clamp:2;line-clamp:2;max-height:3em}}.breakout{position:initial;border-radius:16px;align-self:center}.breakout:before{content:\"\";display:block;position:absolute;inset:0}.wide-view-action{display:none}@container banner (width >= 600px){.wide-view-action{display:inline-flex;align-self:start;margin:0}}.narrow-view-action{display:inline-flex;margin:0}@container banner (width >= 600px){.narrow-view-action{display:none}}.narrow-view-action:is(a){width:24px;min-width:24px}.narrow-view-action:is(a) kirby-icon{font-size:24px}.narrow-view-action:is(button){min-width:1px;width:1px;height:1px}:host(.show-button-in-narrow-view) .wide-view-action{display:inline-flex}:host(.show-button-in-narrow-view) .narrow-view-action{display:none}.dismiss{position:absolute;top:16px;right:16px;height:fit-content}.dismiss button{margin:0}.text-content-layout{display:flex;flex:1;flex-direction:column;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@container banner (width >= 600px){.text-content-layout{gap:12px}}.title ::ng-deep>h1,.title ::ng-deep>h2,.title ::ng-deep>h3,.title ::ng-deep>h4,.title ::ng-deep>h5,.title ::ng-deep>h6{margin-bottom:0;font-size:16px;font-weight:700;line-height:24px}\n"] }]
|
|
96
96
|
}], ctorParameters: () => [{ type: i1.TranslationService }], propDecorators: { title: [{
|
|
@@ -89,10 +89,10 @@ class DateOnlyPipe extends AbstractTimezoneCompensatingPipe {
|
|
|
89
89
|
transform(input) {
|
|
90
90
|
return this.format(input, DateFormats.SHORT_DATE_FORMAT);
|
|
91
91
|
}
|
|
92
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0
|
|
93
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.0
|
|
92
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DateOnlyPipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
93
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.0", ngImport: i0, type: DateOnlyPipe, isStandalone: true, name: "dateOnly" }); }
|
|
94
94
|
}
|
|
95
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0
|
|
95
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DateOnlyPipe, decorators: [{
|
|
96
96
|
type: Pipe,
|
|
97
97
|
args: [{
|
|
98
98
|
name: 'dateOnly',
|
|
@@ -122,10 +122,10 @@ class TimeOnlyPipe extends AbstractTimezoneCompensatingPipe {
|
|
|
122
122
|
throw new Error(`Unable to derive format from "${format}"`);
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0
|
|
126
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.0
|
|
125
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: TimeOnlyPipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
126
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.0", ngImport: i0, type: TimeOnlyPipe, isStandalone: true, name: "timeOnly" }); }
|
|
127
127
|
}
|
|
128
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0
|
|
128
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: TimeOnlyPipe, decorators: [{
|
|
129
129
|
type: Pipe,
|
|
130
130
|
args: [{
|
|
131
131
|
name: 'timeOnly',
|
|
@@ -160,10 +160,10 @@ class TimeOrDatePipe extends AbstractTimezoneCompensatingPipe {
|
|
|
160
160
|
}
|
|
161
161
|
return this.format(date, format);
|
|
162
162
|
}
|
|
163
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0
|
|
164
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.0
|
|
163
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: TimeOrDatePipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
164
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.0", ngImport: i0, type: TimeOrDatePipe, isStandalone: true, name: "timeOrDate" }); }
|
|
165
165
|
}
|
|
166
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0
|
|
166
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: TimeOrDatePipe, decorators: [{
|
|
167
167
|
type: Pipe,
|
|
168
168
|
args: [{
|
|
169
169
|
name: 'timeOrDate',
|
|
@@ -181,10 +181,10 @@ class FormatNumberService {
|
|
|
181
181
|
}
|
|
182
182
|
return formatNumber(value, this.localeId, digitsInfo);
|
|
183
183
|
}
|
|
184
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0
|
|
185
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0
|
|
184
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: FormatNumberService, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
185
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: FormatNumberService, providedIn: 'root' }); }
|
|
186
186
|
}
|
|
187
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0
|
|
187
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: FormatNumberService, decorators: [{
|
|
188
188
|
type: Injectable,
|
|
189
189
|
args: [{
|
|
190
190
|
providedIn: 'root',
|
|
@@ -201,10 +201,10 @@ class FormatNumberPipe {
|
|
|
201
201
|
transform(value, digitsInfo = '1.2-2') {
|
|
202
202
|
return this.formatNumberService.formatNumber(value, digitsInfo);
|
|
203
203
|
}
|
|
204
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0
|
|
205
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.0
|
|
204
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: FormatNumberPipe, deps: [{ token: FormatNumberService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
205
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.0", ngImport: i0, type: FormatNumberPipe, isStandalone: true, name: "formatNumber" }); }
|
|
206
206
|
}
|
|
207
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0
|
|
207
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: FormatNumberPipe, decorators: [{
|
|
208
208
|
type: Pipe,
|
|
209
209
|
args: [{
|
|
210
210
|
name: 'formatNumber',
|
|
@@ -280,10 +280,10 @@ class AmountService {
|
|
|
280
280
|
}
|
|
281
281
|
return formatAmount(amount, this.locale, this.config, amountServiceConfiguration);
|
|
282
282
|
}
|
|
283
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0
|
|
284
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0
|
|
283
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AmountService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
284
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AmountService, providedIn: 'root' }); }
|
|
285
285
|
}
|
|
286
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0
|
|
286
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AmountService, decorators: [{
|
|
287
287
|
type: Injectable,
|
|
288
288
|
args: [{
|
|
289
289
|
providedIn: 'root',
|
|
@@ -316,10 +316,10 @@ class AmountPipe {
|
|
|
316
316
|
transform(amount, amountServiceConfiguration) {
|
|
317
317
|
return this.amountService.formatAmount(amount, amountServiceConfiguration);
|
|
318
318
|
}
|
|
319
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0
|
|
320
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.0
|
|
319
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AmountPipe, deps: [{ token: AmountService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
320
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.0", ngImport: i0, type: AmountPipe, isStandalone: true, name: "amount" }); }
|
|
321
321
|
}
|
|
322
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0
|
|
322
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AmountPipe, decorators: [{
|
|
323
323
|
type: Pipe,
|
|
324
324
|
args: [{
|
|
325
325
|
name: 'amount',
|
|
@@ -343,10 +343,10 @@ class AccountNumberPipe {
|
|
|
343
343
|
transform(value) {
|
|
344
344
|
return formatAccountNumber(value);
|
|
345
345
|
}
|
|
346
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0
|
|
347
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.0
|
|
346
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AccountNumberPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
347
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.0", ngImport: i0, type: AccountNumberPipe, isStandalone: true, name: "accountNumber" }); }
|
|
348
348
|
}
|
|
349
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0
|
|
349
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AccountNumberPipe, decorators: [{
|
|
350
350
|
type: Pipe,
|
|
351
351
|
args: [{
|
|
352
352
|
name: 'accountNumber',
|
|
@@ -379,10 +379,10 @@ class PhoneNumberService {
|
|
|
379
379
|
return formattedNumber;
|
|
380
380
|
}
|
|
381
381
|
}
|
|
382
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0
|
|
383
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0
|
|
382
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: PhoneNumberService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
383
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: PhoneNumberService, providedIn: 'root' }); }
|
|
384
384
|
}
|
|
385
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0
|
|
385
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: PhoneNumberService, decorators: [{
|
|
386
386
|
type: Injectable,
|
|
387
387
|
args: [{
|
|
388
388
|
providedIn: 'root',
|
|
@@ -403,10 +403,10 @@ class PhoneNumberPipe {
|
|
|
403
403
|
transform(phoneNumber, chunk = 2, showCountryCode) {
|
|
404
404
|
return this.phoneNumberService.formatPhoneNumber(phoneNumber, chunk, showCountryCode);
|
|
405
405
|
}
|
|
406
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0
|
|
407
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.0
|
|
406
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: PhoneNumberPipe, deps: [{ token: PhoneNumberService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
407
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.0", ngImport: i0, type: PhoneNumberPipe, isStandalone: true, name: "phoneNumber" }); }
|
|
408
408
|
}
|
|
409
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0
|
|
409
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: PhoneNumberPipe, decorators: [{
|
|
410
410
|
type: Pipe,
|
|
411
411
|
args: [{
|
|
412
412
|
name: 'phoneNumber',
|
|
@@ -34,10 +34,10 @@ class MenuItemComponent {
|
|
|
34
34
|
this.icon = input(...(ngDevMode ? [undefined, { debugName: "icon" }] : []));
|
|
35
35
|
this.iconSize = computed(() => (this.size() === 'lg' ? 'sm' : 'xs'), ...(ngDevMode ? [{ debugName: "iconSize" }] : []));
|
|
36
36
|
}
|
|
37
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0
|
|
38
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0
|
|
37
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
38
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: MenuItemComponent, isStandalone: true, selector: "a[kirby-x-menu-item],button[kirby-x-menu-item]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: true, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.id": "\"item\" + id()", "class": "size()" } }, ngImport: i0, template: "<div class=\"menu-item-start {{ size() }}\">\n @if (icon(); as icon) {\n <kirby-icon [size]=\"iconSize()\" [name]=\"icon\"></kirby-icon>\n }\n</div>\n\n<div class=\"menu-item-content\">\n <ng-content></ng-content>\n</div>\n\n<div class=\"menu-item-end\">\n <ng-content select=\"[slot='end']\"></ng-content>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-grow:1;align-items:center;align-self:stretch;box-sizing:border-box;min-height:32px;border-radius:8px;padding:4px 12px;gap:8px;border:none;background:inherit;font:inherit;color:inherit;text-decoration:none;cursor:pointer}:host.lg{min-height:40px}:host:hover{background:var(--menuitem-hover-background-color, var(--kirby-inputs-background-color-hover))}:host:active{background:var(--menuitem-active-background-color, var(--kirby-inputs-background-color-active))}:host:focus-visible{outline:none}@media(hover:hover)and (pointer:fine){:host:focus{transition:all 80ms linear 0ms;box-shadow:0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}:host:focus:not(:focus-visible){box-shadow:0 0 0 0 transparent}:host:focus-visible{transition:all 80ms linear 0ms;box-shadow:0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}.menu-item-start{display:flex;align-items:center;justify-content:center;flex-shrink:0}.menu-item-start.lg,.menu-item-start.md{width:24px;height:24px}.menu-item-start.sm,.menu-item-start.xs{width:16px;height:16px}.menu-item-start.sm{padding-left:32px}.menu-item-start.xs{padding-left:56px}.menu-item-content{display:flex;flex-grow:1;align-items:center;text-align:left;word-break:break-word;font-size:16px;line-height:24px}.menu-item-end{display:inline-flex;min-width:24px;align-items:center;justify-content:center;gap:8px}.menu-item-end:empty{display:none}\n"], dependencies: [{ kind: "ngmodule", type: IconModule }, { kind: "component", type: i1.IconComponent, selector: "kirby-icon", inputs: ["size", "name"] }] }); }
|
|
39
39
|
}
|
|
40
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MenuItemComponent, decorators: [{
|
|
41
41
|
type: Component,
|
|
42
42
|
args: [{ selector: 'a[kirby-x-menu-item],button[kirby-x-menu-item]', host: {
|
|
43
43
|
'[attr.id]': '"item" + id()',
|
|
@@ -54,6 +54,7 @@ class MenuStateService {
|
|
|
54
54
|
#animationsDisabled = signal(false, ...(ngDevMode ? [{ debugName: "#animationsDisabled" }] : []));
|
|
55
55
|
#expandEvents = new Subject();
|
|
56
56
|
#checkEvents = new Subject();
|
|
57
|
+
#selectEvents = new Subject();
|
|
57
58
|
get menuItems() {
|
|
58
59
|
return this.#menuItems.asReadonly();
|
|
59
60
|
}
|
|
@@ -93,6 +94,9 @@ class MenuStateService {
|
|
|
93
94
|
get checkEvents() {
|
|
94
95
|
return this.#checkEvents.asObservable();
|
|
95
96
|
}
|
|
97
|
+
get selectEvents() {
|
|
98
|
+
return this.#selectEvents.asObservable();
|
|
99
|
+
}
|
|
96
100
|
expandItem(id) {
|
|
97
101
|
this.#expandEvents.next({ id, isExpanded: true });
|
|
98
102
|
if (this.#autoCollapse()) {
|
|
@@ -125,13 +129,17 @@ class MenuStateService {
|
|
|
125
129
|
return new Set(items);
|
|
126
130
|
});
|
|
127
131
|
}
|
|
132
|
+
selectItem(id) {
|
|
133
|
+
this.#selectEvents.next(id);
|
|
134
|
+
this.#selectedItem.set(id);
|
|
135
|
+
}
|
|
128
136
|
#findAncestors(id) {
|
|
129
137
|
return recursivelyFindAncestors(this.#menuItems(), id) ?? new Set();
|
|
130
138
|
}
|
|
131
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0
|
|
132
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0
|
|
139
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MenuStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
140
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MenuStateService, providedIn: 'root' }); }
|
|
133
141
|
}
|
|
134
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0
|
|
142
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MenuStateService, decorators: [{
|
|
135
143
|
type: Injectable,
|
|
136
144
|
args: [{ providedIn: 'root' }]
|
|
137
145
|
}] });
|
|
@@ -175,7 +183,7 @@ class MenuAnchorItemComponent {
|
|
|
175
183
|
#isSelected;
|
|
176
184
|
#isChecked;
|
|
177
185
|
#selectItem() {
|
|
178
|
-
this.#stateService.
|
|
186
|
+
this.#stateService.selectItem(this.item().id);
|
|
179
187
|
}
|
|
180
188
|
#checkItem(checked) {
|
|
181
189
|
if (checked) {
|
|
@@ -185,10 +193,10 @@ class MenuAnchorItemComponent {
|
|
|
185
193
|
this.#stateService.uncheckItem(this.item().id);
|
|
186
194
|
}
|
|
187
195
|
}
|
|
188
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0
|
|
189
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0
|
|
196
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MenuAnchorItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
197
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: MenuAnchorItemComponent, isStandalone: true, selector: "li[kirby-x-menu-anchor-item]", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class.selected": "vm.isSelected()", "class.checked": "vm.isChecked()", "class.has-toggle": "!!vm.item().toggle", "class.has-badge": "!!vm.item().badge" } }, ngImport: i0, template: "@let item = vm.item();\n@switch (item.type) {\n @case ('action') {\n <a\n kirby-x-menu-item\n [class.selected]=\"vm.isSelected()\"\n [size]=\"vm.size()\"\n [id]=\"item.id\"\n [icon]=\"item.icon\"\n [attr.href]=\"item.href\"\n (click)=\"$event.preventDefault(); vm.selectItem()\"\n (keydown.enter)=\"$event.preventDefault(); vm.selectItem()\"\n >\n {{ item.title }}\n @if (item.badge) {\n <kirby-badge\n slot=\"end\"\n class=\"item-badge\"\n [themeColor]=\"item.badge.themeColor ?? 'primary'\"\n >\n {{ item.badge.value }}\n </kirby-badge>\n }\n @if (item.toggle) {\n <div slot=\"end\" class=\"toggle-spacer\" [class.unchecked]=\"!vm.isChecked()\"></div>\n }\n </a>\n }\n @case ('router-link') {\n <a\n kirby-x-menu-item\n [class.selected]=\"vm.isSelected()\"\n [size]=\"vm.size()\"\n [id]=\"item.id\"\n [icon]=\"item.icon\"\n [routerLink]=\"item.route\"\n [queryParams]=\"item.queryParams\"\n [skipLocationChange]=\"item.skipLocationChange\"\n [replaceUrl]=\"item.replaceUrl\"\n (click)=\"vm.selectItem()\"\n (keydown.enter)=\"vm.selectItem()\"\n >\n {{ item.title }}\n @if (item.badge) {\n <kirby-badge\n slot=\"end\"\n class=\"item-badge\"\n [themeColor]=\"item.badge.themeColor ?? 'primary'\"\n >\n {{ item.badge.value }}\n </kirby-badge>\n }\n @if (item.toggle) {\n <div slot=\"end\" class=\"toggle-spacer\" [class.unchecked]=\"!vm.isChecked()\"></div>\n }\n </a>\n }\n @case ('external-link') {\n <a\n kirby-x-menu-item\n [class.selected]=\"vm.isSelected()\"\n [size]=\"vm.size()\"\n [id]=\"item.id\"\n [icon]=\"item.icon\"\n [attr.href]=\"item.url\"\n [attr.target]=\"item.target\"\n (click)=\"vm.selectItem()\"\n (keydown.enter)=\"vm.selectItem()\"\n >\n {{ item.title }}\n @if (item.badge) {\n <kirby-badge\n slot=\"end\"\n class=\"item-badge\"\n [themeColor]=\"item.badge.themeColor ?? 'primary'\"\n >\n {{ item.badge.value }}\n </kirby-badge>\n }\n @if (item.toggle) {\n <div slot=\"end\" class=\"toggle-spacer\" [class.unchecked]=\"!vm.isChecked()\"></div>\n }\n </a>\n }\n}\n\n@if (item.toggle) {\n <kirby-toggle-button\n class=\"toggle-button-wrapper\"\n [checked]=\"vm.isChecked()\"\n (checkChanged)=\"vm.checkItem($event)\"\n >\n <button\n kirby-button\n unchecked\n size=\"xs\"\n attentionLevel=\"3\"\n tabindex=\"-1\"\n [noDecoration]=\"true\"\n class=\"toggle-button toggle-button-unchecked\"\n >\n <kirby-icon size=\"xs\" [name]=\"item.toggle.uncheckedIcon\"></kirby-icon>\n </button>\n <button\n kirby-button\n checked\n size=\"xs\"\n attentionLevel=\"3\"\n tabindex=\"-1\"\n [noDecoration]=\"true\"\n class=\"toggle-button toggle-button-checked\"\n >\n <kirby-icon size=\"xs\" [name]=\"item.toggle.checkedIcon\"></kirby-icon>\n </button>\n </kirby-toggle-button>\n}\n", styles: [":host{display:flex;flex-direction:row;align-items:center;position:relative}:host.selected{color:var(--menuitem-selected-color, var(--kirby-primary-contrast))}:host:not(.selected):hover a{background:var(--menuitem-hover-background-color, var(--kirby-inputs-background-color-hover))}:host:not(.selected):active a{background:var(--menuitem-active-background-color, var(--kirby-inputs-background-color-active))}.selected,.selected:hover,.selected:active,.selected:focus-visible{background:var(--menuitem-selected-background-color, var(--kirby-primary));font-weight:700}.item-badge{display:inline-flex}.toggle-spacer{width:24px}.toggle-spacer.unchecked{display:none}:host.has-toggle:not(.checked):hover .item-badge,:host.has-toggle:not(.checked):active .item-badge,:host.has-toggle:not(.checked):has(a:focus-visible) .item-badge,:host.has-toggle:not(.checked):has(.toggle-button-unchecked:focus-visible) .item-badge{display:none}:host.has-toggle:not(.checked):hover .toggle-spacer.unchecked,:host.has-toggle:not(.checked):active .toggle-spacer.unchecked,:host.has-toggle:not(.checked):has(a:focus-visible) .toggle-spacer.unchecked,:host.has-toggle:not(.checked):has(.toggle-button-unchecked:focus-visible) .toggle-spacer.unchecked{display:initial}.toggle-button-wrapper{display:inline-flex;position:absolute;right:12px}.toggle-button{margin:0;--kirby-button-color: inherit}.toggle-button-unchecked{transition:opacity 0ms}.toggle-button-unchecked:not(:focus-visible){opacity:0}:host:hover .toggle-button-unchecked,:host:active .toggle-button-unchecked,:host:has(a:focus-visible) .toggle-button-unchecked{opacity:1}\n"], dependencies: [{ kind: "component", type: MenuItemComponent, selector: "a[kirby-x-menu-item],button[kirby-x-menu-item]", inputs: ["id", "size", "icon"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: ToggleButtonComponent, selector: "kirby-toggle-button", inputs: ["checked"], outputs: ["checkChanged"] }, { kind: "component", type: ButtonComponent, selector: "button[kirby-button],Button[kirby-button],a[kirby-button]", inputs: ["attentionLevel", "noDecoration", "themeColor", "expand", "isFloating", "size", "showIconOnly"] }, { kind: "component", type: IconComponent, selector: "kirby-icon", inputs: ["size", "name"] }, { kind: "component", type: BadgeComponent, selector: "kirby-badge", inputs: ["text", "size"] }] }); }
|
|
190
198
|
}
|
|
191
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0
|
|
199
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MenuAnchorItemComponent, decorators: [{
|
|
192
200
|
type: Component,
|
|
193
201
|
args: [{ selector: 'li[kirby-x-menu-anchor-item]', host: {
|
|
194
202
|
'[class.selected]': 'vm.isSelected()',
|
|
@@ -282,10 +290,10 @@ class MenuSubmenuItemComponent {
|
|
|
282
290
|
this.#stateService.expandItem(this.item().id);
|
|
283
291
|
}
|
|
284
292
|
}
|
|
285
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0
|
|
286
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0
|
|
293
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MenuSubmenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
294
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: MenuSubmenuItemComponent, isStandalone: true, selector: "li[kirby-x-menu-submenu-item]", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "@let item = vm.item();\n<button\n kirby-x-menu-item\n type=\"button\"\n class=\"submenu-toggle\"\n [size]=\"vm.size()\"\n [id]=\"item.id\"\n [icon]=\"item.icon\"\n [attr.aria-controls]=\"vm.submenuId()\"\n [attr.aria-expanded]=\"vm.isExpanded()\"\n (click)=\"vm.toggleSubmenu()\"\n>\n {{ item.title }}\n <kirby-icon\n slot=\"end\"\n name=\"arrow-more\"\n class=\"disclosure\"\n [class.rotate]=\"vm.isExpanded()\"\n ></kirby-icon>\n</button>\n@if (vm.isExpanded()) {\n <ul\n kirby-x-menu-item-list\n [items]=\"item.children\"\n [size]=\"vm.submenuSize()\"\n [id]=\"vm.submenuId()\"\n [@dropDownMenu]\n [@.disabled]=\"vm.animationsDisabled()\"\n ></ul>\n}\n", styles: [":host{display:flex;flex-direction:column}.submenu-toggle{width:100%}.submenu-toggle[aria-expanded=true]{font-weight:700}.disclosure{transition:transform .2s}.disclosure.rotate{transform:rotate(90deg)}\n"], dependencies: [{ kind: "component", type: i0.forwardRef(() => MenuItemComponent), selector: "a[kirby-x-menu-item],button[kirby-x-menu-item]", inputs: ["id", "size", "icon"] }, { kind: "component", type: i0.forwardRef(() => IconComponent), selector: "kirby-icon", inputs: ["size", "name"] }, { kind: "component", type: i0.forwardRef(() => MenuItemListComponent), selector: "ul[kirby-x-menu-item-list]", inputs: ["items", "size", "id"] }], animations: [DropDownAnimation] }); }
|
|
287
295
|
}
|
|
288
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0
|
|
296
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MenuSubmenuItemComponent, decorators: [{
|
|
289
297
|
type: Component,
|
|
290
298
|
args: [{ selector: 'li[kirby-x-menu-submenu-item]', animations: [DropDownAnimation], imports: [MenuItemComponent, IconComponent, forwardRef(() => MenuItemListComponent)], template: "@let item = vm.item();\n<button\n kirby-x-menu-item\n type=\"button\"\n class=\"submenu-toggle\"\n [size]=\"vm.size()\"\n [id]=\"item.id\"\n [icon]=\"item.icon\"\n [attr.aria-controls]=\"vm.submenuId()\"\n [attr.aria-expanded]=\"vm.isExpanded()\"\n (click)=\"vm.toggleSubmenu()\"\n>\n {{ item.title }}\n <kirby-icon\n slot=\"end\"\n name=\"arrow-more\"\n class=\"disclosure\"\n [class.rotate]=\"vm.isExpanded()\"\n ></kirby-icon>\n</button>\n@if (vm.isExpanded()) {\n <ul\n kirby-x-menu-item-list\n [items]=\"item.children\"\n [size]=\"vm.submenuSize()\"\n [id]=\"vm.submenuId()\"\n [@dropDownMenu]\n [@.disabled]=\"vm.animationsDisabled()\"\n ></ul>\n}\n", styles: [":host{display:flex;flex-direction:column}.submenu-toggle{width:100%}.submenu-toggle[aria-expanded=true]{font-weight:700}.disclosure{transition:transform .2s}.disclosure.rotate{transform:rotate(90deg)}\n"] }]
|
|
291
299
|
}], propDecorators: { item: [{ type: i0.Input, args: [{ isSignal: true, alias: "item", required: true }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: true }] }] } });
|
|
@@ -301,10 +309,10 @@ class MenuItemListComponent {
|
|
|
301
309
|
items: this.items,
|
|
302
310
|
};
|
|
303
311
|
}
|
|
304
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0
|
|
305
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0
|
|
312
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MenuItemListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
313
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: MenuItemListComponent, isStandalone: true, selector: "ul[kirby-x-menu-item-list]", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.id": "vm.id()", "class": "vm.size()" } }, ngImport: i0, template: "@for (item of vm.items(); track item.id) {\n @switch (item.type) {\n @case ('divider') {\n <kirby-divider aria-hidden=\"true\"></kirby-divider>\n }\n @case ('submenu') {\n <li kirby-x-menu-submenu-item [item]=\"item\" [size]=\"vm.size()\"></li>\n }\n @default {\n <li kirby-x-menu-anchor-item [item]=\"item\" [size]=\"vm.size()\"></li>\n }\n }\n}\n", styles: [":host{display:flex;flex-direction:column;margin:0;padding-left:0;padding-right:0;list-style-type:none}kirby-divider{display:flex;background:var(--kirby-white-overlay-20);margin:8px 0}li{margin-block-start:0!important}\n"], dependencies: [{ kind: "component", type: i0.forwardRef(() => DividerComponent), selector: "kirby-divider", inputs: ["hasMargin"] }, { kind: "component", type: i0.forwardRef(() => MenuAnchorItemComponent), selector: "li[kirby-x-menu-anchor-item]", inputs: ["item", "size"] }, { kind: "component", type: i0.forwardRef(() => MenuSubmenuItemComponent), selector: "li[kirby-x-menu-submenu-item]", inputs: ["item", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
306
314
|
}
|
|
307
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0
|
|
315
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MenuItemListComponent, decorators: [{
|
|
308
316
|
type: Component,
|
|
309
317
|
args: [{ selector: 'ul[kirby-x-menu-item-list]', host: {
|
|
310
318
|
'[attr.id]': 'vm.id()',
|
|
@@ -336,14 +344,14 @@ class MenuContainerComponent {
|
|
|
336
344
|
scrollIntoViewIfNecessary(scrollContainer, selectedItem);
|
|
337
345
|
}
|
|
338
346
|
}
|
|
339
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0
|
|
340
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0
|
|
347
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MenuContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
348
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: MenuContainerComponent, isStandalone: true, selector: "kirby-x-menu-container", ngImport: i0, template: `
|
|
341
349
|
<nav aria-label="Sidebar Menu">
|
|
342
350
|
<ul kirby-x-menu-item-list [items]="vm.items()"></ul>
|
|
343
351
|
</nav>
|
|
344
352
|
`, isInline: true, styles: ["nav{padding:0 var(--kirby-spacing-xxs)}\n"], dependencies: [{ kind: "component", type: MenuItemListComponent, selector: "ul[kirby-x-menu-item-list]", inputs: ["items", "size", "id"] }] }); }
|
|
345
353
|
}
|
|
346
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0
|
|
354
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MenuContainerComponent, decorators: [{
|
|
347
355
|
type: Component,
|
|
348
356
|
args: [{ selector: 'kirby-x-menu-container', template: `
|
|
349
357
|
<nav aria-label="Sidebar Menu">
|
|
@@ -372,10 +380,10 @@ class HeightObserverDirective {
|
|
|
372
380
|
this.#observer.unobserve(this.#element);
|
|
373
381
|
this.#observer.disconnect();
|
|
374
382
|
}
|
|
375
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0
|
|
376
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0
|
|
383
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: HeightObserverDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
384
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: HeightObserverDirective, isStandalone: true, selector: "[kirbyXHeightObserver]", outputs: { heightChange: "heightChange" }, ngImport: i0 }); }
|
|
377
385
|
}
|
|
378
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0
|
|
386
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: HeightObserverDirective, decorators: [{
|
|
379
387
|
type: Directive,
|
|
380
388
|
args: [{
|
|
381
389
|
selector: '[kirbyXHeightObserver]',
|
|
@@ -406,10 +414,10 @@ class SidebarService {
|
|
|
406
414
|
set scrollDistance(distance) {
|
|
407
415
|
this.#scrollDistance.set(distance);
|
|
408
416
|
}
|
|
409
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0
|
|
410
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0
|
|
417
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SidebarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
418
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SidebarService, providedIn: 'root' }); }
|
|
411
419
|
}
|
|
412
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0
|
|
420
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SidebarService, decorators: [{
|
|
413
421
|
type: Injectable,
|
|
414
422
|
args: [{ providedIn: 'root' }]
|
|
415
423
|
}] });
|
|
@@ -438,10 +446,10 @@ class SidebarMenuComponent {
|
|
|
438
446
|
this.#sidebarService.scrollDistance = target.scrollTop;
|
|
439
447
|
}
|
|
440
448
|
}
|
|
441
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0
|
|
442
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0
|
|
449
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SidebarMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
450
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: SidebarMenuComponent, isStandalone: true, selector: "aside[kirby-x-sidebar-menu]", ngImport: i0, template: "<div class=\"sidebar-header\" [class.bottom-border]=\"vm.showHeaderBottomBorder()\">\n <ng-content select=\"[slot='header']\"></ng-content>\n</div>\n<div\n kirbyXHeightObserver\n class=\"sidebar-content\"\n (scroll)=\"vm.setScroll($event)\"\n (heightChange)=\"vm.setContainerHeight($event)\"\n>\n <kirby-x-menu-container\n kirbyXHeightObserver\n (heightChange)=\"vm.setMenuHeight($event)\"\n ></kirby-x-menu-container>\n</div>\n<div class=\"sidebar-footer\" [class.top-border]=\"vm.showFooterTopBorder()\">\n <ng-content select=\"[slot='footer']\"></ng-content>\n</div>\n", styles: ["ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}:host{--kirby-inputs-background-color: var(--kirby-white-overlay);--kirby-inputs-background-color-hover: var(--kirby-white-overlay-30);--kirby-inputs-background-color-active: var(--kirby-white-overlay-40);--kirby-inputs-color: var(--kirby-white);--kirby-inputs-indicator-background-color: var(--kirby-white);--kirby-inputs-indicator-color: var(--kirby-black);--kirby-inputs-placeholder-color: var(--kirby-white-overlay-50);--kirby-inputs-elevation: none;height:100%;height:100dvh;background-color:var(--sidebar-background-color, var(--kirby-tertiary));color:var(--sidebar-color, var(--kirby-tertiary-contrast));display:flex;flex-direction:column;overflow:auto}:host *{scrollbar-width:thin;scrollbar-color:var(--kirby-semi-dark) var(--kirby-tertiary)}:host *::-webkit-scrollbar{width:16px}:host *::-webkit-scrollbar-track{background:transparent}:host *::-webkit-scrollbar-thumb{background-color:#8e8e8e80;border-radius:20px;border:4px solid transparent;background-clip:content-box}.sidebar-content{flex-grow:1;display:flex;flex-direction:column;overflow-y:auto}@supports (scrollbar-gutter: stable){.sidebar-content{overflow:hidden auto;scrollbar-gutter:auto}}.sidebar-header,.sidebar-footer{z-index:1;display:flex;align-items:center;justify-content:center;position:sticky}.sidebar-header.bottom-border{box-shadow:0 4px 10px 2px #1c1c1c4d;transition:opacity .3s}.sidebar-footer.top-border{box-shadow:0 -4px 10px 2px #1c1c1c4d;transition:opacity .3s}\n"], dependencies: [{ kind: "directive", type: HeightObserverDirective, selector: "[kirbyXHeightObserver]", outputs: ["heightChange"] }, { kind: "component", type: MenuContainerComponent, selector: "kirby-x-menu-container" }] }); }
|
|
443
451
|
}
|
|
444
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0
|
|
452
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SidebarMenuComponent, decorators: [{
|
|
445
453
|
type: Component,
|
|
446
454
|
args: [{ selector: 'aside[kirby-x-sidebar-menu]', imports: [HeightObserverDirective, MenuContainerComponent], template: "<div class=\"sidebar-header\" [class.bottom-border]=\"vm.showHeaderBottomBorder()\">\n <ng-content select=\"[slot='header']\"></ng-content>\n</div>\n<div\n kirbyXHeightObserver\n class=\"sidebar-content\"\n (scroll)=\"vm.setScroll($event)\"\n (heightChange)=\"vm.setContainerHeight($event)\"\n>\n <kirby-x-menu-container\n kirbyXHeightObserver\n (heightChange)=\"vm.setMenuHeight($event)\"\n ></kirby-x-menu-container>\n</div>\n<div class=\"sidebar-footer\" [class.top-border]=\"vm.showFooterTopBorder()\">\n <ng-content select=\"[slot='footer']\"></ng-content>\n</div>\n", styles: ["ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}:host{--kirby-inputs-background-color: var(--kirby-white-overlay);--kirby-inputs-background-color-hover: var(--kirby-white-overlay-30);--kirby-inputs-background-color-active: var(--kirby-white-overlay-40);--kirby-inputs-color: var(--kirby-white);--kirby-inputs-indicator-background-color: var(--kirby-white);--kirby-inputs-indicator-color: var(--kirby-black);--kirby-inputs-placeholder-color: var(--kirby-white-overlay-50);--kirby-inputs-elevation: none;height:100%;height:100dvh;background-color:var(--sidebar-background-color, var(--kirby-tertiary));color:var(--sidebar-color, var(--kirby-tertiary-contrast));display:flex;flex-direction:column;overflow:auto}:host *{scrollbar-width:thin;scrollbar-color:var(--kirby-semi-dark) var(--kirby-tertiary)}:host *::-webkit-scrollbar{width:16px}:host *::-webkit-scrollbar-track{background:transparent}:host *::-webkit-scrollbar-thumb{background-color:#8e8e8e80;border-radius:20px;border:4px solid transparent;background-clip:content-box}.sidebar-content{flex-grow:1;display:flex;flex-direction:column;overflow-y:auto}@supports (scrollbar-gutter: stable){.sidebar-content{overflow:hidden auto;scrollbar-gutter:auto}}.sidebar-header,.sidebar-footer{z-index:1;display:flex;align-items:center;justify-content:center;position:sticky}.sidebar-header.bottom-border{box-shadow:0 4px 10px 2px #1c1c1c4d;transition:opacity .3s}.sidebar-footer.top-border{box-shadow:0 -4px 10px 2px #1c1c1c4d;transition:opacity .3s}\n"] }]
|
|
447
455
|
}] });
|
|
@@ -470,19 +478,20 @@ class SidebarComponent {
|
|
|
470
478
|
this.checkedItemsChange = new EventEmitter();
|
|
471
479
|
this.expandChange = this.#stateService.expandEvents;
|
|
472
480
|
this.checkChange = this.#stateService.checkEvents;
|
|
481
|
+
this.itemSelect = this.#stateService.selectEvents;
|
|
473
482
|
effect(() => this.selectedItemChange.emit(this.#stateService.selectedItem()));
|
|
474
483
|
effect(() => this.expandedItemsChange.emit(this.#stateService.expandedItems()));
|
|
475
484
|
effect(() => this.checkedItemsChange.emit(this.#stateService.checkedItems()));
|
|
476
485
|
}
|
|
477
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0
|
|
478
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0
|
|
486
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SidebarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
487
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: SidebarComponent, isStandalone: true, selector: "kirby-x-sidebar", inputs: { menuItems: "menuItems", selectedItem: "selectedItem", expandedItems: "expandedItems", checkedItems: "checkedItems", autoCollapse: "autoCollapse" }, outputs: { selectedItemChange: "selectedItemChange", expandedItemsChange: "expandedItemsChange", checkedItemsChange: "checkedItemsChange", expandChange: "expandChange", checkChange: "checkChange", itemSelect: "itemSelect" }, ngImport: i0, template: `
|
|
479
488
|
<aside kirby-x-sidebar-menu>
|
|
480
489
|
<ng-content select="kirby-x-sidebar-header" slot="header"></ng-content>
|
|
481
490
|
<ng-content select="kirby-x-sidebar-footer" slot="footer"></ng-content>
|
|
482
491
|
</aside>
|
|
483
492
|
`, isInline: true, dependencies: [{ kind: "component", type: SidebarMenuComponent, selector: "aside[kirby-x-sidebar-menu]" }] }); }
|
|
484
493
|
}
|
|
485
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0
|
|
494
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SidebarComponent, decorators: [{
|
|
486
495
|
type: Component,
|
|
487
496
|
args: [{
|
|
488
497
|
selector: 'kirby-x-sidebar',
|
|
@@ -514,20 +523,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
|
|
|
514
523
|
type: Output
|
|
515
524
|
}], checkChange: [{
|
|
516
525
|
type: Output
|
|
526
|
+
}], itemSelect: [{
|
|
527
|
+
type: Output
|
|
517
528
|
}] } });
|
|
518
529
|
|
|
519
530
|
class SidebarFooterComponent {
|
|
520
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0
|
|
521
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0
|
|
531
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SidebarFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
532
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: SidebarFooterComponent, isStandalone: true, selector: "kirby-x-sidebar-footer", ngImport: i0, template: '<footer><ng-content></ng-content></footer>', isInline: true, styles: [":host,footer{display:flex;flex-direction:column;align-items:center;justify-content:center}:host{min-height:80px}footer{width:100%}\n"] }); }
|
|
522
533
|
}
|
|
523
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0
|
|
534
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SidebarFooterComponent, decorators: [{
|
|
524
535
|
type: Component,
|
|
525
536
|
args: [{ selector: 'kirby-x-sidebar-footer', template: '<footer><ng-content></ng-content></footer>', styles: [":host,footer{display:flex;flex-direction:column;align-items:center;justify-content:center}:host{min-height:80px}footer{width:100%}\n"] }]
|
|
526
537
|
}] });
|
|
527
538
|
|
|
528
539
|
class SidebarHeaderComponent {
|
|
529
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0
|
|
530
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0
|
|
540
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SidebarHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
541
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: SidebarHeaderComponent, isStandalone: true, selector: "kirby-x-sidebar-header", ngImport: i0, template: `
|
|
531
542
|
<header>
|
|
532
543
|
<span class="sidebar-logo"><ng-content select="[slot='logo']"></ng-content></span>
|
|
533
544
|
<div class="action-bar">
|
|
@@ -536,7 +547,7 @@ class SidebarHeaderComponent {
|
|
|
536
547
|
</header>
|
|
537
548
|
`, isInline: true, styles: [":host,header{display:flex;flex-direction:column;align-items:center;justify-content:center}:host{flex-grow:1}header{width:100%}:host::ng-deep [slot=logo]{display:inline-flex}:host::ng-deep [slot=logo] img,:host::ng-deep img[slot=logo]{object-fit:contain;max-width:100%;max-height:100%}.sidebar-logo{display:flex;align-items:center;height:50px;margin:var(--kirby-spacing-l) var(--kirby-spacing-m)}.action-bar{display:flex;flex-direction:row;align-items:center;justify-content:center;box-sizing:border-box;width:100%}.action-bar:has([slot=action]){padding:0 var(--kirby-spacing-xs) var(--kirby-spacing-xs)}\n"] }); }
|
|
538
549
|
}
|
|
539
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0
|
|
550
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SidebarHeaderComponent, decorators: [{
|
|
540
551
|
type: Component,
|
|
541
552
|
args: [{ selector: 'kirby-x-sidebar-header', template: `
|
|
542
553
|
<header>
|
|
@@ -549,11 +560,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
|
|
|
549
560
|
}] });
|
|
550
561
|
|
|
551
562
|
class SidebarModule {
|
|
552
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0
|
|
553
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0
|
|
554
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0
|
|
563
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SidebarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
564
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.0", ngImport: i0, type: SidebarModule, imports: [SidebarComponent, SidebarFooterComponent, SidebarHeaderComponent], exports: [SidebarComponent, SidebarFooterComponent, SidebarHeaderComponent] }); }
|
|
565
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SidebarModule, imports: [SidebarComponent] }); }
|
|
555
566
|
}
|
|
556
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0
|
|
567
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SidebarModule, decorators: [{
|
|
557
568
|
type: NgModule,
|
|
558
569
|
args: [{
|
|
559
570
|
imports: [SidebarComponent, SidebarFooterComponent, SidebarHeaderComponent],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kirbydesign-extensions-angular-sidebar-menu.mjs","sources":["../../sidebar-menu/src/functions/scroll-into-view-if-necessary/scroll-into-view-if-necessary.function.ts","../../sidebar-menu/src/components/menu-item/menu-item.component.ts","../../sidebar-menu/src/components/menu-item/menu-item.component.html","../../sidebar-menu/src/services/menu-state/menu-state.service.ts","../../sidebar-menu/src/components/menu-anchor-item/menu-anchor-item.component.ts","../../sidebar-menu/src/components/menu-anchor-item/menu-anchor-item.component.html","../../sidebar-menu/src/functions/ensure-in-view/ensure-in-view.function.ts","../../sidebar-menu/src/animations/drop-down.animation.ts","../../sidebar-menu/src/components/menu-submenu-item/menu-submenu-item.component.ts","../../sidebar-menu/src/components/menu-submenu-item/menu-submenu-item.component.html","../../sidebar-menu/src/components/menu-item-list/menu-item-list.component.ts","../../sidebar-menu/src/components/menu-item-list/menu-item-list.component.html","../../sidebar-menu/src/components/menu-container/menu-container.component.ts","../../sidebar-menu/src/directives/height-observer/height-observer.directive.ts","../../sidebar-menu/src/services/sidebar/sidebar.service.ts","../../sidebar-menu/src/components/sidebar-menu/sidebar-menu.component.ts","../../sidebar-menu/src/components/sidebar-menu/sidebar-menu.component.html","../../sidebar-menu/src/public-components/sidebar/sidebar.component.ts","../../sidebar-menu/src/public-components/sidebar-footer/sidebar-footer.component.ts","../../sidebar-menu/src/public-components/sidebar-header/sidebar-header.component.ts","../../sidebar-menu/src/sidebar.module.ts","../../sidebar-menu/src/kirbydesign-extensions-angular-sidebar-menu.ts"],"sourcesContent":["/**\n * the HTMLElement.scrollIntoViewIfNecessary is non-standard and not supported in all browsers (e.g. firefox),\n * so we implement a version based on standard\n */\nexport function scrollIntoViewIfNecessary(\n scrollContainer: Element,\n child: Element,\n position: ScrollLogicalPosition = 'center'\n) {\n const containerRect = scrollContainer.getBoundingClientRect();\n const elementRect = child.getBoundingClientRect();\n if (containerRect.top > elementRect.top || containerRect.bottom < elementRect.bottom) {\n child.scrollIntoView({\n behavior: 'instant',\n block: position,\n inline: position,\n });\n }\n}\n","import { Component, computed, input } from '@angular/core';\nimport { IconModule } from '@kirbydesign/designsystem/icon';\nimport { MenuItemSize } from '../../types';\n\n@Component({\n selector: 'a[kirby-x-menu-item],button[kirby-x-menu-item]',\n host: {\n '[attr.id]': '\"item\" + id()',\n '[class]': 'size()',\n },\n templateUrl: './menu-item.component.html',\n styleUrls: ['./menu-item.component.scss'],\n imports: [IconModule],\n})\nexport class MenuItemComponent {\n readonly id = input.required<string>();\n readonly size = input.required<MenuItemSize>();\n readonly icon = input<string>();\n\n readonly iconSize = computed(() => (this.size() === 'lg' ? 'sm' : 'xs'));\n}\n","<div class=\"menu-item-start {{ size() }}\">\n @if (icon(); as icon) {\n <kirby-icon [size]=\"iconSize()\" [name]=\"icon\"></kirby-icon>\n }\n</div>\n\n<div class=\"menu-item-content\">\n <ng-content></ng-content>\n</div>\n\n<div class=\"menu-item-end\">\n <ng-content select=\"[slot='end']\"></ng-content>\n</div>\n","import { Injectable, Signal, signal } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { CheckEvent, ExpandEvent, SidebarMenuItem } from '../../models';\n\n@Injectable({ providedIn: 'root' })\nexport class MenuStateService {\n readonly #menuItems = signal<SidebarMenuItem[]>([]);\n readonly #selectedItem = signal<string | undefined>(undefined);\n readonly #expandedItems = signal<Set<string>>(new Set());\n readonly #checkedItems = signal<Set<string>>(new Set());\n readonly #autoCollapse = signal<boolean>(false);\n readonly #animationsDisabled = signal<boolean>(false);\n readonly #expandEvents = new Subject<ExpandEvent>();\n readonly #checkEvents = new Subject<CheckEvent>();\n\n get menuItems(): Signal<SidebarMenuItem[]> {\n return this.#menuItems.asReadonly();\n }\n\n set menuItems(items: SidebarMenuItem[]) {\n this.#menuItems.set(items);\n }\n\n get selectedItem(): Signal<string | undefined> {\n return this.#selectedItem.asReadonly();\n }\n\n set selectedItem(id: string) {\n this.#selectedItem.set(id);\n }\n\n get expandedItems(): Signal<Set<string>> {\n return this.#expandedItems.asReadonly();\n }\n\n set expandedItems(ids: Set<string>) {\n this.#expandedItems.set(ids);\n }\n\n get checkedItems(): Signal<Set<string>> {\n return this.#checkedItems.asReadonly();\n }\n\n set checkedItems(ids: Set<string>) {\n this.#checkedItems.set(ids);\n }\n\n set autoCollapse(enabled: boolean) {\n this.#autoCollapse.set(enabled);\n }\n\n get animationsDisabled(): Signal<boolean> {\n return this.#animationsDisabled.asReadonly();\n }\n\n set animationsDisabled(disabled: boolean) {\n this.#animationsDisabled.set(disabled);\n }\n\n get expandEvents(): Observable<ExpandEvent> {\n return this.#expandEvents.asObservable();\n }\n\n get checkEvents(): Observable<CheckEvent> {\n return this.#checkEvents.asObservable();\n }\n\n expandItem(id: string): void {\n this.#expandEvents.next({ id, isExpanded: true });\n if (this.#autoCollapse()) {\n this.#expandedItems.set(this.#findAncestors(id));\n return;\n }\n this.#expandedItems.update((items) => {\n items.add(id);\n return new Set(items);\n });\n }\n\n collapseItem(id: string): void {\n this.#expandEvents.next({ id, isExpanded: false });\n this.#expandedItems.update((items) => {\n items.delete(id);\n return new Set(items);\n });\n }\n\n checkItem(id: string): void {\n this.#checkEvents.next({ id, isChecked: true });\n this.#checkedItems.update((items) => {\n items.add(id);\n return new Set(items);\n });\n }\n\n uncheckItem(id: string): void {\n this.#checkEvents.next({ id, isChecked: false });\n this.#checkedItems.update((items) => {\n items.delete(id);\n return new Set(items);\n });\n }\n\n #findAncestors(id: string): Set<string> {\n return recursivelyFindAncestors(this.#menuItems(), id) ?? new Set();\n }\n}\n\nfunction recursivelyFindAncestors(items: SidebarMenuItem[], id: string): Set<string> | undefined {\n for (const item of items) {\n if (item.id === id) {\n return new Set([item.id]);\n }\n if (item.type === 'submenu') {\n const foundAncestors = recursivelyFindAncestors(item.children, id);\n if (foundAncestors) {\n foundAncestors.add(item.id);\n return foundAncestors;\n }\n }\n }\n return undefined;\n}\n","import { Component, computed, inject, input, Signal } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { ToggleButtonComponent } from '@kirbydesign/designsystem/toggle-button';\nimport { ButtonComponent } from '@kirbydesign/designsystem/button';\nimport { IconComponent } from '@kirbydesign/designsystem/icon';\nimport { BadgeComponent } from '@kirbydesign/designsystem/badge';\nimport { ActionItem, ExternalLinkItem, RouterLinkItem } from '../../models';\nimport { MenuItemSize } from '../../types';\nimport { MenuItemComponent } from '../menu-item';\nimport { MenuStateService } from '../../services/menu-state';\n\ntype ViewModel = {\n item: Signal<ActionItem | RouterLinkItem | ExternalLinkItem>;\n size: Signal<MenuItemSize>;\n isSelected: Signal<boolean>;\n isChecked: Signal<boolean>;\n selectItem: () => void;\n checkItem: (checked: boolean) => void;\n};\n\n@Component({\n selector: 'li[kirby-x-menu-anchor-item]',\n templateUrl: './menu-anchor-item.component.html',\n styleUrls: ['./menu-anchor-item.component.scss'],\n host: {\n '[class.selected]': 'vm.isSelected()',\n '[class.checked]': 'vm.isChecked()',\n '[class.has-toggle]': '!!vm.item().toggle',\n '[class.has-badge]': '!!vm.item().badge',\n },\n imports: [\n MenuItemComponent,\n RouterLink,\n ToggleButtonComponent,\n ButtonComponent,\n IconComponent,\n BadgeComponent,\n ],\n})\nexport class MenuAnchorItemComponent {\n readonly item = input.required<ActionItem | RouterLinkItem | ExternalLinkItem>();\n readonly size = input.required<MenuItemSize>();\n\n readonly #stateService = inject(MenuStateService);\n\n readonly #isSelected = computed(() => this.item().id === this.#stateService.selectedItem());\n readonly #isChecked = computed(() => {\n const id = this.item().id;\n const checkedItems = this.#stateService.checkedItems();\n return checkedItems.has(id);\n });\n\n #selectItem(): void {\n this.#stateService.selectedItem = this.item().id;\n }\n\n #checkItem(checked: boolean): void {\n if (checked) {\n this.#stateService.checkItem(this.item().id);\n } else {\n this.#stateService.uncheckItem(this.item().id);\n }\n }\n\n readonly vm: ViewModel = {\n item: this.item,\n size: this.size,\n isSelected: this.#isSelected,\n isChecked: this.#isChecked,\n selectItem: this.#selectItem.bind(this),\n checkItem: this.#checkItem.bind(this),\n };\n}\n","@let item = vm.item();\n@switch (item.type) {\n @case ('action') {\n <a\n kirby-x-menu-item\n [class.selected]=\"vm.isSelected()\"\n [size]=\"vm.size()\"\n [id]=\"item.id\"\n [icon]=\"item.icon\"\n [attr.href]=\"item.href\"\n (click)=\"$event.preventDefault(); vm.selectItem()\"\n (keydown.enter)=\"$event.preventDefault(); vm.selectItem()\"\n >\n {{ item.title }}\n @if (item.badge) {\n <kirby-badge\n slot=\"end\"\n class=\"item-badge\"\n [themeColor]=\"item.badge.themeColor ?? 'primary'\"\n >\n {{ item.badge.value }}\n </kirby-badge>\n }\n @if (item.toggle) {\n <div slot=\"end\" class=\"toggle-spacer\" [class.unchecked]=\"!vm.isChecked()\"></div>\n }\n </a>\n }\n @case ('router-link') {\n <a\n kirby-x-menu-item\n [class.selected]=\"vm.isSelected()\"\n [size]=\"vm.size()\"\n [id]=\"item.id\"\n [icon]=\"item.icon\"\n [routerLink]=\"item.route\"\n [queryParams]=\"item.queryParams\"\n [skipLocationChange]=\"item.skipLocationChange\"\n [replaceUrl]=\"item.replaceUrl\"\n (click)=\"vm.selectItem()\"\n (keydown.enter)=\"vm.selectItem()\"\n >\n {{ item.title }}\n @if (item.badge) {\n <kirby-badge\n slot=\"end\"\n class=\"item-badge\"\n [themeColor]=\"item.badge.themeColor ?? 'primary'\"\n >\n {{ item.badge.value }}\n </kirby-badge>\n }\n @if (item.toggle) {\n <div slot=\"end\" class=\"toggle-spacer\" [class.unchecked]=\"!vm.isChecked()\"></div>\n }\n </a>\n }\n @case ('external-link') {\n <a\n kirby-x-menu-item\n [class.selected]=\"vm.isSelected()\"\n [size]=\"vm.size()\"\n [id]=\"item.id\"\n [icon]=\"item.icon\"\n [attr.href]=\"item.url\"\n [attr.target]=\"item.target\"\n (click)=\"vm.selectItem()\"\n (keydown.enter)=\"vm.selectItem()\"\n >\n {{ item.title }}\n @if (item.badge) {\n <kirby-badge\n slot=\"end\"\n class=\"item-badge\"\n [themeColor]=\"item.badge.themeColor ?? 'primary'\"\n >\n {{ item.badge.value }}\n </kirby-badge>\n }\n @if (item.toggle) {\n <div slot=\"end\" class=\"toggle-spacer\" [class.unchecked]=\"!vm.isChecked()\"></div>\n }\n </a>\n }\n}\n\n@if (item.toggle) {\n <kirby-toggle-button\n class=\"toggle-button-wrapper\"\n [checked]=\"vm.isChecked()\"\n (checkChanged)=\"vm.checkItem($event)\"\n >\n <button\n kirby-button\n unchecked\n size=\"xs\"\n attentionLevel=\"3\"\n tabindex=\"-1\"\n [noDecoration]=\"true\"\n class=\"toggle-button toggle-button-unchecked\"\n >\n <kirby-icon size=\"xs\" [name]=\"item.toggle.uncheckedIcon\"></kirby-icon>\n </button>\n <button\n kirby-button\n checked\n size=\"xs\"\n attentionLevel=\"3\"\n tabindex=\"-1\"\n [noDecoration]=\"true\"\n class=\"toggle-button toggle-button-checked\"\n >\n <kirby-icon size=\"xs\" [name]=\"item.toggle.checkedIcon\"></kirby-icon>\n </button>\n </kirby-toggle-button>\n}\n","import { scrollIntoViewIfNecessary } from '../scroll-into-view-if-necessary';\n\n/**\n * Ensures the element top is not smaller than the scroll container top.\n */\nexport function ensureInView(scrollContainer: Element, element: Element, durationMs: number): void {\n let startTime: number | null = null;\n\n const updatePosition = (timestamp: number) => {\n if (!startTime) {\n startTime = timestamp;\n }\n\n const elapsedTime = timestamp - startTime;\n\n if (elapsedTime < durationMs) {\n scrollIntoViewIfNecessary(scrollContainer, element, 'start');\n requestAnimationFrame(updatePosition);\n }\n };\n\n requestAnimationFrame(updatePosition);\n}\n","import { animate, AUTO_STYLE, style, transition, trigger } from '@angular/animations';\n\nexport const DropDownAnimation = trigger('dropDownMenu', [\n transition(':enter', [\n style({ height: 0, overflow: 'hidden' }),\n animate('300ms ease', style({ height: AUTO_STYLE })),\n ]),\n\n transition(':leave', [\n style({ height: AUTO_STYLE, overflow: 'hidden' }),\n animate('300ms ease', style({ height: 0 })),\n ]),\n]);\n","import { Component, computed, ElementRef, forwardRef, inject, input, Signal } from '@angular/core';\nimport { IconComponent } from '@kirbydesign/designsystem/icon';\nimport { SubmenuItem } from '../../models';\nimport { MenuItemComponent } from '../menu-item';\nimport { MenuItemSize } from '../../types';\nimport { MenuItemListComponent } from '../menu-item-list';\nimport { MenuStateService } from '../../services/menu-state';\nimport { ensureInView } from '../../functions/ensure-in-view';\nimport { DropDownAnimation } from '../../animations';\n\ntype ViewModel = {\n item: Signal<SubmenuItem>;\n size: Signal<MenuItemSize>;\n isExpanded: Signal<boolean>;\n submenuId: Signal<string>;\n submenuSize: Signal<MenuItemSize>;\n animationsDisabled: Signal<boolean>;\n toggleSubmenu: () => void;\n};\n\n@Component({\n selector: 'li[kirby-x-menu-submenu-item]',\n templateUrl: './menu-submenu-item.component.html',\n styleUrls: ['./menu-submenu-item.component.scss'],\n animations: [DropDownAnimation],\n imports: [MenuItemComponent, IconComponent, forwardRef(() => MenuItemListComponent)],\n})\nexport class MenuSubmenuItemComponent {\n readonly item = input.required<SubmenuItem>();\n readonly size = input.required<MenuItemSize>();\n\n readonly #element = inject(ElementRef).nativeElement as Element;\n readonly #stateService = inject(MenuStateService);\n\n readonly #isExpanded = computed(() => {\n const id = this.item().id;\n const expandedItems = this.#stateService.expandedItems();\n return expandedItems.has(id);\n });\n readonly #submenuSize = computed(() => {\n switch (this.size()) {\n case 'lg':\n return 'md';\n case 'md':\n return 'sm';\n default:\n return 'xs';\n }\n });\n\n #toggleSubmenu(): void {\n const button = this.#element.querySelector('button[kirby-x-menu-item]');\n const scrollContainer = this.#element.closest('.sidebar-content');\n if (button && scrollContainer) {\n ensureInView(scrollContainer, button, 400);\n }\n if (this.#isExpanded()) {\n this.#stateService.collapseItem(this.item().id);\n } else {\n this.#stateService.expandItem(this.item().id);\n }\n }\n\n readonly vm: ViewModel = {\n item: this.item,\n size: this.size,\n isExpanded: this.#isExpanded,\n submenuId: computed(() => `item-${this.item().id}-content`),\n submenuSize: this.#submenuSize,\n animationsDisabled: this.#stateService.animationsDisabled,\n toggleSubmenu: this.#toggleSubmenu.bind(this),\n };\n}\n","@let item = vm.item();\n<button\n kirby-x-menu-item\n type=\"button\"\n class=\"submenu-toggle\"\n [size]=\"vm.size()\"\n [id]=\"item.id\"\n [icon]=\"item.icon\"\n [attr.aria-controls]=\"vm.submenuId()\"\n [attr.aria-expanded]=\"vm.isExpanded()\"\n (click)=\"vm.toggleSubmenu()\"\n>\n {{ item.title }}\n <kirby-icon\n slot=\"end\"\n name=\"arrow-more\"\n class=\"disclosure\"\n [class.rotate]=\"vm.isExpanded()\"\n ></kirby-icon>\n</button>\n@if (vm.isExpanded()) {\n <ul\n kirby-x-menu-item-list\n [items]=\"item.children\"\n [size]=\"vm.submenuSize()\"\n [id]=\"vm.submenuId()\"\n [@dropDownMenu]\n [@.disabled]=\"vm.animationsDisabled()\"\n ></ul>\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, input, Signal } from '@angular/core';\nimport { DividerComponent } from '@kirbydesign/designsystem/divider';\nimport { SidebarMenuItem } from '../../models';\nimport { MenuAnchorItemComponent } from '../menu-anchor-item';\nimport { MenuSubmenuItemComponent } from '../menu-submenu-item';\nimport { MenuItemSize } from '../../types';\n\ntype ViewModel = {\n id: Signal<string | undefined>;\n size: Signal<MenuItemSize>;\n items: Signal<SidebarMenuItem[]>;\n};\n\n@Component({\n selector: 'ul[kirby-x-menu-item-list]',\n templateUrl: './menu-item-list.component.html',\n styleUrls: ['./menu-item-list.component.scss'],\n host: {\n '[attr.id]': 'vm.id()',\n '[class]': 'vm.size()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [DividerComponent, MenuAnchorItemComponent, forwardRef(() => MenuSubmenuItemComponent)],\n})\nexport class MenuItemListComponent {\n readonly items = input.required<SidebarMenuItem[]>();\n readonly size = input<MenuItemSize>('lg');\n readonly id = input<string>();\n\n readonly vm: ViewModel = {\n id: this.id,\n size: this.size,\n items: this.items,\n };\n}\n","@for (item of vm.items(); track item.id) {\n @switch (item.type) {\n @case ('divider') {\n <kirby-divider aria-hidden=\"true\"></kirby-divider>\n }\n @case ('submenu') {\n <li kirby-x-menu-submenu-item [item]=\"item\" [size]=\"vm.size()\"></li>\n }\n @default {\n <li kirby-x-menu-anchor-item [item]=\"item\" [size]=\"vm.size()\"></li>\n }\n }\n}\n","import { afterNextRender, Component, ElementRef, inject, Signal } from '@angular/core';\n\nimport { scrollIntoViewIfNecessary } from '../../functions/scroll-into-view-if-necessary';\nimport { SidebarMenuItem } from '../../models';\nimport { MenuItemListComponent } from '../menu-item-list';\nimport { MenuStateService } from '../../services/menu-state';\n\ntype ViewModel = {\n items: Signal<SidebarMenuItem[]>;\n};\n\n@Component({\n selector: 'kirby-x-menu-container',\n template: `\n <nav aria-label=\"Sidebar Menu\">\n <ul kirby-x-menu-item-list [items]=\"vm.items()\"></ul>\n </nav>\n `,\n styles: 'nav { padding: 0 var(--kirby-spacing-xxs); }',\n imports: [MenuItemListComponent],\n})\nexport class MenuContainerComponent {\n readonly #element = inject(ElementRef).nativeElement;\n readonly #stateService = inject(MenuStateService);\n\n constructor() {\n this.#stateService.animationsDisabled = true;\n afterNextRender({\n read: () => {\n this.#scrollSelectedItemIntoView();\n this.#stateService.animationsDisabled = false;\n },\n });\n }\n\n #scrollSelectedItemIntoView() {\n const selectedItem = this.#element.querySelector('li.selected');\n const scrollContainer = this.#element.closest('.sidebar-content');\n if (selectedItem && scrollContainer) {\n scrollIntoViewIfNecessary(scrollContainer, selectedItem);\n }\n }\n\n readonly vm: ViewModel = {\n items: this.#stateService.menuItems,\n };\n}\n","import { Directive, ElementRef, inject, OnDestroy, output } from '@angular/core';\nimport { debounceTime, Subject } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\n@Directive({\n selector: '[kirbyXHeightObserver]',\n})\nexport class HeightObserverDirective implements OnDestroy {\n readonly heightChange = output<number>();\n\n readonly #element = inject(ElementRef).nativeElement;\n readonly #heightChanges = new Subject<number>();\n\n readonly #observer = new ResizeObserver((entries) => {\n this.#heightChanges.next(entries[0].contentRect.height);\n });\n\n constructor() {\n this.#observer.observe(this.#element, { box: 'content-box' });\n this.#heightChanges\n .pipe(debounceTime(50), distinctUntilChanged())\n .subscribe(this.heightChange.emit.bind(this.heightChange));\n }\n\n ngOnDestroy() {\n this.#observer.unobserve(this.#element);\n this.#observer.disconnect();\n }\n}\n","import { computed, Injectable, Signal, signal } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class SidebarService {\n readonly #menuHeight = signal<number>(0);\n readonly #containerHeight = signal<number>(0);\n readonly #scrollDistance = signal<number>(0);\n\n readonly #scrollableDistance = computed(() =>\n Math.max(0, this.#menuHeight() - this.#containerHeight())\n );\n readonly #hasScrollbar = computed(() => this.#scrollableDistance() > 0);\n readonly #notAtBottom = computed(() => this.#scrollDistance() < this.#scrollableDistance());\n readonly #showHeaderBottomBorder = computed(() => this.#scrollDistance() > 0);\n readonly #showFooterTopBorder = computed(() => this.#hasScrollbar() && this.#notAtBottom());\n\n get showHeaderBottomBorder(): Signal<boolean> {\n return this.#showHeaderBottomBorder;\n }\n\n get showFooterTopBorder(): Signal<boolean> {\n return this.#showFooterTopBorder;\n }\n\n set menuHeight(height: number) {\n this.#menuHeight.set(height);\n }\n\n set containerHeight(height: number) {\n this.#containerHeight.set(height);\n }\n\n set scrollDistance(distance: number) {\n this.#scrollDistance.set(distance);\n }\n}\n","import { Component, inject, Signal } from '@angular/core';\nimport { MenuContainerComponent } from '../menu-container';\nimport { HeightObserverDirective } from '../../directives/height-observer';\nimport { SidebarService } from '../../services/sidebar';\n\ntype ViewModel = {\n showHeaderBottomBorder: Signal<boolean>;\n showFooterTopBorder: Signal<boolean>;\n setContainerHeight: (height: number) => void;\n setMenuHeight: (height: number) => void;\n setScroll: (scroll: Event) => void;\n};\n\n@Component({\n selector: 'aside[kirby-x-sidebar-menu]',\n templateUrl: './sidebar-menu.component.html',\n styleUrls: ['./sidebar-menu.component.scss'],\n imports: [HeightObserverDirective, MenuContainerComponent],\n})\nexport class SidebarMenuComponent {\n readonly #sidebarService = inject(SidebarService);\n\n #setContainerHeight(height: number): void {\n this.#sidebarService.containerHeight = height;\n }\n\n #setMenuHeight(height: number): void {\n this.#sidebarService.menuHeight = height;\n }\n\n #setScrollDistance(event: Event): void {\n const target = event.target as HTMLElement | null;\n if (target) {\n this.#sidebarService.scrollDistance = target.scrollTop;\n }\n }\n\n readonly vm: ViewModel = {\n showHeaderBottomBorder: this.#sidebarService.showHeaderBottomBorder,\n showFooterTopBorder: this.#sidebarService.showFooterTopBorder,\n setContainerHeight: this.#setContainerHeight.bind(this),\n setMenuHeight: this.#setMenuHeight.bind(this),\n setScroll: this.#setScrollDistance.bind(this),\n };\n}\n","<div class=\"sidebar-header\" [class.bottom-border]=\"vm.showHeaderBottomBorder()\">\n <ng-content select=\"[slot='header']\"></ng-content>\n</div>\n<div\n kirbyXHeightObserver\n class=\"sidebar-content\"\n (scroll)=\"vm.setScroll($event)\"\n (heightChange)=\"vm.setContainerHeight($event)\"\n>\n <kirby-x-menu-container\n kirbyXHeightObserver\n (heightChange)=\"vm.setMenuHeight($event)\"\n ></kirby-x-menu-container>\n</div>\n<div class=\"sidebar-footer\" [class.top-border]=\"vm.showFooterTopBorder()\">\n <ng-content select=\"[slot='footer']\"></ng-content>\n</div>\n","import { Component, effect, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { SidebarMenuItem } from '../../models';\nimport { SidebarMenuComponent } from '../../components/sidebar-menu';\nimport { MenuStateService } from '../../services/menu-state';\n\n@Component({\n selector: 'kirby-x-sidebar',\n template: `\n <aside kirby-x-sidebar-menu>\n <ng-content select=\"kirby-x-sidebar-header\" slot=\"header\"></ng-content>\n <ng-content select=\"kirby-x-sidebar-footer\" slot=\"footer\"></ng-content>\n </aside>\n `,\n imports: [SidebarMenuComponent],\n})\nexport class SidebarComponent {\n readonly #stateService = inject(MenuStateService);\n\n @Input()\n set menuItems(menuItems: SidebarMenuItem[]) {\n this.#stateService.menuItems = menuItems;\n }\n\n @Input()\n set selectedItem(value: string) {\n this.#stateService.selectedItem = value;\n }\n\n @Input()\n set expandedItems(value: Set<string>) {\n this.#stateService.expandedItems = value;\n }\n\n @Input()\n set checkedItems(value: Set<string>) {\n this.#stateService.checkedItems = value;\n }\n\n @Input()\n set autoCollapse(value: boolean) {\n this.#stateService.autoCollapse = value;\n }\n\n @Output() selectedItemChange = new EventEmitter<string>();\n @Output() expandedItemsChange = new EventEmitter<Set<string>>();\n @Output() checkedItemsChange = new EventEmitter<Set<string>>();\n @Output() expandChange = this.#stateService.expandEvents;\n @Output() checkChange = this.#stateService.checkEvents;\n\n constructor() {\n effect(() => this.selectedItemChange.emit(this.#stateService.selectedItem()));\n effect(() => this.expandedItemsChange.emit(this.#stateService.expandedItems()));\n effect(() => this.checkedItemsChange.emit(this.#stateService.checkedItems()));\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'kirby-x-sidebar-footer',\n template: '<footer><ng-content></ng-content></footer>',\n styles: `\n :host,\n footer {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n }\n\n :host {\n min-height: 80px;\n }\n\n footer {\n width: 100%;\n }\n `,\n})\nexport class SidebarFooterComponent {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'kirby-x-sidebar-header',\n template: `\n <header>\n <span class=\"sidebar-logo\"><ng-content select=\"[slot='logo']\"></ng-content></span>\n <div class=\"action-bar\">\n <ng-content select=\"[slot='action']\"></ng-content>\n </div>\n </header>\n `,\n styles: `\n :host,\n header {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n }\n\n :host {\n flex-grow: 1;\n }\n\n header {\n width: 100%;\n }\n\n :host::ng-deep [slot='logo'] {\n display: inline-flex;\n }\n\n :host::ng-deep [slot='logo'] img,\n :host::ng-deep img[slot='logo'] {\n object-fit: contain;\n max-width: 100%;\n max-height: 100%;\n }\n\n .sidebar-logo {\n display: flex;\n align-items: center;\n height: 50px;\n margin: var(--kirby-spacing-l) var(--kirby-spacing-m);\n }\n\n .action-bar {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: 100%;\n\n &:has([slot='action']) {\n padding: 0 var(--kirby-spacing-xs) var(--kirby-spacing-xs);\n }\n }\n `,\n})\nexport class SidebarHeaderComponent {}\n","import { NgModule } from '@angular/core';\nimport { SidebarComponent } from './public-components/sidebar';\nimport { SidebarFooterComponent } from './public-components/sidebar-footer';\nimport { SidebarHeaderComponent } from './public-components/sidebar-header';\n\n@NgModule({\n imports: [SidebarComponent, SidebarFooterComponent, SidebarHeaderComponent],\n exports: [SidebarComponent, SidebarFooterComponent, SidebarHeaderComponent],\n})\nexport class SidebarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kirbydesign-extensions-angular-sidebar-menu.mjs","sources":["../../sidebar-menu/src/functions/scroll-into-view-if-necessary/scroll-into-view-if-necessary.function.ts","../../sidebar-menu/src/components/menu-item/menu-item.component.ts","../../sidebar-menu/src/components/menu-item/menu-item.component.html","../../sidebar-menu/src/services/menu-state/menu-state.service.ts","../../sidebar-menu/src/components/menu-anchor-item/menu-anchor-item.component.ts","../../sidebar-menu/src/components/menu-anchor-item/menu-anchor-item.component.html","../../sidebar-menu/src/functions/ensure-in-view/ensure-in-view.function.ts","../../sidebar-menu/src/animations/drop-down.animation.ts","../../sidebar-menu/src/components/menu-submenu-item/menu-submenu-item.component.ts","../../sidebar-menu/src/components/menu-submenu-item/menu-submenu-item.component.html","../../sidebar-menu/src/components/menu-item-list/menu-item-list.component.ts","../../sidebar-menu/src/components/menu-item-list/menu-item-list.component.html","../../sidebar-menu/src/components/menu-container/menu-container.component.ts","../../sidebar-menu/src/directives/height-observer/height-observer.directive.ts","../../sidebar-menu/src/services/sidebar/sidebar.service.ts","../../sidebar-menu/src/components/sidebar-menu/sidebar-menu.component.ts","../../sidebar-menu/src/components/sidebar-menu/sidebar-menu.component.html","../../sidebar-menu/src/public-components/sidebar/sidebar.component.ts","../../sidebar-menu/src/public-components/sidebar-footer/sidebar-footer.component.ts","../../sidebar-menu/src/public-components/sidebar-header/sidebar-header.component.ts","../../sidebar-menu/src/sidebar.module.ts","../../sidebar-menu/src/kirbydesign-extensions-angular-sidebar-menu.ts"],"sourcesContent":["/**\n * the HTMLElement.scrollIntoViewIfNecessary is non-standard and not supported in all browsers (e.g. firefox),\n * so we implement a version based on standard\n */\nexport function scrollIntoViewIfNecessary(\n scrollContainer: Element,\n child: Element,\n position: ScrollLogicalPosition = 'center'\n) {\n const containerRect = scrollContainer.getBoundingClientRect();\n const elementRect = child.getBoundingClientRect();\n if (containerRect.top > elementRect.top || containerRect.bottom < elementRect.bottom) {\n child.scrollIntoView({\n behavior: 'instant',\n block: position,\n inline: position,\n });\n }\n}\n","import { Component, computed, input } from '@angular/core';\nimport { IconModule } from '@kirbydesign/designsystem/icon';\nimport { MenuItemSize } from '../../types';\n\n@Component({\n selector: 'a[kirby-x-menu-item],button[kirby-x-menu-item]',\n host: {\n '[attr.id]': '\"item\" + id()',\n '[class]': 'size()',\n },\n templateUrl: './menu-item.component.html',\n styleUrls: ['./menu-item.component.scss'],\n imports: [IconModule],\n})\nexport class MenuItemComponent {\n readonly id = input.required<string>();\n readonly size = input.required<MenuItemSize>();\n readonly icon = input<string>();\n\n readonly iconSize = computed(() => (this.size() === 'lg' ? 'sm' : 'xs'));\n}\n","<div class=\"menu-item-start {{ size() }}\">\n @if (icon(); as icon) {\n <kirby-icon [size]=\"iconSize()\" [name]=\"icon\"></kirby-icon>\n }\n</div>\n\n<div class=\"menu-item-content\">\n <ng-content></ng-content>\n</div>\n\n<div class=\"menu-item-end\">\n <ng-content select=\"[slot='end']\"></ng-content>\n</div>\n","import { Injectable, Signal, signal } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { CheckEvent, ExpandEvent, SidebarMenuItem } from '../../models';\n\n@Injectable({ providedIn: 'root' })\nexport class MenuStateService {\n readonly #menuItems = signal<SidebarMenuItem[]>([]);\n readonly #selectedItem = signal<string | undefined>(undefined);\n readonly #expandedItems = signal<Set<string>>(new Set());\n readonly #checkedItems = signal<Set<string>>(new Set());\n readonly #autoCollapse = signal<boolean>(false);\n readonly #animationsDisabled = signal<boolean>(false);\n readonly #expandEvents = new Subject<ExpandEvent>();\n readonly #checkEvents = new Subject<CheckEvent>();\n readonly #selectEvents = new Subject<string>();\n\n get menuItems(): Signal<SidebarMenuItem[]> {\n return this.#menuItems.asReadonly();\n }\n\n set menuItems(items: SidebarMenuItem[]) {\n this.#menuItems.set(items);\n }\n\n get selectedItem(): Signal<string | undefined> {\n return this.#selectedItem.asReadonly();\n }\n\n set selectedItem(id: string) {\n this.#selectedItem.set(id);\n }\n\n get expandedItems(): Signal<Set<string>> {\n return this.#expandedItems.asReadonly();\n }\n\n set expandedItems(ids: Set<string>) {\n this.#expandedItems.set(ids);\n }\n\n get checkedItems(): Signal<Set<string>> {\n return this.#checkedItems.asReadonly();\n }\n\n set checkedItems(ids: Set<string>) {\n this.#checkedItems.set(ids);\n }\n\n set autoCollapse(enabled: boolean) {\n this.#autoCollapse.set(enabled);\n }\n\n get animationsDisabled(): Signal<boolean> {\n return this.#animationsDisabled.asReadonly();\n }\n\n set animationsDisabled(disabled: boolean) {\n this.#animationsDisabled.set(disabled);\n }\n\n get expandEvents(): Observable<ExpandEvent> {\n return this.#expandEvents.asObservable();\n }\n\n get checkEvents(): Observable<CheckEvent> {\n return this.#checkEvents.asObservable();\n }\n\n get selectEvents(): Observable<string> {\n return this.#selectEvents.asObservable();\n }\n\n expandItem(id: string): void {\n this.#expandEvents.next({ id, isExpanded: true });\n if (this.#autoCollapse()) {\n this.#expandedItems.set(this.#findAncestors(id));\n return;\n }\n this.#expandedItems.update((items) => {\n items.add(id);\n return new Set(items);\n });\n }\n\n collapseItem(id: string): void {\n this.#expandEvents.next({ id, isExpanded: false });\n this.#expandedItems.update((items) => {\n items.delete(id);\n return new Set(items);\n });\n }\n\n checkItem(id: string): void {\n this.#checkEvents.next({ id, isChecked: true });\n this.#checkedItems.update((items) => {\n items.add(id);\n return new Set(items);\n });\n }\n\n uncheckItem(id: string): void {\n this.#checkEvents.next({ id, isChecked: false });\n this.#checkedItems.update((items) => {\n items.delete(id);\n return new Set(items);\n });\n }\n\n selectItem(id: string): void {\n this.#selectEvents.next(id);\n this.#selectedItem.set(id);\n }\n\n #findAncestors(id: string): Set<string> {\n return recursivelyFindAncestors(this.#menuItems(), id) ?? new Set();\n }\n}\n\nfunction recursivelyFindAncestors(items: SidebarMenuItem[], id: string): Set<string> | undefined {\n for (const item of items) {\n if (item.id === id) {\n return new Set([item.id]);\n }\n if (item.type === 'submenu') {\n const foundAncestors = recursivelyFindAncestors(item.children, id);\n if (foundAncestors) {\n foundAncestors.add(item.id);\n return foundAncestors;\n }\n }\n }\n return undefined;\n}\n","import { Component, computed, inject, input, Signal } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { ToggleButtonComponent } from '@kirbydesign/designsystem/toggle-button';\nimport { ButtonComponent } from '@kirbydesign/designsystem/button';\nimport { IconComponent } from '@kirbydesign/designsystem/icon';\nimport { BadgeComponent } from '@kirbydesign/designsystem/badge';\nimport { ActionItem, ExternalLinkItem, RouterLinkItem } from '../../models';\nimport { MenuItemSize } from '../../types';\nimport { MenuItemComponent } from '../menu-item';\nimport { MenuStateService } from '../../services/menu-state';\n\ntype ViewModel = {\n item: Signal<ActionItem | RouterLinkItem | ExternalLinkItem>;\n size: Signal<MenuItemSize>;\n isSelected: Signal<boolean>;\n isChecked: Signal<boolean>;\n selectItem: () => void;\n checkItem: (checked: boolean) => void;\n};\n\n@Component({\n selector: 'li[kirby-x-menu-anchor-item]',\n templateUrl: './menu-anchor-item.component.html',\n styleUrls: ['./menu-anchor-item.component.scss'],\n host: {\n '[class.selected]': 'vm.isSelected()',\n '[class.checked]': 'vm.isChecked()',\n '[class.has-toggle]': '!!vm.item().toggle',\n '[class.has-badge]': '!!vm.item().badge',\n },\n imports: [\n MenuItemComponent,\n RouterLink,\n ToggleButtonComponent,\n ButtonComponent,\n IconComponent,\n BadgeComponent,\n ],\n})\nexport class MenuAnchorItemComponent {\n readonly item = input.required<ActionItem | RouterLinkItem | ExternalLinkItem>();\n readonly size = input.required<MenuItemSize>();\n\n readonly #stateService = inject(MenuStateService);\n\n readonly #isSelected = computed(() => this.item().id === this.#stateService.selectedItem());\n readonly #isChecked = computed(() => {\n const id = this.item().id;\n const checkedItems = this.#stateService.checkedItems();\n return checkedItems.has(id);\n });\n\n #selectItem(): void {\n this.#stateService.selectItem(this.item().id);\n }\n\n #checkItem(checked: boolean): void {\n if (checked) {\n this.#stateService.checkItem(this.item().id);\n } else {\n this.#stateService.uncheckItem(this.item().id);\n }\n }\n\n readonly vm: ViewModel = {\n item: this.item,\n size: this.size,\n isSelected: this.#isSelected,\n isChecked: this.#isChecked,\n selectItem: this.#selectItem.bind(this),\n checkItem: this.#checkItem.bind(this),\n };\n}\n","@let item = vm.item();\n@switch (item.type) {\n @case ('action') {\n <a\n kirby-x-menu-item\n [class.selected]=\"vm.isSelected()\"\n [size]=\"vm.size()\"\n [id]=\"item.id\"\n [icon]=\"item.icon\"\n [attr.href]=\"item.href\"\n (click)=\"$event.preventDefault(); vm.selectItem()\"\n (keydown.enter)=\"$event.preventDefault(); vm.selectItem()\"\n >\n {{ item.title }}\n @if (item.badge) {\n <kirby-badge\n slot=\"end\"\n class=\"item-badge\"\n [themeColor]=\"item.badge.themeColor ?? 'primary'\"\n >\n {{ item.badge.value }}\n </kirby-badge>\n }\n @if (item.toggle) {\n <div slot=\"end\" class=\"toggle-spacer\" [class.unchecked]=\"!vm.isChecked()\"></div>\n }\n </a>\n }\n @case ('router-link') {\n <a\n kirby-x-menu-item\n [class.selected]=\"vm.isSelected()\"\n [size]=\"vm.size()\"\n [id]=\"item.id\"\n [icon]=\"item.icon\"\n [routerLink]=\"item.route\"\n [queryParams]=\"item.queryParams\"\n [skipLocationChange]=\"item.skipLocationChange\"\n [replaceUrl]=\"item.replaceUrl\"\n (click)=\"vm.selectItem()\"\n (keydown.enter)=\"vm.selectItem()\"\n >\n {{ item.title }}\n @if (item.badge) {\n <kirby-badge\n slot=\"end\"\n class=\"item-badge\"\n [themeColor]=\"item.badge.themeColor ?? 'primary'\"\n >\n {{ item.badge.value }}\n </kirby-badge>\n }\n @if (item.toggle) {\n <div slot=\"end\" class=\"toggle-spacer\" [class.unchecked]=\"!vm.isChecked()\"></div>\n }\n </a>\n }\n @case ('external-link') {\n <a\n kirby-x-menu-item\n [class.selected]=\"vm.isSelected()\"\n [size]=\"vm.size()\"\n [id]=\"item.id\"\n [icon]=\"item.icon\"\n [attr.href]=\"item.url\"\n [attr.target]=\"item.target\"\n (click)=\"vm.selectItem()\"\n (keydown.enter)=\"vm.selectItem()\"\n >\n {{ item.title }}\n @if (item.badge) {\n <kirby-badge\n slot=\"end\"\n class=\"item-badge\"\n [themeColor]=\"item.badge.themeColor ?? 'primary'\"\n >\n {{ item.badge.value }}\n </kirby-badge>\n }\n @if (item.toggle) {\n <div slot=\"end\" class=\"toggle-spacer\" [class.unchecked]=\"!vm.isChecked()\"></div>\n }\n </a>\n }\n}\n\n@if (item.toggle) {\n <kirby-toggle-button\n class=\"toggle-button-wrapper\"\n [checked]=\"vm.isChecked()\"\n (checkChanged)=\"vm.checkItem($event)\"\n >\n <button\n kirby-button\n unchecked\n size=\"xs\"\n attentionLevel=\"3\"\n tabindex=\"-1\"\n [noDecoration]=\"true\"\n class=\"toggle-button toggle-button-unchecked\"\n >\n <kirby-icon size=\"xs\" [name]=\"item.toggle.uncheckedIcon\"></kirby-icon>\n </button>\n <button\n kirby-button\n checked\n size=\"xs\"\n attentionLevel=\"3\"\n tabindex=\"-1\"\n [noDecoration]=\"true\"\n class=\"toggle-button toggle-button-checked\"\n >\n <kirby-icon size=\"xs\" [name]=\"item.toggle.checkedIcon\"></kirby-icon>\n </button>\n </kirby-toggle-button>\n}\n","import { scrollIntoViewIfNecessary } from '../scroll-into-view-if-necessary';\n\n/**\n * Ensures the element top is not smaller than the scroll container top.\n */\nexport function ensureInView(scrollContainer: Element, element: Element, durationMs: number): void {\n let startTime: number | null = null;\n\n const updatePosition = (timestamp: number) => {\n if (!startTime) {\n startTime = timestamp;\n }\n\n const elapsedTime = timestamp - startTime;\n\n if (elapsedTime < durationMs) {\n scrollIntoViewIfNecessary(scrollContainer, element, 'start');\n requestAnimationFrame(updatePosition);\n }\n };\n\n requestAnimationFrame(updatePosition);\n}\n","import { animate, AUTO_STYLE, style, transition, trigger } from '@angular/animations';\n\nexport const DropDownAnimation = trigger('dropDownMenu', [\n transition(':enter', [\n style({ height: 0, overflow: 'hidden' }),\n animate('300ms ease', style({ height: AUTO_STYLE })),\n ]),\n\n transition(':leave', [\n style({ height: AUTO_STYLE, overflow: 'hidden' }),\n animate('300ms ease', style({ height: 0 })),\n ]),\n]);\n","import { Component, computed, ElementRef, forwardRef, inject, input, Signal } from '@angular/core';\nimport { IconComponent } from '@kirbydesign/designsystem/icon';\nimport { SubmenuItem } from '../../models';\nimport { MenuItemComponent } from '../menu-item';\nimport { MenuItemSize } from '../../types';\nimport { MenuItemListComponent } from '../menu-item-list';\nimport { MenuStateService } from '../../services/menu-state';\nimport { ensureInView } from '../../functions/ensure-in-view';\nimport { DropDownAnimation } from '../../animations';\n\ntype ViewModel = {\n item: Signal<SubmenuItem>;\n size: Signal<MenuItemSize>;\n isExpanded: Signal<boolean>;\n submenuId: Signal<string>;\n submenuSize: Signal<MenuItemSize>;\n animationsDisabled: Signal<boolean>;\n toggleSubmenu: () => void;\n};\n\n@Component({\n selector: 'li[kirby-x-menu-submenu-item]',\n templateUrl: './menu-submenu-item.component.html',\n styleUrls: ['./menu-submenu-item.component.scss'],\n animations: [DropDownAnimation],\n imports: [MenuItemComponent, IconComponent, forwardRef(() => MenuItemListComponent)],\n})\nexport class MenuSubmenuItemComponent {\n readonly item = input.required<SubmenuItem>();\n readonly size = input.required<MenuItemSize>();\n\n readonly #element = inject(ElementRef).nativeElement as Element;\n readonly #stateService = inject(MenuStateService);\n\n readonly #isExpanded = computed(() => {\n const id = this.item().id;\n const expandedItems = this.#stateService.expandedItems();\n return expandedItems.has(id);\n });\n readonly #submenuSize = computed(() => {\n switch (this.size()) {\n case 'lg':\n return 'md';\n case 'md':\n return 'sm';\n default:\n return 'xs';\n }\n });\n\n #toggleSubmenu(): void {\n const button = this.#element.querySelector('button[kirby-x-menu-item]');\n const scrollContainer = this.#element.closest('.sidebar-content');\n if (button && scrollContainer) {\n ensureInView(scrollContainer, button, 400);\n }\n if (this.#isExpanded()) {\n this.#stateService.collapseItem(this.item().id);\n } else {\n this.#stateService.expandItem(this.item().id);\n }\n }\n\n readonly vm: ViewModel = {\n item: this.item,\n size: this.size,\n isExpanded: this.#isExpanded,\n submenuId: computed(() => `item-${this.item().id}-content`),\n submenuSize: this.#submenuSize,\n animationsDisabled: this.#stateService.animationsDisabled,\n toggleSubmenu: this.#toggleSubmenu.bind(this),\n };\n}\n","@let item = vm.item();\n<button\n kirby-x-menu-item\n type=\"button\"\n class=\"submenu-toggle\"\n [size]=\"vm.size()\"\n [id]=\"item.id\"\n [icon]=\"item.icon\"\n [attr.aria-controls]=\"vm.submenuId()\"\n [attr.aria-expanded]=\"vm.isExpanded()\"\n (click)=\"vm.toggleSubmenu()\"\n>\n {{ item.title }}\n <kirby-icon\n slot=\"end\"\n name=\"arrow-more\"\n class=\"disclosure\"\n [class.rotate]=\"vm.isExpanded()\"\n ></kirby-icon>\n</button>\n@if (vm.isExpanded()) {\n <ul\n kirby-x-menu-item-list\n [items]=\"item.children\"\n [size]=\"vm.submenuSize()\"\n [id]=\"vm.submenuId()\"\n [@dropDownMenu]\n [@.disabled]=\"vm.animationsDisabled()\"\n ></ul>\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, input, Signal } from '@angular/core';\nimport { DividerComponent } from '@kirbydesign/designsystem/divider';\nimport { SidebarMenuItem } from '../../models';\nimport { MenuAnchorItemComponent } from '../menu-anchor-item';\nimport { MenuSubmenuItemComponent } from '../menu-submenu-item';\nimport { MenuItemSize } from '../../types';\n\ntype ViewModel = {\n id: Signal<string | undefined>;\n size: Signal<MenuItemSize>;\n items: Signal<SidebarMenuItem[]>;\n};\n\n@Component({\n selector: 'ul[kirby-x-menu-item-list]',\n templateUrl: './menu-item-list.component.html',\n styleUrls: ['./menu-item-list.component.scss'],\n host: {\n '[attr.id]': 'vm.id()',\n '[class]': 'vm.size()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [DividerComponent, MenuAnchorItemComponent, forwardRef(() => MenuSubmenuItemComponent)],\n})\nexport class MenuItemListComponent {\n readonly items = input.required<SidebarMenuItem[]>();\n readonly size = input<MenuItemSize>('lg');\n readonly id = input<string>();\n\n readonly vm: ViewModel = {\n id: this.id,\n size: this.size,\n items: this.items,\n };\n}\n","@for (item of vm.items(); track item.id) {\n @switch (item.type) {\n @case ('divider') {\n <kirby-divider aria-hidden=\"true\"></kirby-divider>\n }\n @case ('submenu') {\n <li kirby-x-menu-submenu-item [item]=\"item\" [size]=\"vm.size()\"></li>\n }\n @default {\n <li kirby-x-menu-anchor-item [item]=\"item\" [size]=\"vm.size()\"></li>\n }\n }\n}\n","import { afterNextRender, Component, ElementRef, inject, Signal } from '@angular/core';\n\nimport { scrollIntoViewIfNecessary } from '../../functions/scroll-into-view-if-necessary';\nimport { SidebarMenuItem } from '../../models';\nimport { MenuItemListComponent } from '../menu-item-list';\nimport { MenuStateService } from '../../services/menu-state';\n\ntype ViewModel = {\n items: Signal<SidebarMenuItem[]>;\n};\n\n@Component({\n selector: 'kirby-x-menu-container',\n template: `\n <nav aria-label=\"Sidebar Menu\">\n <ul kirby-x-menu-item-list [items]=\"vm.items()\"></ul>\n </nav>\n `,\n styles: 'nav { padding: 0 var(--kirby-spacing-xxs); }',\n imports: [MenuItemListComponent],\n})\nexport class MenuContainerComponent {\n readonly #element = inject(ElementRef).nativeElement;\n readonly #stateService = inject(MenuStateService);\n\n constructor() {\n this.#stateService.animationsDisabled = true;\n afterNextRender({\n read: () => {\n this.#scrollSelectedItemIntoView();\n this.#stateService.animationsDisabled = false;\n },\n });\n }\n\n #scrollSelectedItemIntoView() {\n const selectedItem = this.#element.querySelector('li.selected');\n const scrollContainer = this.#element.closest('.sidebar-content');\n if (selectedItem && scrollContainer) {\n scrollIntoViewIfNecessary(scrollContainer, selectedItem);\n }\n }\n\n readonly vm: ViewModel = {\n items: this.#stateService.menuItems,\n };\n}\n","import { Directive, ElementRef, inject, OnDestroy, output } from '@angular/core';\nimport { debounceTime, Subject } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\n@Directive({\n selector: '[kirbyXHeightObserver]',\n})\nexport class HeightObserverDirective implements OnDestroy {\n readonly heightChange = output<number>();\n\n readonly #element = inject(ElementRef).nativeElement;\n readonly #heightChanges = new Subject<number>();\n\n readonly #observer = new ResizeObserver((entries) => {\n this.#heightChanges.next(entries[0].contentRect.height);\n });\n\n constructor() {\n this.#observer.observe(this.#element, { box: 'content-box' });\n this.#heightChanges\n .pipe(debounceTime(50), distinctUntilChanged())\n .subscribe(this.heightChange.emit.bind(this.heightChange));\n }\n\n ngOnDestroy() {\n this.#observer.unobserve(this.#element);\n this.#observer.disconnect();\n }\n}\n","import { computed, Injectable, Signal, signal } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class SidebarService {\n readonly #menuHeight = signal<number>(0);\n readonly #containerHeight = signal<number>(0);\n readonly #scrollDistance = signal<number>(0);\n\n readonly #scrollableDistance = computed(() =>\n Math.max(0, this.#menuHeight() - this.#containerHeight())\n );\n readonly #hasScrollbar = computed(() => this.#scrollableDistance() > 0);\n readonly #notAtBottom = computed(() => this.#scrollDistance() < this.#scrollableDistance());\n readonly #showHeaderBottomBorder = computed(() => this.#scrollDistance() > 0);\n readonly #showFooterTopBorder = computed(() => this.#hasScrollbar() && this.#notAtBottom());\n\n get showHeaderBottomBorder(): Signal<boolean> {\n return this.#showHeaderBottomBorder;\n }\n\n get showFooterTopBorder(): Signal<boolean> {\n return this.#showFooterTopBorder;\n }\n\n set menuHeight(height: number) {\n this.#menuHeight.set(height);\n }\n\n set containerHeight(height: number) {\n this.#containerHeight.set(height);\n }\n\n set scrollDistance(distance: number) {\n this.#scrollDistance.set(distance);\n }\n}\n","import { Component, inject, Signal } from '@angular/core';\nimport { MenuContainerComponent } from '../menu-container';\nimport { HeightObserverDirective } from '../../directives/height-observer';\nimport { SidebarService } from '../../services/sidebar';\n\ntype ViewModel = {\n showHeaderBottomBorder: Signal<boolean>;\n showFooterTopBorder: Signal<boolean>;\n setContainerHeight: (height: number) => void;\n setMenuHeight: (height: number) => void;\n setScroll: (scroll: Event) => void;\n};\n\n@Component({\n selector: 'aside[kirby-x-sidebar-menu]',\n templateUrl: './sidebar-menu.component.html',\n styleUrls: ['./sidebar-menu.component.scss'],\n imports: [HeightObserverDirective, MenuContainerComponent],\n})\nexport class SidebarMenuComponent {\n readonly #sidebarService = inject(SidebarService);\n\n #setContainerHeight(height: number): void {\n this.#sidebarService.containerHeight = height;\n }\n\n #setMenuHeight(height: number): void {\n this.#sidebarService.menuHeight = height;\n }\n\n #setScrollDistance(event: Event): void {\n const target = event.target as HTMLElement | null;\n if (target) {\n this.#sidebarService.scrollDistance = target.scrollTop;\n }\n }\n\n readonly vm: ViewModel = {\n showHeaderBottomBorder: this.#sidebarService.showHeaderBottomBorder,\n showFooterTopBorder: this.#sidebarService.showFooterTopBorder,\n setContainerHeight: this.#setContainerHeight.bind(this),\n setMenuHeight: this.#setMenuHeight.bind(this),\n setScroll: this.#setScrollDistance.bind(this),\n };\n}\n","<div class=\"sidebar-header\" [class.bottom-border]=\"vm.showHeaderBottomBorder()\">\n <ng-content select=\"[slot='header']\"></ng-content>\n</div>\n<div\n kirbyXHeightObserver\n class=\"sidebar-content\"\n (scroll)=\"vm.setScroll($event)\"\n (heightChange)=\"vm.setContainerHeight($event)\"\n>\n <kirby-x-menu-container\n kirbyXHeightObserver\n (heightChange)=\"vm.setMenuHeight($event)\"\n ></kirby-x-menu-container>\n</div>\n<div class=\"sidebar-footer\" [class.top-border]=\"vm.showFooterTopBorder()\">\n <ng-content select=\"[slot='footer']\"></ng-content>\n</div>\n","import { Component, effect, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { SidebarMenuItem } from '../../models';\nimport { SidebarMenuComponent } from '../../components/sidebar-menu';\nimport { MenuStateService } from '../../services/menu-state';\n\n@Component({\n selector: 'kirby-x-sidebar',\n template: `\n <aside kirby-x-sidebar-menu>\n <ng-content select=\"kirby-x-sidebar-header\" slot=\"header\"></ng-content>\n <ng-content select=\"kirby-x-sidebar-footer\" slot=\"footer\"></ng-content>\n </aside>\n `,\n imports: [SidebarMenuComponent],\n})\nexport class SidebarComponent {\n readonly #stateService = inject(MenuStateService);\n\n @Input()\n set menuItems(menuItems: SidebarMenuItem[]) {\n this.#stateService.menuItems = menuItems;\n }\n\n @Input()\n set selectedItem(value: string) {\n this.#stateService.selectedItem = value;\n }\n\n @Input()\n set expandedItems(value: Set<string>) {\n this.#stateService.expandedItems = value;\n }\n\n @Input()\n set checkedItems(value: Set<string>) {\n this.#stateService.checkedItems = value;\n }\n\n @Input()\n set autoCollapse(value: boolean) {\n this.#stateService.autoCollapse = value;\n }\n\n @Output() selectedItemChange = new EventEmitter<string>();\n @Output() expandedItemsChange = new EventEmitter<Set<string>>();\n @Output() checkedItemsChange = new EventEmitter<Set<string>>();\n @Output() expandChange = this.#stateService.expandEvents;\n @Output() checkChange = this.#stateService.checkEvents;\n @Output() itemSelect = this.#stateService.selectEvents;\n\n constructor() {\n effect(() => this.selectedItemChange.emit(this.#stateService.selectedItem()));\n effect(() => this.expandedItemsChange.emit(this.#stateService.expandedItems()));\n effect(() => this.checkedItemsChange.emit(this.#stateService.checkedItems()));\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'kirby-x-sidebar-footer',\n template: '<footer><ng-content></ng-content></footer>',\n styles: `\n :host,\n footer {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n }\n\n :host {\n min-height: 80px;\n }\n\n footer {\n width: 100%;\n }\n `,\n})\nexport class SidebarFooterComponent {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'kirby-x-sidebar-header',\n template: `\n <header>\n <span class=\"sidebar-logo\"><ng-content select=\"[slot='logo']\"></ng-content></span>\n <div class=\"action-bar\">\n <ng-content select=\"[slot='action']\"></ng-content>\n </div>\n </header>\n `,\n styles: `\n :host,\n header {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n }\n\n :host {\n flex-grow: 1;\n }\n\n header {\n width: 100%;\n }\n\n :host::ng-deep [slot='logo'] {\n display: inline-flex;\n }\n\n :host::ng-deep [slot='logo'] img,\n :host::ng-deep img[slot='logo'] {\n object-fit: contain;\n max-width: 100%;\n max-height: 100%;\n }\n\n .sidebar-logo {\n display: flex;\n align-items: center;\n height: 50px;\n margin: var(--kirby-spacing-l) var(--kirby-spacing-m);\n }\n\n .action-bar {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: 100%;\n\n &:has([slot='action']) {\n padding: 0 var(--kirby-spacing-xs) var(--kirby-spacing-xs);\n }\n }\n `,\n})\nexport class SidebarHeaderComponent {}\n","import { NgModule } from '@angular/core';\nimport { SidebarComponent } from './public-components/sidebar';\nimport { SidebarFooterComponent } from './public-components/sidebar-footer';\nimport { SidebarHeaderComponent } from './public-components/sidebar-header';\n\n@NgModule({\n imports: [SidebarComponent, SidebarFooterComponent, SidebarHeaderComponent],\n exports: [SidebarComponent, SidebarFooterComponent, SidebarHeaderComponent],\n})\nexport class SidebarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -18,10 +18,10 @@ class SkeletonLoaderComponent {
|
|
|
18
18
|
get _cssClass() {
|
|
19
19
|
return [this.theme, this.shape].filter((cssClass) => !!cssClass);
|
|
20
20
|
}
|
|
21
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0
|
|
22
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0
|
|
21
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SkeletonLoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
22
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: SkeletonLoaderComponent, isStandalone: true, selector: "kirby-x-skeleton-loader", inputs: { theme: "theme", shape: "shape" }, host: { properties: { "class": "this._cssClass" } }, ngImport: i0, template: "<ion-skeleton-text animated=\"true\"></ion-skeleton-text>\n", styles: [":host{overflow:hidden;display:flex;justify-content:center;align-items:center;height:var(--kirby-font-size-n)}:host.rectangle{border-radius:var(--kirby-border-radius-xs)}:host.circle{border-radius:var(--kirby-border-radius-circle)}:host.pill{border-radius:var(--kirby-border-radius-pill)}:host.dark ion-skeleton-text{background-image:linear-gradient(to right,#ffffff29,#ffffff47,#ffffff29 50%)}:host.light ion-skeleton-text{background-image:linear-gradient(to right,#2828280f,#2828281f,#2828280f 50%)}:host-context(.kirby-color-brightness-white) ion-skeleton-text,:host-context(.kirby-color-brightness-light) ion-skeleton-text{background-image:linear-gradient(to right,#2828280f,#2828281f,#2828280f 50%)}:host-context(.kirby-color-brightness-dark) ion-skeleton-text{background-image:linear-gradient(to right,#ffffff29,#ffffff47,#ffffff29 50%)}ion-skeleton-text{position:relative;margin:0;animation-duration:1.5s;background-clip:border-box}\n"], dependencies: [{ kind: "component", type: IonSkeletonText, selector: "ion-skeleton-text", inputs: ["animated"] }] }); }
|
|
23
23
|
}
|
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SkeletonLoaderComponent, decorators: [{
|
|
25
25
|
type: Component,
|
|
26
26
|
args: [{ selector: 'kirby-x-skeleton-loader', standalone: true, imports: [CardComponent, IconComponent, IonSkeletonText], template: "<ion-skeleton-text animated=\"true\"></ion-skeleton-text>\n", styles: [":host{overflow:hidden;display:flex;justify-content:center;align-items:center;height:var(--kirby-font-size-n)}:host.rectangle{border-radius:var(--kirby-border-radius-xs)}:host.circle{border-radius:var(--kirby-border-radius-circle)}:host.pill{border-radius:var(--kirby-border-radius-pill)}:host.dark ion-skeleton-text{background-image:linear-gradient(to right,#ffffff29,#ffffff47,#ffffff29 50%)}:host.light ion-skeleton-text{background-image:linear-gradient(to right,#2828280f,#2828281f,#2828280f 50%)}:host-context(.kirby-color-brightness-white) ion-skeleton-text,:host-context(.kirby-color-brightness-light) ion-skeleton-text{background-image:linear-gradient(to right,#2828280f,#2828281f,#2828280f 50%)}:host-context(.kirby-color-brightness-dark) ion-skeleton-text{background-image:linear-gradient(to right,#ffffff29,#ffffff47,#ffffff29 50%)}ion-skeleton-text{position:relative;margin:0;animation-duration:1.5s;background-clip:border-box}\n"] }]
|
|
27
27
|
}], propDecorators: { theme: [{
|
|
@@ -77,6 +77,12 @@ const illustrations = {
|
|
|
77
77
|
'money.arrow.coin.bars': {
|
|
78
78
|
md: 'money.arrow.coin.bars.medium.svg',
|
|
79
79
|
},
|
|
80
|
+
'money-coinstack.graphline.topcoin.bars': {
|
|
81
|
+
md: 'money-coinstack.graphline.topcoin.bars.medium.svg',
|
|
82
|
+
},
|
|
83
|
+
'money-notes.shield.heart.circle': {
|
|
84
|
+
md: 'money-notes.shield.heart.circle.medium.svg',
|
|
85
|
+
},
|
|
80
86
|
'piggy-bank.money.money-dot.bars': {
|
|
81
87
|
md: 'piggy-bank.money.money-dot.bars.medium.svg',
|
|
82
88
|
},
|
|
@@ -111,10 +117,10 @@ class SpotIllustrationComponent {
|
|
|
111
117
|
: undefined;
|
|
112
118
|
}, ...(ngDevMode ? [{ debugName: "svg" }] : []));
|
|
113
119
|
}
|
|
114
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0
|
|
115
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0
|
|
120
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SpotIllustrationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
121
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: SpotIllustrationComponent, isStandalone: true, selector: "kirby-x-spot-illustration", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "@if (svg()) {\n <ion-icon [src]=\"svg()\" [class]=\"size()\"></ion-icon>\n}\n", styles: [".sm{font-size:40px;display:block}.md{font-size:56px;display:block}.lg{font-size:96px;display:block}.xl{font-size:136px;display:block}:host-context(.kirby-color-brightness-dark){--kirby-x-spot-illustration-background-color: var(--kirby-white-overlay);--kirby-x-spot-illustration-outline-color: var(--kirby-white);--kirby-x-spot-illustration-highlight-color: var(--kirby-primary)}:host-context(.kirby-color-brightness-white){--kirby-x-spot-illustration-background-color: var(--kirby-dark-overlay);--kirby-x-spot-illustration-outline-color: var(--kirby-black);--kirby-x-spot-illustration-highlight-color: var(--kirby-primary)}ion-icon::part(background){fill:var(--kirby-x-spot-illustration-background-color, var(--kirby-dark-overlay))}ion-icon::part(outline){fill:var(--kirby-x-spot-illustration-outline-color, var(--kirby-black))}ion-icon::part(highlight){fill:var(--kirby-x-spot-illustration-highlight-color, var(--kirby-primary))}ion-icon::part(danger){fill:var(--kirby-danger)}ion-icon::part(warning){fill:var(--kirby-warning)}ion-icon::part(success){fill:var(--kirby-success)}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
|
|
116
122
|
}
|
|
117
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0
|
|
123
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SpotIllustrationComponent, decorators: [{
|
|
118
124
|
type: Component,
|
|
119
125
|
args: [{ selector: 'kirby-x-spot-illustration', imports: [IonIcon], template: "@if (svg()) {\n <ion-icon [src]=\"svg()\" [class]=\"size()\"></ion-icon>\n}\n", styles: [".sm{font-size:40px;display:block}.md{font-size:56px;display:block}.lg{font-size:96px;display:block}.xl{font-size:136px;display:block}:host-context(.kirby-color-brightness-dark){--kirby-x-spot-illustration-background-color: var(--kirby-white-overlay);--kirby-x-spot-illustration-outline-color: var(--kirby-white);--kirby-x-spot-illustration-highlight-color: var(--kirby-primary)}:host-context(.kirby-color-brightness-white){--kirby-x-spot-illustration-background-color: var(--kirby-dark-overlay);--kirby-x-spot-illustration-outline-color: var(--kirby-black);--kirby-x-spot-illustration-highlight-color: var(--kirby-primary)}ion-icon::part(background){fill:var(--kirby-x-spot-illustration-background-color, var(--kirby-dark-overlay))}ion-icon::part(outline){fill:var(--kirby-x-spot-illustration-outline-color, var(--kirby-black))}ion-icon::part(highlight){fill:var(--kirby-x-spot-illustration-highlight-color, var(--kirby-primary))}ion-icon::part(danger){fill:var(--kirby-danger)}ion-icon::part(warning){fill:var(--kirby-warning)}ion-icon::part(success){fill:var(--kirby-success)}\n"] }]
|
|
120
126
|
}], propDecorators: { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: true }] }] } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kirbydesign-extensions-angular-spot-illustration.mjs","sources":["../../spot-illustration/src/spot-illustrations.ts","../../spot-illustration/src/spot-illustration.component.ts","../../spot-illustration/src/spot-illustration.component.html","../../spot-illustration/src/kirbydesign-extensions-angular-spot-illustration.ts"],"sourcesContent":["export interface Illustration {\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n}\n\nexport enum SpotIllustrationSize {\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n XL = 'xl',\n}\nexport const illustrations = {\n 'airballoon.wind.ballon-part.cloud': {\n md: 'airballoon.wind.ballon-part.cloud.medium.svg',\n },\n 'banknotes.arrow.dot.circle': {\n md: 'banknotes.arrow.dot.circle.medium.svg',\n },\n 'bell.exclamation-mark.triangle.bars': {\n md: 'bell.exclamation-mark.triangle.bars.medium.svg',\n },\n 'bell.checkmark.dot.bars': {\n xl: 'bell.checkmark.dot.bars.xlarge.svg',\n },\n 'box.none.plus-dot.bars': {\n lg: 'box.none.plus-dot.bars.large.svg',\n },\n 'box.curve.box.half-circle': {\n md: 'box.curve.box.half-circle.medium.svg',\n },\n 'calculator.money.coin.rectangle': {\n md: 'calculator.money.coin.rectangle.medium.svg',\n },\n 'calender.loop-arrow.zoom.bars': {\n lg: 'calender.loop-arrow.zoom.bars.large.svg',\n xl: 'calender.loop-arrow.zoom.bars.xlarge.svg',\n },\n 'calendar.money.coin.bars': {\n md: 'calendar.money.coin.bars.medium.svg',\n },\n 'calender.money-arrows.header.bars': {\n md: 'calender.money-arrows.header.bars.medium.svg',\n lg: 'calender.money-arrows.header.bars.large.svg',\n },\n 'checkmark.circle.circle-part.shadow': {\n lg: 'checkmark.circle.circle-part.shadow.large.svg',\n },\n 'computer.certificate.padlock.circle': {\n lg: 'computer.certificate.padlock.circle.large.svg',\n },\n 'cross.circle.circle-part.shadow': {\n lg: 'cross.circle.circle-part.shadow.large.svg',\n },\n 'exclamation-mark.circle.circle-part.shadow': {\n lg: 'exclamation-mark.circle.circle-part.shadow.large.svg',\n },\n 'hand.balloon.balloon.circle': {\n xl: 'hand.balloon.balloon.circle.xlarge.svg',\n },\n 'hand-money.line.money-dot.bars': {\n md: 'hand-money.line.money-dot.bars.medium.svg',\n },\n 'invest-page.money.dot.circle': {\n md: 'invest-page.money.dot.circle.medium.svg',\n },\n 'invest-document.graph.bars.square': {\n md: 'invest-document.graph.bars.square.medium.svg',\n lg: 'invest-document.graph.bars.square.large.svg',\n xl: 'invest-document.graph.bars.square.xlarge.svg',\n },\n 'megaphone.sound.megaphone-part.circle': {\n xl: 'megaphone.sound.megaphone-part.circle.xlarge.svg',\n },\n 'money.none.coin.bars': {\n md: 'money.none.coin.bars.medium.svg',\n },\n 'money.arrow.coin.bars': {\n md: 'money.arrow.coin.bars.medium.svg',\n },\n 'piggy-bank.money.money-dot.bars': {\n md: 'piggy-bank.money.money-dot.bars.medium.svg',\n },\n 'plant.bars.leaf.bars': {\n md: 'plant.bars.leaf.bars.medium.svg',\n },\n 'robot.none.antenna-dot.body': {\n md: 'robot.none.antenna-dot.body.medium.svg',\n lg: 'robot.none.antenna-dot.body.large.svg',\n },\n} as const satisfies Record<string, Illustration>;\n\nexport type SpotIllustrationName = keyof typeof illustrations | null;\n","import { Component, computed, input } from '@angular/core';\nimport { IonIcon } from '@ionic/angular/standalone';\nimport {\n Illustration,\n illustrations,\n SpotIllustrationName,\n SpotIllustrationSize,\n} from './spot-illustrations';\n\n@Component({\n selector: 'kirby-x-spot-illustration',\n imports: [IonIcon],\n templateUrl: './spot-illustration.component.html',\n styleUrl: './spot-illustration.component.scss',\n})\nexport class SpotIllustrationComponent {\n /**\n * The size of the Spot Illustration\n */\n size = input<SpotIllustrationSize>(SpotIllustrationSize.MD);\n\n /**\n * The name of the Spot Illustration to display\n */\n name = input.required<SpotIllustrationName>();\n\n illustration = computed(() => {\n const name = this.name();\n return name ? illustrations[name] : null;\n });\n\n svg = computed(() => {\n const illustration = this.illustration() as Illustration;\n const size = this.size();\n return illustration && illustration[size]\n ? `assets/spot-illustrations/${illustration[size]}`\n : undefined;\n });\n}\n","@if (svg()) {\n <ion-icon [src]=\"svg()\" [class]=\"size()\"></ion-icon>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;IAOY;AAAZ,CAAA,UAAY,oBAAoB,EAAA;AAC9B,IAAA,oBAAA,CAAA,IAAA,CAAA,GAAA,IAAS;AACT,IAAA,oBAAA,CAAA,IAAA,CAAA,GAAA,IAAS;AACT,IAAA,oBAAA,CAAA,IAAA,CAAA,GAAA,IAAS;AACT,IAAA,oBAAA,CAAA,IAAA,CAAA,GAAA,IAAS;AACX,CAAC,EALW,oBAAoB,KAApB,oBAAoB,GAAA,EAAA,CAAA,CAAA;AAMzB,MAAM,aAAa,GAAG;AAC3B,IAAA,mCAAmC,EAAE;AACnC,QAAA,EAAE,EAAE,8CAA8C;AACnD,KAAA;AACD,IAAA,4BAA4B,EAAE;AAC5B,QAAA,EAAE,EAAE,uCAAuC;AAC5C,KAAA;AACD,IAAA,qCAAqC,EAAE;AACrC,QAAA,EAAE,EAAE,gDAAgD;AACrD,KAAA;AACD,IAAA,yBAAyB,EAAE;AACzB,QAAA,EAAE,EAAE,oCAAoC;AACzC,KAAA;AACD,IAAA,wBAAwB,EAAE;AACxB,QAAA,EAAE,EAAE,kCAAkC;AACvC,KAAA;AACD,IAAA,2BAA2B,EAAE;AAC3B,QAAA,EAAE,EAAE,sCAAsC;AAC3C,KAAA;AACD,IAAA,iCAAiC,EAAE;AACjC,QAAA,EAAE,EAAE,4CAA4C;AACjD,KAAA;AACD,IAAA,+BAA+B,EAAE;AAC/B,QAAA,EAAE,EAAE,yCAAyC;AAC7C,QAAA,EAAE,EAAE,0CAA0C;AAC/C,KAAA;AACD,IAAA,0BAA0B,EAAE;AAC1B,QAAA,EAAE,EAAE,qCAAqC;AAC1C,KAAA;AACD,IAAA,mCAAmC,EAAE;AACnC,QAAA,EAAE,EAAE,8CAA8C;AAClD,QAAA,EAAE,EAAE,6CAA6C;AAClD,KAAA;AACD,IAAA,qCAAqC,EAAE;AACrC,QAAA,EAAE,EAAE,+CAA+C;AACpD,KAAA;AACD,IAAA,qCAAqC,EAAE;AACrC,QAAA,EAAE,EAAE,+CAA+C;AACpD,KAAA;AACD,IAAA,iCAAiC,EAAE;AACjC,QAAA,EAAE,EAAE,2CAA2C;AAChD,KAAA;AACD,IAAA,4CAA4C,EAAE;AAC5C,QAAA,EAAE,EAAE,sDAAsD;AAC3D,KAAA;AACD,IAAA,6BAA6B,EAAE;AAC7B,QAAA,EAAE,EAAE,wCAAwC;AAC7C,KAAA;AACD,IAAA,gCAAgC,EAAE;AAChC,QAAA,EAAE,EAAE,2CAA2C;AAChD,KAAA;AACD,IAAA,8BAA8B,EAAE;AAC9B,QAAA,EAAE,EAAE,yCAAyC;AAC9C,KAAA;AACD,IAAA,mCAAmC,EAAE;AACnC,QAAA,EAAE,EAAE,8CAA8C;AAClD,QAAA,EAAE,EAAE,6CAA6C;AACjD,QAAA,EAAE,EAAE,8CAA8C;AACnD,KAAA;AACD,IAAA,uCAAuC,EAAE;AACvC,QAAA,EAAE,EAAE,kDAAkD;AACvD,KAAA;AACD,IAAA,sBAAsB,EAAE;AACtB,QAAA,EAAE,EAAE,iCAAiC;AACtC,KAAA;AACD,IAAA,uBAAuB,EAAE;AACvB,QAAA,EAAE,EAAE,kCAAkC;AACvC,KAAA;AACD,IAAA,iCAAiC,EAAE;AACjC,QAAA,EAAE,EAAE,4CAA4C;AACjD,KAAA;AACD,IAAA,sBAAsB,EAAE;AACtB,QAAA,EAAE,EAAE,iCAAiC;AACtC,KAAA;AACD,IAAA,6BAA6B,EAAE;AAC7B,QAAA,EAAE,EAAE,wCAAwC;AAC5C,QAAA,EAAE,EAAE,uCAAuC;AAC5C,KAAA;;;
|
|
1
|
+
{"version":3,"file":"kirbydesign-extensions-angular-spot-illustration.mjs","sources":["../../spot-illustration/src/spot-illustrations.ts","../../spot-illustration/src/spot-illustration.component.ts","../../spot-illustration/src/spot-illustration.component.html","../../spot-illustration/src/kirbydesign-extensions-angular-spot-illustration.ts"],"sourcesContent":["export interface Illustration {\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n}\n\nexport enum SpotIllustrationSize {\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n XL = 'xl',\n}\nexport const illustrations = {\n 'airballoon.wind.ballon-part.cloud': {\n md: 'airballoon.wind.ballon-part.cloud.medium.svg',\n },\n 'banknotes.arrow.dot.circle': {\n md: 'banknotes.arrow.dot.circle.medium.svg',\n },\n 'bell.exclamation-mark.triangle.bars': {\n md: 'bell.exclamation-mark.triangle.bars.medium.svg',\n },\n 'bell.checkmark.dot.bars': {\n xl: 'bell.checkmark.dot.bars.xlarge.svg',\n },\n 'box.none.plus-dot.bars': {\n lg: 'box.none.plus-dot.bars.large.svg',\n },\n 'box.curve.box.half-circle': {\n md: 'box.curve.box.half-circle.medium.svg',\n },\n 'calculator.money.coin.rectangle': {\n md: 'calculator.money.coin.rectangle.medium.svg',\n },\n 'calender.loop-arrow.zoom.bars': {\n lg: 'calender.loop-arrow.zoom.bars.large.svg',\n xl: 'calender.loop-arrow.zoom.bars.xlarge.svg',\n },\n 'calendar.money.coin.bars': {\n md: 'calendar.money.coin.bars.medium.svg',\n },\n 'calender.money-arrows.header.bars': {\n md: 'calender.money-arrows.header.bars.medium.svg',\n lg: 'calender.money-arrows.header.bars.large.svg',\n },\n 'checkmark.circle.circle-part.shadow': {\n lg: 'checkmark.circle.circle-part.shadow.large.svg',\n },\n 'computer.certificate.padlock.circle': {\n lg: 'computer.certificate.padlock.circle.large.svg',\n },\n 'cross.circle.circle-part.shadow': {\n lg: 'cross.circle.circle-part.shadow.large.svg',\n },\n 'exclamation-mark.circle.circle-part.shadow': {\n lg: 'exclamation-mark.circle.circle-part.shadow.large.svg',\n },\n 'hand.balloon.balloon.circle': {\n xl: 'hand.balloon.balloon.circle.xlarge.svg',\n },\n 'hand-money.line.money-dot.bars': {\n md: 'hand-money.line.money-dot.bars.medium.svg',\n },\n 'invest-page.money.dot.circle': {\n md: 'invest-page.money.dot.circle.medium.svg',\n },\n 'invest-document.graph.bars.square': {\n md: 'invest-document.graph.bars.square.medium.svg',\n lg: 'invest-document.graph.bars.square.large.svg',\n xl: 'invest-document.graph.bars.square.xlarge.svg',\n },\n 'megaphone.sound.megaphone-part.circle': {\n xl: 'megaphone.sound.megaphone-part.circle.xlarge.svg',\n },\n 'money.none.coin.bars': {\n md: 'money.none.coin.bars.medium.svg',\n },\n 'money.arrow.coin.bars': {\n md: 'money.arrow.coin.bars.medium.svg',\n },\n 'money-coinstack.graphline.topcoin.bars': {\n md: 'money-coinstack.graphline.topcoin.bars.medium.svg',\n },\n 'money-notes.shield.heart.circle': {\n md: 'money-notes.shield.heart.circle.medium.svg',\n },\n 'piggy-bank.money.money-dot.bars': {\n md: 'piggy-bank.money.money-dot.bars.medium.svg',\n },\n 'plant.bars.leaf.bars': {\n md: 'plant.bars.leaf.bars.medium.svg',\n },\n 'robot.none.antenna-dot.body': {\n md: 'robot.none.antenna-dot.body.medium.svg',\n lg: 'robot.none.antenna-dot.body.large.svg',\n },\n} as const satisfies Record<string, Illustration>;\n\nexport type SpotIllustrationName = keyof typeof illustrations | null;\n","import { Component, computed, input } from '@angular/core';\nimport { IonIcon } from '@ionic/angular/standalone';\nimport {\n Illustration,\n illustrations,\n SpotIllustrationName,\n SpotIllustrationSize,\n} from './spot-illustrations';\n\n@Component({\n selector: 'kirby-x-spot-illustration',\n imports: [IonIcon],\n templateUrl: './spot-illustration.component.html',\n styleUrl: './spot-illustration.component.scss',\n})\nexport class SpotIllustrationComponent {\n /**\n * The size of the Spot Illustration\n */\n size = input<SpotIllustrationSize>(SpotIllustrationSize.MD);\n\n /**\n * The name of the Spot Illustration to display\n */\n name = input.required<SpotIllustrationName>();\n\n illustration = computed(() => {\n const name = this.name();\n return name ? illustrations[name] : null;\n });\n\n svg = computed(() => {\n const illustration = this.illustration() as Illustration;\n const size = this.size();\n return illustration && illustration[size]\n ? `assets/spot-illustrations/${illustration[size]}`\n : undefined;\n });\n}\n","@if (svg()) {\n <ion-icon [src]=\"svg()\" [class]=\"size()\"></ion-icon>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -87,9 +87,10 @@ declare class SidebarComponent {
|
|
|
87
87
|
checkedItemsChange: EventEmitter<Set<string>>;
|
|
88
88
|
expandChange: rxjs.Observable<ExpandEvent>;
|
|
89
89
|
checkChange: rxjs.Observable<CheckEvent>;
|
|
90
|
+
itemSelect: rxjs.Observable<string>;
|
|
90
91
|
constructor();
|
|
91
92
|
static ɵfac: i0.ɵɵFactoryDeclaration<SidebarComponent, never>;
|
|
92
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SidebarComponent, "kirby-x-sidebar", never, { "menuItems": { "alias": "menuItems"; "required": false; }; "selectedItem": { "alias": "selectedItem"; "required": false; }; "expandedItems": { "alias": "expandedItems"; "required": false; }; "checkedItems": { "alias": "checkedItems"; "required": false; }; "autoCollapse": { "alias": "autoCollapse"; "required": false; }; }, { "selectedItemChange": "selectedItemChange"; "expandedItemsChange": "expandedItemsChange"; "checkedItemsChange": "checkedItemsChange"; "expandChange": "expandChange"; "checkChange": "checkChange"; }, never, ["kirby-x-sidebar-header", "kirby-x-sidebar-footer"], true, never>;
|
|
93
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SidebarComponent, "kirby-x-sidebar", never, { "menuItems": { "alias": "menuItems"; "required": false; }; "selectedItem": { "alias": "selectedItem"; "required": false; }; "expandedItems": { "alias": "expandedItems"; "required": false; }; "checkedItems": { "alias": "checkedItems"; "required": false; }; "autoCollapse": { "alias": "autoCollapse"; "required": false; }; }, { "selectedItemChange": "selectedItemChange"; "expandedItemsChange": "expandedItemsChange"; "checkedItemsChange": "checkedItemsChange"; "expandChange": "expandChange"; "checkChange": "checkChange"; "itemSelect": "itemSelect"; }, never, ["kirby-x-sidebar-header", "kirby-x-sidebar-footer"], true, never>;
|
|
93
94
|
}
|
|
94
95
|
|
|
95
96
|
declare class SidebarFooterComponent {
|
|
@@ -74,6 +74,12 @@ declare const illustrations: {
|
|
|
74
74
|
readonly 'money.arrow.coin.bars': {
|
|
75
75
|
readonly md: "money.arrow.coin.bars.medium.svg";
|
|
76
76
|
};
|
|
77
|
+
readonly 'money-coinstack.graphline.topcoin.bars': {
|
|
78
|
+
readonly md: "money-coinstack.graphline.topcoin.bars.medium.svg";
|
|
79
|
+
};
|
|
80
|
+
readonly 'money-notes.shield.heart.circle': {
|
|
81
|
+
readonly md: "money-notes.shield.heart.circle.medium.svg";
|
|
82
|
+
};
|
|
77
83
|
readonly 'piggy-bank.money.money-dot.bars': {
|
|
78
84
|
readonly md: "piggy-bank.money.money-dot.bars.medium.svg";
|
|
79
85
|
};
|
|
@@ -142,6 +148,10 @@ declare class SpotIllustrationComponent {
|
|
|
142
148
|
readonly md: "money.none.coin.bars.medium.svg";
|
|
143
149
|
} | {
|
|
144
150
|
readonly md: "money.arrow.coin.bars.medium.svg";
|
|
151
|
+
} | {
|
|
152
|
+
readonly md: "money-coinstack.graphline.topcoin.bars.medium.svg";
|
|
153
|
+
} | {
|
|
154
|
+
readonly md: "money-notes.shield.heart.circle.medium.svg";
|
|
145
155
|
} | {
|
|
146
156
|
readonly md: "piggy-bank.money.money-dot.bars.medium.svg";
|
|
147
157
|
} | {
|