@nova-design-system/nova-webcomponents 3.6.0 → 3.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/native.cjs.js +1 -1
- package/dist/cjs/nv-accordion-item.cjs.entry.js +2 -2
- package/dist/cjs/nv-accordion-item.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-accordion.cjs.entry.js +16 -43
- package/dist/cjs/nv-accordion.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-badge_2.cjs.entry.js +1 -1
- package/dist/cjs/nv-badge_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-calendar.cjs.entry.js +96 -75
- package/dist/cjs/nv-calendar.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +4 -4
- package/dist/cjs/nv-fieldcheckbox.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fielddate.cjs.entry.js +26 -5
- package/dist/cjs/nv-fielddate.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fielddaterange.cjs.entry.js +32 -4
- package/dist/cjs/nv-fielddaterange.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fielddropdown.cjs.entry.js +3 -3
- package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +1 -1
- package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +14 -6
- package/dist/cjs/nv-fieldmultiselect.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-fieldnumber.cjs.entry.js +3 -3
- package/dist/cjs/nv-fieldpassword.cjs.entry.js +3 -3
- package/dist/cjs/nv-fieldradio.cjs.entry.js +3 -3
- package/dist/cjs/nv-fieldselect.cjs.entry.js +5 -5
- package/dist/cjs/nv-fieldslider.cjs.entry.js +3 -3
- package/dist/cjs/nv-fieldtext.cjs.entry.js +3 -3
- package/dist/cjs/nv-fieldtextarea.cjs.entry.js +3 -3
- package/dist/cjs/nv-fieldtime.cjs.entry.js +10 -10
- package/dist/cjs/nv-fieldtime.cjs.entry.js.map +1 -1
- package/dist/cjs/nv-icon.cjs.entry.js +1 -1
- package/dist/cjs/nv-iconbutton_2.cjs.entry.js +2 -2
- package/dist/cjs/nv-menu.cjs.entry.js +1 -1
- package/dist/cjs/nv-menuitem.cjs.entry.js +1 -1
- package/dist/cjs/nv-popover.cjs.entry.js +1 -1
- package/dist/cjs/nv-row.cjs.entry.js +1 -1
- package/dist/cjs/nv-stack.cjs.entry.js +1 -1
- package/dist/cjs/nv-table.cjs.entry.js +2 -2
- package/dist/cjs/nv-toggle.cjs.entry.js +2 -2
- package/dist/cjs/nv-tooltip.cjs.entry.js +1 -1
- package/dist/collection/components/nv-accordion/nv-accordion.docs.js +17 -10
- package/dist/collection/components/nv-accordion/nv-accordion.docs.js.map +1 -1
- package/dist/collection/components/nv-accordion/nv-accordion.js +23 -55
- package/dist/collection/components/nv-accordion/nv-accordion.js.map +1 -1
- package/dist/collection/components/nv-accordion-item/nv-accordion-item.js +5 -5
- package/dist/collection/components/nv-accordion-item/nv-accordion-item.js.map +1 -1
- package/dist/collection/components/nv-calendar/nv-calendar.css +5 -0
- package/dist/collection/components/nv-calendar/nv-calendar.js +113 -74
- package/dist/collection/components/nv-calendar/nv-calendar.js.map +1 -1
- package/dist/collection/components/nv-calendar/partials/calendar-grid.js +3 -0
- package/dist/collection/components/nv-calendar/partials/calendar-grid.js.map +1 -1
- package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js +6 -4
- package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js.map +1 -1
- package/dist/collection/components/nv-fielddate/nv-fielddate.js +51 -5
- package/dist/collection/components/nv-fielddate/nv-fielddate.js.map +1 -1
- package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js +61 -4
- package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js.map +1 -1
- package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +3 -3
- package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js +1 -1
- package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js +7 -1
- package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js.map +1 -1
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js +8 -8
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js.map +1 -1
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +14 -6
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +1 -1
- package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js +3 -3
- package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js +3 -3
- package/dist/collection/components/nv-fieldradio/nv-fieldradio.js +3 -3
- package/dist/collection/components/nv-fieldselect/nv-fieldselect.js +5 -5
- package/dist/collection/components/nv-fieldslider/nv-fieldslider.js +3 -3
- package/dist/collection/components/nv-fieldtext/nv-fieldtext.js +3 -3
- package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js +3 -3
- package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +9 -9
- package/dist/collection/components/nv-fieldtime/nv-fieldtime.js.map +1 -1
- package/dist/collection/components/nv-fieldtime/styles/nv-fieldtime.css +11 -13
- package/dist/collection/components/nv-icon/nv-icon.js +1 -1
- package/dist/collection/components/nv-iconbutton/nv-iconbutton.js +1 -1
- package/dist/collection/components/nv-loader/nv-loader.js +1 -1
- package/dist/collection/components/nv-menu/nv-menu.js +1 -1
- package/dist/collection/components/nv-menuitem/nv-menuitem.js +1 -1
- package/dist/collection/components/nv-popover/nv-popover.js +1 -1
- package/dist/collection/components/nv-row/nv-row.js +1 -1
- package/dist/collection/components/nv-stack/nv-stack.js +1 -1
- package/dist/collection/components/nv-table/nv-table.js +2 -2
- package/dist/collection/components/nv-toggle/nv-toggle.js +2 -2
- package/dist/collection/components/nv-tooltip/nv-tooltip.js +1 -1
- package/dist/components/nv-accordion-item.js +1 -1
- package/dist/components/nv-accordion.js +22 -52
- package/dist/components/nv-accordion.js.map +1 -1
- package/dist/components/nv-alert.js +1 -1
- package/dist/components/nv-avatar.js +1 -1
- package/dist/components/nv-badge.js +1 -1
- package/dist/components/nv-breadcrumb.js +2 -2
- package/dist/components/nv-button.js +1 -1
- package/dist/components/nv-calendar.js +1 -1
- package/dist/components/nv-datagrid.js +2 -2
- package/dist/components/nv-dialog.js +4 -4
- package/dist/components/nv-dialogfooter.js +1 -1
- package/dist/components/nv-fieldcheckbox.js +1 -1
- package/dist/components/nv-fielddate.js +34 -12
- package/dist/components/nv-fielddate.js.map +1 -1
- package/dist/components/nv-fielddaterange.js +40 -11
- package/dist/components/nv-fielddaterange.js.map +1 -1
- package/dist/components/nv-fielddropdown.js +8 -8
- package/dist/components/nv-fielddropdownitem.js +1 -1
- package/dist/components/nv-fielddropdownitemcheck.js +1 -1
- package/dist/components/nv-fieldmultiselect.js +21 -13
- package/dist/components/nv-fieldmultiselect.js.map +1 -1
- package/dist/components/nv-fieldnumber.js +1 -1
- package/dist/components/nv-fieldpassword.js +6 -6
- package/dist/components/nv-fieldradio.js +3 -3
- package/dist/components/nv-fieldselect.js +8 -8
- package/dist/components/nv-fieldslider.js +7 -7
- package/dist/components/nv-fieldtext.js +1 -1
- package/dist/components/nv-fieldtextarea.js +3 -3
- package/dist/components/nv-fieldtime.js +14 -14
- package/dist/components/nv-fieldtime.js.map +1 -1
- package/dist/components/nv-icon.js +1 -1
- package/dist/components/nv-iconbutton.js +1 -1
- package/dist/components/nv-loader.js +1 -1
- package/dist/components/nv-menu.js +4 -4
- package/dist/components/nv-menuitem.js +1 -1
- package/dist/components/nv-popover.js +1 -1
- package/dist/components/nv-row.js +1 -1
- package/dist/components/nv-stack.js +1 -1
- package/dist/components/nv-table.js +2 -2
- package/dist/components/nv-toggle.js +2 -2
- package/dist/components/nv-tooltip.js +1 -1
- package/dist/components/{p-9ed7a440.js → p-0143cee0.js} +5 -5
- package/dist/components/p-0143cee0.js.map +1 -0
- package/dist/components/{p-d2b4441a.js → p-07550eac.js} +3 -3
- package/dist/components/{p-d2b4441a.js.map → p-07550eac.js.map} +1 -1
- package/dist/components/{p-f266b533.js → p-12258eef.js} +5 -5
- package/dist/components/{p-f266b533.js.map → p-12258eef.js.map} +1 -1
- package/dist/components/{p-316ae8e3.js → p-144e80f0.js} +4 -4
- package/dist/components/{p-316ae8e3.js.map → p-144e80f0.js.map} +1 -1
- package/dist/components/{p-230ad6c5.js → p-44df0d22.js} +7 -7
- package/dist/components/p-44df0d22.js.map +1 -0
- package/dist/components/{p-8a5b0f74.js → p-5d5668f0.js} +2 -2
- package/dist/components/{p-8a5b0f74.js.map → p-5d5668f0.js.map} +1 -1
- package/dist/components/{p-618ae85a.js → p-8067d283.js} +2 -2
- package/dist/components/{p-618ae85a.js.map → p-8067d283.js.map} +1 -1
- package/dist/components/{p-5e89eb9d.js → p-8b82a6f4.js} +7 -7
- package/dist/components/{p-5e89eb9d.js.map → p-8b82a6f4.js.map} +1 -1
- package/dist/components/{p-9cff2fd1.js → p-91a558eb.js} +2 -2
- package/dist/components/{p-9cff2fd1.js.map → p-91a558eb.js.map} +1 -1
- package/dist/components/{p-436a0f99.js → p-ba87d9d5.js} +3 -3
- package/dist/components/{p-436a0f99.js.map → p-ba87d9d5.js.map} +1 -1
- package/dist/components/{p-840858ed.js → p-d32b75ac.js} +99 -77
- package/dist/components/p-d32b75ac.js.map +1 -0
- package/dist/components/{p-ac76a11c.js → p-d576d64f.js} +4 -4
- package/dist/components/{p-ac76a11c.js.map → p-d576d64f.js.map} +1 -1
- package/dist/components/{p-f1bbb9e8.js → p-dd7ff995.js} +2 -2
- package/dist/components/{p-f1bbb9e8.js.map → p-dd7ff995.js.map} +1 -1
- package/dist/components/{p-4864a690.js → p-dfd2d4f0.js} +2 -2
- package/dist/components/{p-4864a690.js.map → p-dfd2d4f0.js.map} +1 -1
- package/dist/components/{p-190c8f60.js → p-e104c58a.js} +4 -4
- package/dist/components/p-e104c58a.js.map +1 -0
- package/dist/components/{p-4069966e.js → p-e8e6f88a.js} +2 -2
- package/dist/components/{p-4069966e.js.map → p-e8e6f88a.js.map} +1 -1
- package/dist/components/{p-79b38dfb.js → p-f97d1cb1.js} +3 -3
- package/dist/components/{p-79b38dfb.js.map → p-f97d1cb1.js.map} +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/native.js +1 -1
- package/dist/esm/nv-accordion-item.entry.js +2 -2
- package/dist/esm/nv-accordion-item.entry.js.map +1 -1
- package/dist/esm/nv-accordion.entry.js +16 -43
- package/dist/esm/nv-accordion.entry.js.map +1 -1
- package/dist/esm/nv-badge_2.entry.js +1 -1
- package/dist/esm/nv-badge_2.entry.js.map +1 -1
- package/dist/esm/nv-calendar.entry.js +96 -75
- package/dist/esm/nv-calendar.entry.js.map +1 -1
- package/dist/esm/nv-fieldcheckbox.entry.js +4 -4
- package/dist/esm/nv-fieldcheckbox.entry.js.map +1 -1
- package/dist/esm/nv-fielddate.entry.js +26 -5
- package/dist/esm/nv-fielddate.entry.js.map +1 -1
- package/dist/esm/nv-fielddaterange.entry.js +32 -4
- package/dist/esm/nv-fielddaterange.entry.js.map +1 -1
- package/dist/esm/nv-fielddropdown.entry.js +3 -3
- package/dist/esm/nv-fielddropdownitem.entry.js +1 -1
- package/dist/esm/nv-fieldmultiselect.entry.js +14 -6
- package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -1
- package/dist/esm/nv-fieldnumber.entry.js +3 -3
- package/dist/esm/nv-fieldpassword.entry.js +3 -3
- package/dist/esm/nv-fieldradio.entry.js +3 -3
- package/dist/esm/nv-fieldselect.entry.js +5 -5
- package/dist/esm/nv-fieldslider.entry.js +3 -3
- package/dist/esm/nv-fieldtext.entry.js +3 -3
- package/dist/esm/nv-fieldtextarea.entry.js +3 -3
- package/dist/esm/nv-fieldtime.entry.js +10 -10
- package/dist/esm/nv-fieldtime.entry.js.map +1 -1
- package/dist/esm/nv-icon.entry.js +1 -1
- package/dist/esm/nv-iconbutton_2.entry.js +2 -2
- package/dist/esm/nv-menu.entry.js +1 -1
- package/dist/esm/nv-menuitem.entry.js +1 -1
- package/dist/esm/nv-popover.entry.js +1 -1
- package/dist/esm/nv-row.entry.js +1 -1
- package/dist/esm/nv-stack.entry.js +1 -1
- package/dist/esm/nv-table.entry.js +2 -2
- package/dist/esm/nv-toggle.entry.js +2 -2
- package/dist/esm/nv-tooltip.entry.js +1 -1
- package/dist/native/native.css +1 -1
- package/dist/native/native.esm.js +1 -1
- package/dist/native/native.esm.js.map +1 -1
- package/dist/native/p-051db87c.entry.js +2 -0
- package/dist/native/p-051db87c.entry.js.map +1 -0
- package/dist/native/{p-c9cde996.entry.js → p-0e005d95.entry.js} +2 -2
- package/dist/native/{p-33e5037d.entry.js → p-10ce53ea.entry.js} +2 -2
- package/dist/native/{p-cf468c67.entry.js → p-12039da4.entry.js} +2 -2
- package/dist/native/{p-b829383a.entry.js → p-16ef7dd4.entry.js} +2 -2
- package/dist/native/{p-0ada0382.entry.js → p-2a6783ca.entry.js} +2 -2
- package/dist/native/p-2a6783ca.entry.js.map +1 -0
- package/dist/native/{p-ddb0b9f6.entry.js → p-34bf336f.entry.js} +2 -2
- package/dist/native/{p-625be06b.entry.js → p-3f139780.entry.js} +2 -2
- package/dist/native/{p-c2826f22.entry.js → p-40fa3328.entry.js} +2 -2
- package/dist/native/{p-8030c16b.entry.js → p-4b15cff3.entry.js} +2 -2
- package/dist/native/{p-0ac03708.entry.js → p-516da423.entry.js} +2 -2
- package/dist/native/p-516da423.entry.js.map +1 -0
- package/dist/native/{p-f9aa4900.entry.js → p-64cb38e6.entry.js} +2 -2
- package/dist/native/{p-bab6d0a5.entry.js → p-67c34b8c.entry.js} +2 -2
- package/dist/native/{p-31e72603.entry.js → p-68edb2e8.entry.js} +2 -2
- package/dist/native/p-73c08f3b.entry.js +2 -0
- package/dist/native/p-73c08f3b.entry.js.map +1 -0
- package/dist/native/p-7703c736.entry.js +2 -0
- package/dist/native/p-7703c736.entry.js.map +1 -0
- package/dist/native/{p-1cce9b24.entry.js → p-916acbd3.entry.js} +2 -2
- package/dist/native/p-a50f3850.entry.js +2 -0
- package/dist/native/{p-2d23fcea.entry.js → p-a73fa60a.entry.js} +2 -2
- package/dist/native/{p-5eca22c7.entry.js → p-b3f9db23.entry.js} +2 -2
- package/dist/native/{p-5eca22c7.entry.js.map → p-b3f9db23.entry.js.map} +1 -1
- package/dist/native/{p-be67545e.entry.js → p-bba5cc9b.entry.js} +2 -2
- package/dist/native/{p-e802fbb8.entry.js → p-bee62b2b.entry.js} +2 -2
- package/dist/native/p-dc34da69.entry.js +2 -0
- package/dist/native/p-dc34da69.entry.js.map +1 -0
- package/dist/native/{p-2576c1a0.entry.js → p-f00a4552.entry.js} +2 -2
- package/dist/native/{p-609b3822.entry.js → p-f540db71.entry.js} +2 -2
- package/dist/native/{p-fca3e27d.entry.js → p-f687e05c.entry.js} +2 -2
- package/dist/native/p-f687e05c.entry.js.map +1 -0
- package/dist/native/{p-18831490.entry.js → p-fa81b77f.entry.js} +2 -2
- package/dist/native/p-fa81b77f.entry.js.map +1 -0
- package/dist/native/{p-e19a8885.entry.js → p-fcd52432.entry.js} +2 -2
- package/dist/types/components/nv-accordion/nv-accordion.d.ts +16 -49
- package/dist/types/components/nv-accordion-item/nv-accordion-item.d.ts +2 -2
- package/dist/types/components/nv-calendar/nv-calendar.d.ts +7 -1
- package/dist/types/components/nv-calendar/partials/calendar-grid.d.ts +2 -0
- package/dist/types/components/nv-fieldcheckbox/nv-fieldcheckbox.d.ts +2 -0
- package/dist/types/components/nv-fielddate/nv-fielddate.d.ts +5 -0
- package/dist/types/components/nv-fielddaterange/nv-fielddaterange.d.ts +5 -0
- package/dist/types/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.d.ts +6 -0
- package/dist/types/components/nv-fieldmultiselect/nv-fieldmultiselect.d.ts +4 -0
- package/dist/types/components.d.ts +56 -10
- package/dist/vscode-data.json +1 -5
- package/hydrate/index.js +261 -200
- package/hydrate/index.mjs +261 -200
- package/package.json +1 -1
- package/readme.md +6 -0
- package/dist/components/p-190c8f60.js.map +0 -1
- package/dist/components/p-230ad6c5.js.map +0 -1
- package/dist/components/p-840858ed.js.map +0 -1
- package/dist/components/p-9ed7a440.js.map +0 -1
- package/dist/native/p-0ac03708.entry.js.map +0 -1
- package/dist/native/p-0ada0382.entry.js.map +0 -1
- package/dist/native/p-12963ae4.entry.js +0 -2
- package/dist/native/p-12963ae4.entry.js.map +0 -1
- package/dist/native/p-18831490.entry.js.map +0 -1
- package/dist/native/p-4cf00884.entry.js +0 -2
- package/dist/native/p-4cf00884.entry.js.map +0 -1
- package/dist/native/p-5172f17a.entry.js +0 -2
- package/dist/native/p-a6dc9b59.entry.js +0 -2
- package/dist/native/p-a6dc9b59.entry.js.map +0 -1
- package/dist/native/p-fca3e27d.entry.js.map +0 -1
- package/dist/native/p-fe4e516b.entry.js +0 -2
- package/dist/native/p-fe4e516b.entry.js.map +0 -1
- /package/dist/native/{p-c9cde996.entry.js.map → p-0e005d95.entry.js.map} +0 -0
- /package/dist/native/{p-33e5037d.entry.js.map → p-10ce53ea.entry.js.map} +0 -0
- /package/dist/native/{p-cf468c67.entry.js.map → p-12039da4.entry.js.map} +0 -0
- /package/dist/native/{p-b829383a.entry.js.map → p-16ef7dd4.entry.js.map} +0 -0
- /package/dist/native/{p-ddb0b9f6.entry.js.map → p-34bf336f.entry.js.map} +0 -0
- /package/dist/native/{p-625be06b.entry.js.map → p-3f139780.entry.js.map} +0 -0
- /package/dist/native/{p-c2826f22.entry.js.map → p-40fa3328.entry.js.map} +0 -0
- /package/dist/native/{p-8030c16b.entry.js.map → p-4b15cff3.entry.js.map} +0 -0
- /package/dist/native/{p-f9aa4900.entry.js.map → p-64cb38e6.entry.js.map} +0 -0
- /package/dist/native/{p-bab6d0a5.entry.js.map → p-67c34b8c.entry.js.map} +0 -0
- /package/dist/native/{p-31e72603.entry.js.map → p-68edb2e8.entry.js.map} +0 -0
- /package/dist/native/{p-1cce9b24.entry.js.map → p-916acbd3.entry.js.map} +0 -0
- /package/dist/native/{p-5172f17a.entry.js.map → p-a50f3850.entry.js.map} +0 -0
- /package/dist/native/{p-2d23fcea.entry.js.map → p-a73fa60a.entry.js.map} +0 -0
- /package/dist/native/{p-be67545e.entry.js.map → p-bba5cc9b.entry.js.map} +0 -0
- /package/dist/native/{p-e802fbb8.entry.js.map → p-bee62b2b.entry.js.map} +0 -0
- /package/dist/native/{p-2576c1a0.entry.js.map → p-f00a4552.entry.js.map} +0 -0
- /package/dist/native/{p-609b3822.entry.js.map → p-f540db71.entry.js.map} +0 -0
- /package/dist/native/{p-e19a8885.entry.js.map → p-fcd52432.entry.js.map} +0 -0
|
@@ -50,7 +50,7 @@ const NvMenuitem = class {
|
|
|
50
50
|
/****************************************************************************/
|
|
51
51
|
//#region RENDER
|
|
52
52
|
render() {
|
|
53
|
-
return (index.h(index.Host, { key: '
|
|
53
|
+
return (index.h(index.Host, { key: '327165c89f4e5decf8dc4b7b28e18562e528056d', role: "menuitem", tabindex: this.disabled ? '-1' : '0' }, this.icon && index.h("nv-icon", { key: '4247d922bca3797dc3f2917218749a8d3c038df1', name: this.icon }), index.h("slot", { key: '1f81464ccf47a5bd918873ef70d3d3385e870638' }), this.label && index.h("span", { key: '113358a0cacfa53710ec0049a8e1c5e981de5b15', "data-scope": "text" }, this.label), this.shortcut && !this.hasSubmenu && index.h("kbd", { key: 'ee7c773b89bf1f55876cf297600247883cd54937' }, this.shortcut), this.hasSubmenu && index.h("nv-icon", { key: '70cbe2df51d9fbffe3b474b54e87aa06801acef7', name: "chevron-right" })));
|
|
54
54
|
}
|
|
55
55
|
get el() { return index.getElement(this); }
|
|
56
56
|
};
|
|
@@ -2368,7 +2368,7 @@ const NvPopover = class {
|
|
|
2368
2368
|
/****************************************************************************/
|
|
2369
2369
|
//#region RENDER
|
|
2370
2370
|
render() {
|
|
2371
|
-
return (index.h(index.Host, { key: '
|
|
2371
|
+
return (index.h(index.Host, { key: '27f6f8acc148b3dc2b16a391c54a4a1de0637a57' }, index.h("slot", { key: 'd25614b3bfc5565d3729da11f6f83b4d92e83e19', name: "trigger" }), index.h("div", { key: '3b777862573405b2bb2a377750d9bb859a4bb20b', "data-scope": "popover", hidden: true, ref: el => (this.popoverElement = el) }, this.hasArrow && (index.h("div", { key: 'dda88155630bca69ec06a766e2999ed369d5d6c6', "data-scope": "arrow", ref: el => (this.arrowElement = el) })), index.h("slot", { key: '51eaf873fe239d3c4106e997f6cdd37b1bb29074', name: "content" }))));
|
|
2372
2372
|
}
|
|
2373
2373
|
get el() { return index.getElement(this); }
|
|
2374
2374
|
static get watchers() { return {
|
|
@@ -14,7 +14,7 @@ const NvRow = class {
|
|
|
14
14
|
/****************************************************************************/
|
|
15
15
|
//#region RENDER
|
|
16
16
|
render() {
|
|
17
|
-
return (index.h(index.Host, { key: '
|
|
17
|
+
return (index.h(index.Host, { key: 'daad5f10b72b95468ac50a3deab7faf87769be42' }, index.h("slot", { key: '16509b69358739997fe97a45ea9476f30682de2b' })));
|
|
18
18
|
}
|
|
19
19
|
};
|
|
20
20
|
NvRow.style = NvRowStyle0;
|
|
@@ -23,7 +23,7 @@ const NvStack = class {
|
|
|
23
23
|
/****************************************************************************/
|
|
24
24
|
//#region RENDER
|
|
25
25
|
render() {
|
|
26
|
-
return (index.h(index.Host, { key: '
|
|
26
|
+
return (index.h(index.Host, { key: '0a93c321e46c7e17ac0efe09556ee4447fec5f74', class: clsx.clsx(this.fill && 'nv-stack-fill', this.flex && 'nv-stack-flex', this.full && 'w-full', this.gutter && !this.vertical && `gap-x-${this.gutter}`, this.gutter && this.vertical && `gap-y-${this.gutter}`, this.vertical && 'nv-stack-vertical') }, index.h("slot", { key: 'faf55f3f579311c333e1ea66f1a19ace98594377' })));
|
|
27
27
|
}
|
|
28
28
|
};
|
|
29
29
|
NvStack.style = NvStackStyle0;
|
|
@@ -315,14 +315,14 @@ const NvTable = class {
|
|
|
315
315
|
const rows = !this.table || this.table === undefined || this.parsedData.length === 0
|
|
316
316
|
? []
|
|
317
317
|
: this.table.data;
|
|
318
|
-
return (index.h(index.Host, { key: '
|
|
318
|
+
return (index.h(index.Host, { key: 'a389cee4e6b29cdb852b8b6c0f8fd39926474525' }, index.h("div", { key: 'ea7629bc0cba0ec1cbe59f6f03ac2527095d9abb', class: "hidden" }, index.h("slot", { key: 'b070a8e7f54fd3846744bb659447b97547d1c7cf' })), index.h("slot", { key: 'b0eb0a2d7c98073e88282b1e2e513b9e6a335345', name: "before" }), this.parsedColumns.length === 0 && this.parsedData.length === 0 ? (index.h("div", { class: "no-data" }, this.noColumnsNoDataMessage)) : (index.h("table", { class: "table" }, this.parsedColumns.length > 0 && headerGroups.length > 0 && (index.h("thead", { class: "table-header" }, index.h("tr", null, headerGroups &&
|
|
319
319
|
headerGroups.map(col => {
|
|
320
320
|
return (index.h("th", { key: col.name }, this.renderTemplate(this.headerTemplateCache.get(col.name), {}) || col.header));
|
|
321
321
|
})))), index.h("tbody", { class: "table-body" }, !rows || rows.length === 0 ? (index.h("tr", null, index.h("td", { colSpan: headerGroups.length || 12, class: "no-data" }, this.noDataMessage))) : (rows.map(row => (index.h("tr", { key: JSON.stringify(row) }, headerGroups.map(col => {
|
|
322
322
|
var _a;
|
|
323
323
|
return (index.h("td", null, this.renderTemplate(this.templateCache.get(col.name), row) ||
|
|
324
324
|
((_a = row[col.name]) !== null && _a !== void 0 ? _a : this.fallbackValue)));
|
|
325
|
-
})))))))), index.h("slot", { key: '
|
|
325
|
+
})))))))), index.h("slot", { key: '599e4c1663c3a80375e3c511358be381b06eec2f', name: "after" })));
|
|
326
326
|
}
|
|
327
327
|
get el() { return index.getElement(this); }
|
|
328
328
|
static get watchers() { return {
|
|
@@ -66,8 +66,8 @@ const NvToggle = class {
|
|
|
66
66
|
/****************************************************************************/
|
|
67
67
|
//#region RENDER
|
|
68
68
|
render() {
|
|
69
|
-
return (index.h(index.Host, { key: '
|
|
70
|
-
this.el.querySelector('[slot="description"]')) && (index.h("div", { key: '
|
|
69
|
+
return (index.h(index.Host, { key: '7aac2ef8519d5c033a0e74461755e2286420032a', class: clsx.clsx(this.labelPlacement === 'before' && 'label-placement-before') }, index.h("div", { key: 'fb0f560aff50b9d3c2b75ba2b59dd68012f5af10', class: "input-container" }, index.h("input", { key: '61ff98c20dec0822979f04ad3b3316fc3caac31f', type: "checkbox", id: this.inputId, name: this.name, autocomplete: "off", value: this.value, checked: Boolean(this.checked), disabled: this.disabled || this.readonly, readonly: this.readonly })), index.h("div", { key: '543ad351428f6ae60e94bd31e3a7a6922c02e5d4', class: "text-container" }, (this.label || this.el.querySelector('[slot="label"]')) && (index.h("label", { key: '42f764c9c4454cf5b8b1fa88c2c43654170a5222', htmlFor: this.inputId, class: clsx.clsx(this.hideLabel && 'visually-hidden') }, index.h("slot", { key: '125247eeea72b68de829f36ad817a4381541ad07', name: "label" }, this.label))), (this.description ||
|
|
70
|
+
this.el.querySelector('[slot="description"]')) && (index.h("div", { key: 'a2fcd0d39a8f555e7d6b64879e84ff7f011e4901', class: "description" }, index.h("slot", { key: '4e7af6b6a0a25fcb4d9529dcb1a32cb7c928c7de', name: "description" }, this.description))))));
|
|
71
71
|
}
|
|
72
72
|
static get formAssociated() { return true; }
|
|
73
73
|
get el() { return index.getElement(this); }
|
|
@@ -37,7 +37,7 @@ const NvTooltip = class {
|
|
|
37
37
|
/****************************************************************************/
|
|
38
38
|
//#region RENDER
|
|
39
39
|
render() {
|
|
40
|
-
return (index.h(index.Host, { key: '
|
|
40
|
+
return (index.h(index.Host, { key: 'ced39f0ebd3ee8eba520e6d6241728e95031dafc' }, index.h("slot", { key: '2b65cb626604a29e1924e7eb2bbb4e937c1a9e9c' }), index.h("nv-popover", { key: 'd4c91e52da651c1545b6d7af98c740e08eeaffbf', triggerMode: "hover", hasArrow: true, placement: this.placement, triggerElement: this.triggerElement, groupName: 'tooltip', enterDelay: this.enterDelay }, index.h("p", { key: '45805ecf6ffee80f4f81acce2d921ad66585bf2b', slot: "content" }, this.message), index.h("slot", { key: 'e6a7e80c35c3a87627a50b271c86783fab791338', name: "content" }))));
|
|
41
41
|
}
|
|
42
42
|
get el() { return index.getElement(this); }
|
|
43
43
|
};
|
|
@@ -9,7 +9,7 @@ const NvAccordionDocs = {
|
|
|
9
9
|
description: 'Accordion with simple items',
|
|
10
10
|
args: {
|
|
11
11
|
mode: 'accordion',
|
|
12
|
-
data:
|
|
12
|
+
data: [
|
|
13
13
|
{
|
|
14
14
|
id: '1',
|
|
15
15
|
title: 'Title 1',
|
|
@@ -20,7 +20,7 @@ const NvAccordionDocs = {
|
|
|
20
20
|
title: 'Title 2',
|
|
21
21
|
content: 'Content of title 2',
|
|
22
22
|
},
|
|
23
|
-
]
|
|
23
|
+
],
|
|
24
24
|
},
|
|
25
25
|
template: h("nv-accordion", { "data-storybook-args": true }),
|
|
26
26
|
},
|
|
@@ -29,7 +29,7 @@ const NvAccordionDocs = {
|
|
|
29
29
|
description: 'Accordion allowing multiple items to be open',
|
|
30
30
|
args: {
|
|
31
31
|
mode: 'multi',
|
|
32
|
-
data:
|
|
32
|
+
data: [
|
|
33
33
|
{
|
|
34
34
|
id: '1',
|
|
35
35
|
title: 'Title 1',
|
|
@@ -40,26 +40,33 @@ const NvAccordionDocs = {
|
|
|
40
40
|
title: 'Title 2',
|
|
41
41
|
content: 'Content of title 2',
|
|
42
42
|
},
|
|
43
|
-
]
|
|
43
|
+
],
|
|
44
44
|
},
|
|
45
45
|
template: h("nv-accordion", { "data-storybook-args": true }),
|
|
46
46
|
},
|
|
47
47
|
{
|
|
48
48
|
name: 'CustomHeader',
|
|
49
49
|
description: 'Real-world example with TraXes Connection Points',
|
|
50
|
-
|
|
50
|
+
args: {
|
|
51
|
+
mode: 'accordion',
|
|
52
|
+
openIndexes: [0, 2],
|
|
53
|
+
},
|
|
54
|
+
template: (h("nv-accordion", { "data-storybook-args": true }, h("nv-accordion-item", null, h("div", { slot: "header" }, h("div", { "data-class": "flex items-center justify-between w-full" }, h("div", { "data-class": "flex flex-col border-r border-[#E3E3E3] pr-4 mr-4" }, h("span", { "data-class": "nv-accordion-item__title" }, "EC-308"), h("span", { "data-class": "nv-accordion-item__subtitle" }, "Connection point")), h("nv-badge", { color: "success", label: "Running" }, h("nv-icon", { slot: "leading-icon", name: "check", size: "sm" })))), h("div", { slot: "content", "data-class": "flex items-center justify-between" }, h("div", null, h("p", null, "Single accordion or accordion group"), h("p", null, "Use the accordion as a single instance, or in a group of accordions stacked vertically."), h("p", null, "The accordion title is wrapped in a heading tag by default. Alter it to fit the information architecture of the page.")))), h("nv-accordion-item", null, h("div", { slot: "header" }, h("div", { "data-class": "flex items-center justify-between w-full" }, h("div", { "data-class": "flex flex-col border-r border-[#E3E3E3] pr-4 mr-4" }, h("span", { "data-class": "nv-accordion-item__title" }, "EC-309"), h("span", { "data-class": "nv-accordion-item__subtitle" }, "Connection point")), h("nv-badge", { color: "success", label: "Running" }, h("nv-icon", { slot: "leading-icon", name: "check", size: "sm" })))), h("div", { slot: "content" }, h("p", null, "Content for EC-309 connection point"))), h("nv-accordion-item", null, h("div", { slot: "header" }, h("div", { "data-class": "flex items-center justify-between w-full" }, h("div", { "data-class": "flex flex-col border-r border-[#E3E3E3] pr-4 mr-4" }, h("span", { "data-class": "nv-accordion-item__title" }, "EC-310"), h("span", { "data-class": "nv-accordion-item__subtitle" }, "Connection point")), h("nv-badge", { color: "error", label: "Stopped" }, h("nv-icon", { slot: "leading-icon", name: "x", size: "sm" })))), h("div", { slot: "content" }, h("p", null, "Content for EC-310 connection point (stopped)"))))),
|
|
51
55
|
},
|
|
52
56
|
{
|
|
53
57
|
name: 'DisabledItem',
|
|
54
58
|
description: 'Accordion with a disabled item',
|
|
55
|
-
|
|
59
|
+
args: {
|
|
60
|
+
mode: 'accordion',
|
|
61
|
+
},
|
|
62
|
+
template: (h("nv-accordion", { "data-storybook-args": true }, h("nv-accordion-item", { itemTitle: "Active item", open: true }, h("div", { slot: "content" }, "This item is accessible")), h("nv-accordion-item", { itemTitle: "Disabled item", disabled: true }, h("div", { slot: "content" }, "This item is not accessible because it is disabled")))),
|
|
56
63
|
},
|
|
57
64
|
{
|
|
58
65
|
name: 'OpenIndexesDemo',
|
|
59
66
|
description: 'Demonstration of openIndexes with multiple items and first item pre-opened',
|
|
60
67
|
args: {
|
|
61
68
|
mode: 'accordion',
|
|
62
|
-
data:
|
|
69
|
+
data: [
|
|
63
70
|
{
|
|
64
71
|
id: '1',
|
|
65
72
|
title: 'Item 1 - Pre-opened',
|
|
@@ -110,7 +117,7 @@ const NvAccordionDocs = {
|
|
|
110
117
|
title: 'Item 10',
|
|
111
118
|
content: 'Content of the tenth item.',
|
|
112
119
|
},
|
|
113
|
-
]
|
|
120
|
+
],
|
|
114
121
|
openIndexes: [0],
|
|
115
122
|
},
|
|
116
123
|
template: h("nv-accordion", { "data-storybook-args": true }),
|
|
@@ -120,7 +127,7 @@ const NvAccordionDocs = {
|
|
|
120
127
|
description: 'Accordion with complex data including all possible attributes',
|
|
121
128
|
args: {
|
|
122
129
|
mode: 'accordion',
|
|
123
|
-
data:
|
|
130
|
+
data: [
|
|
124
131
|
{
|
|
125
132
|
id: '1',
|
|
126
133
|
title: 'Complete section',
|
|
@@ -135,7 +142,7 @@ const NvAccordionDocs = {
|
|
|
135
142
|
content: 'Inaccessible content',
|
|
136
143
|
disabled: true,
|
|
137
144
|
},
|
|
138
|
-
]
|
|
145
|
+
],
|
|
139
146
|
openIndexes: [0],
|
|
140
147
|
},
|
|
141
148
|
template: h("nv-accordion", { "data-storybook-args": true }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nv-accordion.docs.js","sourceRoot":"","sources":["../../../src/components/nv-accordion/nv-accordion.docs.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h } from '@stencil/core';\nimport type { NovaDocs } from '../../nova-docs';\nimport { Components } from '../../components';\n\nconst NvAccordionDocs: NovaDocs<Components.NvAccordion> = {\n component: 'nv-accordion',\n subcomponents: ['nv-accordion-item', 'nv-icon', 'nv-button', 'nv-badge'],\n badge: 'beta',\n stories: [\n {\n name: 'Default',\n description: 'Accordion with simple items',\n args: {\n mode: 'accordion',\n data: JSON.stringify([\n {\n id: '1',\n title: 'Title 1',\n content: 'Content of title 1',\n },\n {\n id: '2',\n title: 'Title 2',\n content: 'Content of title 2',\n },\n ]),\n },\n template: <nv-accordion data-storybook-args></nv-accordion>,\n },\n {\n name: 'MultiMode',\n description: 'Accordion allowing multiple items to be open',\n args: {\n mode: 'multi',\n data: JSON.stringify([\n {\n id: '1',\n title: 'Title 1',\n content: 'Content of title 1',\n },\n {\n id: '2',\n title: 'Title 2',\n content: 'Content of title 2',\n },\n ]),\n },\n template: <nv-accordion data-storybook-args></nv-accordion>,\n },\n {\n name: 'CustomHeader',\n description: 'Real-world example with TraXes Connection Points',\n template: (\n <nv-accordion mode=\"accordion\" openIndexes={[0, 2]}>\n <nv-accordion-item>\n <div slot=\"header\">\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex flex-col border-r border-[#E3E3E3] pr-4 mr-4\">\n <span class=\"nv-accordion-item__title\">EC-308</span>\n <span class=\"nv-accordion-item__subtitle\">\n Connection point\n </span>\n </div>\n <nv-badge color=\"success\" label=\"Running\">\n <nv-icon slot=\"leading-icon\" name=\"check\" size=\"sm\" />\n </nv-badge>\n </div>\n </div>\n <div slot=\"content\" class=\"flex items-center justify-between\">\n <div>\n <p>Single accordion or accordion group</p>\n <p>\n Use the accordion as a single instance, or in a group of\n accordions stacked vertically.\n </p>\n <p>\n The accordion title is wrapped in a heading tag by default.\n Alter it to fit the information architecture of the page.\n </p>\n </div>\n </div>\n </nv-accordion-item>\n <nv-accordion-item>\n <div slot=\"header\">\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex flex-col border-r border-[#E3E3E3] pr-4 mr-4\">\n <span class=\"nv-accordion-item__title\">EC-309</span>\n <span class=\"nv-accordion-item__subtitle\">\n Connection point\n </span>\n </div>\n <nv-badge color=\"success\" label=\"Running\">\n <nv-icon slot=\"leading-icon\" name=\"check\" size=\"sm\" />\n </nv-badge>\n </div>\n </div>\n <div slot=\"content\">\n <p>Content for EC-309 connection point</p>\n </div>\n </nv-accordion-item>\n <nv-accordion-item>\n <div slot=\"header\">\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex flex-col border-r border-[#E3E3E3] pr-4 mr-4\">\n <span class=\"nv-accordion-item__title\">EC-310</span>\n <span class=\"nv-accordion-item__subtitle\">\n Connection point\n </span>\n </div>\n <nv-badge color=\"error\" label=\"Stopped\">\n <nv-icon slot=\"leading-icon\" name=\"x\" size=\"sm\" />\n </nv-badge>\n </div>\n </div>\n <div slot=\"content\">\n <p>Content for EC-310 connection point (stopped)</p>\n </div>\n </nv-accordion-item>\n </nv-accordion>\n ),\n },\n {\n name: 'DisabledItem',\n description: 'Accordion with a disabled item',\n template: (\n <nv-accordion mode=\"accordion\">\n <nv-accordion-item itemtitle=\"Active item\" open>\n <div slot=\"content\">This item is accessible</div>\n </nv-accordion-item>\n <nv-accordion-item itemtitle=\"Disabled item\" disabled>\n <div slot=\"content\">\n This item is not accessible because it is disabled\n </div>\n </nv-accordion-item>\n </nv-accordion>\n ),\n },\n {\n name: 'OpenIndexesDemo',\n description:\n 'Demonstration of openIndexes with multiple items and first item pre-opened',\n args: {\n mode: 'accordion',\n data: JSON.stringify([\n {\n id: '1',\n title: 'Item 1 - Pre-opened',\n content:\n 'This is the first item that is opened by default using openIndexes.',\n },\n {\n id: '2',\n title: 'Item 2',\n content: 'Content of the second item.',\n },\n {\n id: '3',\n title: 'Item 3',\n content: 'Content of the third item.',\n },\n {\n id: '4',\n title: 'Item 4',\n content: 'Content of the fourth item.',\n },\n {\n id: '5',\n title: 'Item 5',\n content: 'Content of the fifth item.',\n },\n {\n id: '6',\n title: 'Item 6',\n content: 'Content of the sixth item.',\n },\n {\n id: '7',\n title: 'Item 7',\n content: 'Content of the seventh item.',\n },\n {\n id: '8',\n title: 'Item 8',\n content: 'Content of the eighth item.',\n },\n {\n id: '9',\n title: 'Item 9',\n content: 'Content of the ninth item.',\n },\n {\n id: '10',\n title: 'Item 10',\n content: 'Content of the tenth item.',\n },\n ]),\n openIndexes: [0],\n },\n template: <nv-accordion data-storybook-args></nv-accordion>,\n },\n {\n name: 'ComplexData',\n description:\n 'Accordion with complex data including all possible attributes',\n args: {\n mode: 'accordion',\n data: JSON.stringify([\n {\n id: '1',\n title: 'Complete section',\n subtitle: 'With all attributes',\n content: 'Main content',\n disabled: false,\n },\n {\n id: '2',\n title: 'Disabled section',\n subtitle: 'Not accessible',\n content: 'Inaccessible content',\n disabled: true,\n },\n ]),\n openIndexes: [0],\n },\n template: <nv-accordion data-storybook-args></nv-accordion>,\n },\n ],\n};\n\nexport default NvAccordionDocs;\n"]}
|
|
1
|
+
{"version":3,"file":"nv-accordion.docs.js","sourceRoot":"","sources":["../../../src/components/nv-accordion/nv-accordion.docs.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h } from '@stencil/core';\nimport type { NovaDocs } from '../../nova-docs';\nimport { Components } from '../../components';\n\nconst NvAccordionDocs: NovaDocs<Components.NvAccordion> = {\n component: 'nv-accordion',\n subcomponents: ['nv-accordion-item', 'nv-icon', 'nv-button', 'nv-badge'],\n badge: 'beta',\n stories: [\n {\n name: 'Default',\n description: 'Accordion with simple items',\n args: {\n mode: 'accordion',\n data: [\n {\n id: '1',\n title: 'Title 1',\n content: 'Content of title 1',\n },\n {\n id: '2',\n title: 'Title 2',\n content: 'Content of title 2',\n },\n ],\n },\n template: <nv-accordion data-storybook-args></nv-accordion>,\n },\n {\n name: 'MultiMode',\n description: 'Accordion allowing multiple items to be open',\n args: {\n mode: 'multi',\n data: [\n {\n id: '1',\n title: 'Title 1',\n content: 'Content of title 1',\n },\n {\n id: '2',\n title: 'Title 2',\n content: 'Content of title 2',\n },\n ],\n },\n template: <nv-accordion data-storybook-args></nv-accordion>,\n },\n {\n name: 'CustomHeader',\n description: 'Real-world example with TraXes Connection Points',\n args: {\n mode: 'accordion',\n openIndexes: [0, 2],\n },\n template: (\n <nv-accordion data-storybook-args>\n <nv-accordion-item>\n <div slot=\"header\">\n <div data-class=\"flex items-center justify-between w-full\">\n <div data-class=\"flex flex-col border-r border-[#E3E3E3] pr-4 mr-4\">\n <span data-class=\"nv-accordion-item__title\">EC-308</span>\n <span data-class=\"nv-accordion-item__subtitle\">\n Connection point\n </span>\n </div>\n <nv-badge color=\"success\" label=\"Running\">\n <nv-icon slot=\"leading-icon\" name=\"check\" size=\"sm\" />\n </nv-badge>\n </div>\n </div>\n <div slot=\"content\" data-class=\"flex items-center justify-between\">\n <div>\n <p>Single accordion or accordion group</p>\n <p>\n Use the accordion as a single instance, or in a group of\n accordions stacked vertically.\n </p>\n <p>\n The accordion title is wrapped in a heading tag by default.\n Alter it to fit the information architecture of the page.\n </p>\n </div>\n </div>\n </nv-accordion-item>\n <nv-accordion-item>\n <div slot=\"header\">\n <div data-class=\"flex items-center justify-between w-full\">\n <div data-class=\"flex flex-col border-r border-[#E3E3E3] pr-4 mr-4\">\n <span data-class=\"nv-accordion-item__title\">EC-309</span>\n <span data-class=\"nv-accordion-item__subtitle\">\n Connection point\n </span>\n </div>\n <nv-badge color=\"success\" label=\"Running\">\n <nv-icon slot=\"leading-icon\" name=\"check\" size=\"sm\" />\n </nv-badge>\n </div>\n </div>\n <div slot=\"content\">\n <p>Content for EC-309 connection point</p>\n </div>\n </nv-accordion-item>\n <nv-accordion-item>\n <div slot=\"header\">\n <div data-class=\"flex items-center justify-between w-full\">\n <div data-class=\"flex flex-col border-r border-[#E3E3E3] pr-4 mr-4\">\n <span data-class=\"nv-accordion-item__title\">EC-310</span>\n <span data-class=\"nv-accordion-item__subtitle\">\n Connection point\n </span>\n </div>\n <nv-badge color=\"error\" label=\"Stopped\">\n <nv-icon slot=\"leading-icon\" name=\"x\" size=\"sm\" />\n </nv-badge>\n </div>\n </div>\n <div slot=\"content\">\n <p>Content for EC-310 connection point (stopped)</p>\n </div>\n </nv-accordion-item>\n </nv-accordion>\n ),\n },\n {\n name: 'DisabledItem',\n description: 'Accordion with a disabled item',\n args: {\n mode: 'accordion',\n },\n template: (\n <nv-accordion data-storybook-args>\n <nv-accordion-item itemTitle=\"Active item\" open>\n <div slot=\"content\">This item is accessible</div>\n </nv-accordion-item>\n <nv-accordion-item itemTitle=\"Disabled item\" disabled>\n <div slot=\"content\">\n This item is not accessible because it is disabled\n </div>\n </nv-accordion-item>\n </nv-accordion>\n ),\n },\n {\n name: 'OpenIndexesDemo',\n description:\n 'Demonstration of openIndexes with multiple items and first item pre-opened',\n args: {\n mode: 'accordion',\n data: [\n {\n id: '1',\n title: 'Item 1 - Pre-opened',\n content:\n 'This is the first item that is opened by default using openIndexes.',\n },\n {\n id: '2',\n title: 'Item 2',\n content: 'Content of the second item.',\n },\n {\n id: '3',\n title: 'Item 3',\n content: 'Content of the third item.',\n },\n {\n id: '4',\n title: 'Item 4',\n content: 'Content of the fourth item.',\n },\n {\n id: '5',\n title: 'Item 5',\n content: 'Content of the fifth item.',\n },\n {\n id: '6',\n title: 'Item 6',\n content: 'Content of the sixth item.',\n },\n {\n id: '7',\n title: 'Item 7',\n content: 'Content of the seventh item.',\n },\n {\n id: '8',\n title: 'Item 8',\n content: 'Content of the eighth item.',\n },\n {\n id: '9',\n title: 'Item 9',\n content: 'Content of the ninth item.',\n },\n {\n id: '10',\n title: 'Item 10',\n content: 'Content of the tenth item.',\n },\n ],\n openIndexes: [0],\n },\n template: <nv-accordion data-storybook-args></nv-accordion>,\n },\n {\n name: 'ComplexData',\n description:\n 'Accordion with complex data including all possible attributes',\n args: {\n mode: 'accordion',\n data: [\n {\n id: '1',\n title: 'Complete section',\n subtitle: 'With all attributes',\n content: 'Main content',\n disabled: false,\n },\n {\n id: '2',\n title: 'Disabled section',\n subtitle: 'Not accessible',\n content: 'Inaccessible content',\n disabled: true,\n },\n ],\n openIndexes: [0],\n },\n template: <nv-accordion data-storybook-args></nv-accordion>,\n },\n ],\n};\n\nexport default NvAccordionDocs;\n"]}
|
|
@@ -4,6 +4,12 @@ import { Host, h, } from "@stencil/core";
|
|
|
4
4
|
*/
|
|
5
5
|
export class NvAccordion {
|
|
6
6
|
constructor() {
|
|
7
|
+
/****************************************************************************/
|
|
8
|
+
//#region PROPERTIES
|
|
9
|
+
/**
|
|
10
|
+
* Data to display as a list of items (title, subtitle, content).
|
|
11
|
+
*/
|
|
12
|
+
this.data = [];
|
|
7
13
|
/**
|
|
8
14
|
* Expansion mode: 'accordion' (single open) or 'multi' (multiple open)
|
|
9
15
|
*/
|
|
@@ -15,12 +21,6 @@ export class NvAccordion {
|
|
|
15
21
|
* Internal index of open items (not exposed)
|
|
16
22
|
*/
|
|
17
23
|
this.internalOpenIndexes = [];
|
|
18
|
-
/**
|
|
19
|
-
* Parsed data from data prop
|
|
20
|
-
*/
|
|
21
|
-
this.parsedData = [];
|
|
22
|
-
// Synchronization openIndexes <-> internalOpenIndexes
|
|
23
|
-
this.itemToggleHandlers = [];
|
|
24
24
|
}
|
|
25
25
|
//#endregion EVENTS
|
|
26
26
|
/****************************************************************************/
|
|
@@ -61,7 +61,7 @@ export class NvAccordion {
|
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
this.internalOpenIndexes = openIndexes;
|
|
64
|
-
this.
|
|
64
|
+
this.openChanged.emit({ openIndexes });
|
|
65
65
|
if (this.openIndexes !== undefined) {
|
|
66
66
|
this.openIndexes =
|
|
67
67
|
this.mode === 'accordion'
|
|
@@ -83,9 +83,6 @@ export class NvAccordion {
|
|
|
83
83
|
* @param {CustomEvent<boolean>} event Event emitted by nv-accordion-item
|
|
84
84
|
*/
|
|
85
85
|
onItemToggle(event) {
|
|
86
|
-
// Ignore if using data (handled by itemToggleHandlers)
|
|
87
|
-
if (this.parsedData && this.parsedData.length > 0)
|
|
88
|
-
return;
|
|
89
86
|
// Find the index of the item that emitted the event
|
|
90
87
|
const items = Array.from(this.el.querySelectorAll('nv-accordion-item'));
|
|
91
88
|
const targetItem = event.target;
|
|
@@ -113,8 +110,8 @@ export class NvAccordion {
|
|
|
113
110
|
// If the item is closing, remove it from internalOpenIndexes
|
|
114
111
|
this.internalOpenIndexes = this.internalOpenIndexes.filter(i => i !== index);
|
|
115
112
|
}
|
|
116
|
-
// Emit
|
|
117
|
-
this.
|
|
113
|
+
// Emit openChanged event
|
|
114
|
+
this.openChanged.emit({ openIndexes: this.internalOpenIndexes });
|
|
118
115
|
if (this.openIndexes !== undefined) {
|
|
119
116
|
this.openIndexes =
|
|
120
117
|
this.mode === 'accordion'
|
|
@@ -126,35 +123,17 @@ export class NvAccordion {
|
|
|
126
123
|
//#endregion METHODS
|
|
127
124
|
/****************************************************************************/
|
|
128
125
|
//#region WATCHERS
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
parseData() {
|
|
133
|
-
if (typeof this.data === 'string') {
|
|
134
|
-
try {
|
|
135
|
-
this.parsedData = JSON.parse(this.data);
|
|
136
|
-
}
|
|
137
|
-
catch (e) {
|
|
138
|
-
console.error('nv-accordion: Failed to parse data prop.', e);
|
|
139
|
-
this.parsedData = [];
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
143
|
-
this.parsedData = this.data || [];
|
|
144
|
-
}
|
|
145
|
-
if (this.parsedData) {
|
|
146
|
-
this.itemToggleHandlers = this.parsedData.map((_, i) => () => this.toggleItem(i));
|
|
147
|
-
}
|
|
148
|
-
}
|
|
126
|
+
//#endregion WATCHERS
|
|
127
|
+
/****************************************************************************/
|
|
128
|
+
//#region LIFECYCLE
|
|
149
129
|
componentWillLoad() {
|
|
150
|
-
this.parseData();
|
|
151
130
|
if (this.openIndexes !== undefined) {
|
|
152
131
|
this.internalOpenIndexes = [...this.openIndexes];
|
|
153
132
|
}
|
|
154
133
|
}
|
|
155
134
|
componentDidLoad() {
|
|
156
135
|
// If using direct child elements, initialize their state
|
|
157
|
-
if (!this.
|
|
136
|
+
if (!this.data || this.data.length === 0) {
|
|
158
137
|
this.updateChildrenState();
|
|
159
138
|
}
|
|
160
139
|
}
|
|
@@ -163,16 +142,13 @@ export class NvAccordion {
|
|
|
163
142
|
this.internalOpenIndexes = [...this.openIndexes];
|
|
164
143
|
}
|
|
165
144
|
}
|
|
166
|
-
//#endregion WATCHERS
|
|
167
|
-
/****************************************************************************/
|
|
168
|
-
//#region LIFECYCLE
|
|
169
145
|
//#endregion LIFECYCLE
|
|
170
146
|
/****************************************************************************/
|
|
171
147
|
//#region RENDER
|
|
172
148
|
render() {
|
|
173
|
-
return (h(Host, { key: '
|
|
149
|
+
return (h(Host, { key: 'a6cb21b274024a00e60e0d0db780f25fab6e5bc2', role: "list", class: "nv-accordion" }, this.data && this.data.length > 0 ? (this.data.map((item, i) => {
|
|
174
150
|
var _a;
|
|
175
|
-
return (h("nv-accordion-item", { key: (_a = item.id) !== null && _a !== void 0 ? _a : i,
|
|
151
|
+
return (h("nv-accordion-item", { key: (_a = item.id) !== null && _a !== void 0 ? _a : i, itemTitle: item.title, disabled: item.disabled, open: (this.internalOpenIndexes || []).includes(i) }, item.subtitle ? (h("div", { slot: "header" }, h("div", { class: "nv-accordion-item__header-content" }, h("span", { class: "nv-accordion-item__title" }, item.title), h("span", { class: "nv-accordion-item__subtitle" }, item.subtitle)))) : null, h("div", { slot: "content" }, item.content), item.footer && h("div", { slot: "footer" }, item.footer)));
|
|
176
152
|
})) : (h("slot", null))));
|
|
177
153
|
}
|
|
178
154
|
static get is() { return "nv-accordion"; }
|
|
@@ -189,23 +165,22 @@ export class NvAccordion {
|
|
|
189
165
|
static get properties() {
|
|
190
166
|
return {
|
|
191
167
|
"data": {
|
|
192
|
-
"type": "
|
|
168
|
+
"type": "unknown",
|
|
193
169
|
"mutable": false,
|
|
194
170
|
"complexType": {
|
|
195
|
-
"original": "string",
|
|
196
|
-
"resolved": "string",
|
|
171
|
+
"original": "{\n /** Unique identifier of the item */\n id: string;\n /** Item title */\n title: string;\n /** Optional subtitle */\n subtitle?: string;\n /** Main content */\n content: string;\n /** Optional footer */\n footer?: string;\n /** Disabled state */\n disabled?: boolean;\n }[]",
|
|
172
|
+
"resolved": "{ id: string; title: string; subtitle?: string; content: string; footer?: string; disabled?: boolean; }[]",
|
|
197
173
|
"references": {}
|
|
198
174
|
},
|
|
199
175
|
"required": false,
|
|
200
176
|
"optional": false,
|
|
201
177
|
"docs": {
|
|
202
178
|
"tags": [],
|
|
203
|
-
"text": "Data to display as a list of items (title, subtitle, content)
|
|
179
|
+
"text": "Data to display as a list of items (title, subtitle, content)."
|
|
204
180
|
},
|
|
205
181
|
"getter": false,
|
|
206
182
|
"setter": false,
|
|
207
|
-
"
|
|
208
|
-
"reflect": true
|
|
183
|
+
"defaultValue": "[]"
|
|
209
184
|
},
|
|
210
185
|
"mode": {
|
|
211
186
|
"type": "string",
|
|
@@ -248,14 +223,13 @@ export class NvAccordion {
|
|
|
248
223
|
}
|
|
249
224
|
static get states() {
|
|
250
225
|
return {
|
|
251
|
-
"internalOpenIndexes": {}
|
|
252
|
-
"parsedData": {}
|
|
226
|
+
"internalOpenIndexes": {}
|
|
253
227
|
};
|
|
254
228
|
}
|
|
255
229
|
static get events() {
|
|
256
230
|
return [{
|
|
257
|
-
"method": "
|
|
258
|
-
"name": "
|
|
231
|
+
"method": "openChanged",
|
|
232
|
+
"name": "openChanged",
|
|
259
233
|
"bubbles": true,
|
|
260
234
|
"cancelable": true,
|
|
261
235
|
"composed": true,
|
|
@@ -323,12 +297,6 @@ export class NvAccordion {
|
|
|
323
297
|
};
|
|
324
298
|
}
|
|
325
299
|
static get elementRef() { return "el"; }
|
|
326
|
-
static get watchers() {
|
|
327
|
-
return [{
|
|
328
|
-
"propName": "data",
|
|
329
|
-
"methodName": "dataChanged"
|
|
330
|
-
}];
|
|
331
|
-
}
|
|
332
300
|
static get listeners() {
|
|
333
301
|
return [{
|
|
334
302
|
"name": "itemToggle",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nv-accordion.js","sourceRoot":"","sources":["../../../src/components/nv-accordion/nv-accordion.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,IAAI,EACJ,CAAC,EACD,IAAI,EACJ,KAAK,EACL,KAAK,EAEL,MAAM,EACN,MAAM,EACN,OAAO,EACP,KAAK,GACN,MAAM,eAAe,CAAC;AAmCvB;;GAEG;AAMH,MAAM,OAAO,WAAW;IALxB;QAqBE;;WAEG;QAEM,SAAI,GAA0B,WAAW,CAAC;QAOnD,uBAAuB;QACvB,8EAA8E;QAC9E,eAAe;QACf;;WAEG;QAEH,wBAAmB,GAAa,EAAE,CAAC;QAEnC;;WAEG;QAEK,eAAU,GAAoB,EAAE,CAAC;QAuIzC,sDAAsD;QAC9C,uBAAkB,GAAsB,EAAE,CAAC;KA+EpD;IAtMC,mBAAmB;IACnB,8EAA8E;IAC9E,iBAAiB;IACjB;;;OAGG;IAEH,KAAK,CAAC,IAAI,CAAC,KAAa;QACtB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD;;;OAGG;IAEH,KAAK,CAAC,KAAK,CAAC,KAAa;QACvB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IACD;;;;OAIG;IACK,UAAU,CAAC,KAAa,EAAE,SAAmB;QACnD,IAAI,WAAW,GACb,IAAI,CAAC,WAAW,KAAK,SAAS;YAC5B,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;YACvB,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC9B,WAAW,GAAG,SAAS,KAAK,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;gBACxB,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;YACrD,CAAC;iBAAM,IAAI,CAAC,MAAM,EAAE,CAAC;gBACnB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QACD,IAAI,CAAC,mBAAmB,GAAG,WAAW,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,WAAW;gBACd,IAAI,CAAC,IAAI,KAAK,WAAW;oBACvB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC;oBAC/C,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;QACzB,CAAC;QAED,6DAA6D;QAC7D,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,mBAAmB;QAC/B,0CAA0C;QAC1C,IAAI,CAAC,mBAAmB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;IAED;;;OAGG;IAEH,YAAY,CAAC,KAA2B;QACtC,uDAAuD;QACvD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO;QAE1D,oDAAoD;QACpD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CACtB,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CACd,CAAC;QAClC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAoC,CAAC;QAC9D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAExC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,yEAAyE;YACzE,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;gBAC1B,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;oBAC9B,wBAAwB;oBACxB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;wBACxB,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;4BAC7B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;wBACpB,CAAC;oBACH,CAAC,CAAC,CAAC;oBACH,IAAI,CAAC,mBAAmB,GAAG,CAAC,KAAK,CAAC,CAAC;gBACrC,CAAC;qBAAM,CAAC;oBACN,0DAA0D;oBAC1D,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC9C,IAAI,CAAC,mBAAmB,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;oBAClE,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,6DAA6D;gBAC7D,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CACxD,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,CACjB,CAAC;YACJ,CAAC;YAED,sBAAsB;YACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;YAC9D,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACnC,IAAI,CAAC,WAAW;oBACd,IAAI,CAAC,IAAI,KAAK,WAAW;wBACvB,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC;wBAC5D,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IACD,oBAAoB;IACpB,8EAA8E;IAC9E,kBAAkB;IAElB,WAAW;QACT,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAKO,SAAS;QACf,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,CAAC,CAAC,CAAC;gBAC7D,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YACvB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QACpC,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAC3C,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CACnC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,mBAAmB,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,gBAAgB;QACd,yDAAyD;QACzD,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,mBAAmB;QACjB,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,mBAAmB,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IACD,qBAAqB;IACrB,8EAA8E;IAC9E,mBAAmB;IACnB,sBAAsB;IACtB,8EAA8E;IAC9E,gBAAgB;IAChB,MAAM;QACJ,OAAO,CACL,EAAC,IAAI,qDAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,cAAc,IACnC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAC/C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;;YAAC,OAAA,CAC/B,yBACE,GAAG,EAAE,MAAA,IAAI,CAAC,EAAE,mCAAI,CAAC,EACjB,SAAS,EAAE,IAAI,CAAC,KAAK,EACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,IAAI,EAAE,CAAC,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAClD,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBAEvC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CACf,WAAK,IAAI,EAAC,QAAQ;oBAChB,WAAK,KAAK,EAAC,mCAAmC;wBAC5C,YAAM,KAAK,EAAC,0BAA0B,IAAE,IAAI,CAAC,KAAK,CAAQ;wBAC1D,YAAM,KAAK,EAAC,6BAA6B,IACtC,IAAI,CAAC,QAAQ,CACT,CACH,CACF,CACP,CAAC,CAAC,CAAC,IAAI;gBACR,WAAK,IAAI,EAAC,SAAS,IAAE,IAAI,CAAC,OAAO,CAAO;gBACvC,IAAI,CAAC,MAAM,IAAI,WAAK,IAAI,EAAC,QAAQ,IAAE,IAAI,CAAC,MAAM,CAAO,CACpC,CACrB,CAAA;SAAA,CAAC,CACH,CAAC,CAAC,CAAC,CACF,eAAa,CACd,CACI,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAEF","sourcesContent":["import {\n Component,\n Host,\n h,\n Prop,\n State,\n Event,\n EventEmitter,\n Method,\n Listen,\n Element,\n Watch,\n} from '@stencil/core';\n/**\n * Interface defining the structure of an accordion item\n */\nexport interface AccordionItem {\n /** Unique identifier of the item */\n id: string;\n /** Item title */\n title: string;\n /** Optional subtitle */\n subtitle?: string;\n /** Main content */\n content: string;\n /** Optional footer */\n footer?: string;\n /** Disabled state */\n disabled?: boolean;\n}\n\n/**\n * Interface for nv-accordion-item component props\n */\nexport interface AccordionItemProps {\n /** Item title (displayed if header slot is absent) */\n itemtitle?: string;\n /** Item subtitle (displayed if header slot is absent) */\n subtitle?: string;\n /** Open or closed */\n open?: boolean;\n /** Disables the item */\n disabled?: boolean;\n /** Parent expansion mode (accordion or multi) */\n mode?: 'accordion' | 'multi';\n}\n\n/**\n * @slot default - Slot for custom content (optional, ignored if data is provided)\n */\n@Component({\n tag: 'nv-accordion',\n styleUrl: 'styles/nv-accordion.scss',\n shadow: false,\n})\nexport class NvAccordion {\n /****************************************************************************/\n //#region PROPERTIES\n /**\n * Data to display as a list of items (title, subtitle, content).\n * Must be provided as a JSON string containing an array of items with:\n * - title: main title (required)\n * - subtitle: subtitle (optional)\n * - content: main content (required)\n * - footer: footer (optional)\n * - disabled: disables the item (optional)\n * - id: unique identifier (optional)\n */\n @Prop({ reflect: true })\n readonly data: string;\n\n /**\n * Expansion mode: 'accordion' (single open) or 'multi' (multiple open)\n */\n @Prop({ reflect: true })\n readonly mode: 'accordion' | 'multi' = 'accordion';\n\n /**\n * Index of open items (external control possible)\n */\n @Prop({ reflect: true, mutable: true })\n openIndexes?: number[];\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region STATE\n /**\n * Internal index of open items (not exposed)\n */\n @State()\n internalOpenIndexes: number[] = [];\n\n /**\n * Parsed data from data prop\n */\n @State()\n private parsedData: AccordionItem[] = [];\n\n /**\n * Reference to host element to access children\n */\n @Element() el!: HTMLNvAccordionElement;\n //#endregion STATE\n /****************************************************************************/\n //#region EVENTS\n /**\n * Event emitted when an item's open state changes\n */\n @Event()\n nvChange: EventEmitter<{\n /** Index of open items */\n openIndexes: number[];\n }>;\n //#endregion EVENTS\n /****************************************************************************/\n //#region METHODS\n /**\n * Opens an item by its index (Public API)\n * @param {number} index Index of the item to open\n */\n @Method()\n async open(index: number) {\n this.toggleItem(index, true);\n }\n /**\n * Closes an item by its index (Public API)\n * @param {number} index Index of the item to close\n */\n @Method()\n async close(index: number) {\n this.toggleItem(index, false);\n }\n /**\n * Toggles an item's state (internal)\n * @param {number} index Item index\n * @param {boolean} [forceOpen] Force open (true) or close (false)\n */\n private toggleItem(index: number, forceOpen?: boolean) {\n let openIndexes =\n this.openIndexes !== undefined\n ? [...this.openIndexes]\n : [...(this.internalOpenIndexes || [])];\n const isOpen = openIndexes.includes(index);\n if (this.mode === 'accordion') {\n openIndexes = forceOpen === false || isOpen ? [] : [index];\n } else {\n if (forceOpen === false) {\n openIndexes = openIndexes.filter(i => i !== index);\n } else if (!isOpen) {\n openIndexes.push(index);\n }\n }\n this.internalOpenIndexes = openIndexes;\n this.nvChange.emit({ openIndexes });\n if (this.openIndexes !== undefined) {\n this.openIndexes =\n this.mode === 'accordion'\n ? [openIndexes[0]].filter(x => x !== undefined)\n : [...openIndexes];\n }\n\n // Update child elements state - for both data and slot usage\n this.updateChildrenState();\n }\n\n /**\n * Updates the open state of child elements based on internalOpenIndexes\n */\n private async updateChildrenState() {\n // Force a re-render by updating the state\n this.internalOpenIndexes = [...(this.internalOpenIndexes || [])];\n }\n\n /**\n * Listens to itemToggle events from nv-accordion-item elements\n * @param {CustomEvent<boolean>} event Event emitted by nv-accordion-item\n */\n @Listen('itemToggle')\n onItemToggle(event: CustomEvent<boolean>) {\n // Ignore if using data (handled by itemToggleHandlers)\n if (this.parsedData && this.parsedData.length > 0) return;\n\n // Find the index of the item that emitted the event\n const items = Array.from(\n this.el.querySelectorAll('nv-accordion-item'),\n ) as HTMLNvAccordionItemElement[];\n const targetItem = event.target as HTMLNvAccordionItemElement;\n const index = items.indexOf(targetItem);\n\n if (index !== -1) {\n // If the event comes from an item that is opening, handle accordion mode\n if (event.detail === true) {\n if (this.mode === 'accordion') {\n // Close all other items\n items.forEach((item, i) => {\n if (i !== index && item.open) {\n item.open = false;\n }\n });\n this.internalOpenIndexes = [index];\n } else {\n // Add index to internalOpenIndexes if not already present\n if (!this.internalOpenIndexes.includes(index)) {\n this.internalOpenIndexes = [...this.internalOpenIndexes, index];\n }\n }\n } else {\n // If the item is closing, remove it from internalOpenIndexes\n this.internalOpenIndexes = this.internalOpenIndexes.filter(\n i => i !== index,\n );\n }\n\n // Emit nvChange event\n this.nvChange.emit({ openIndexes: this.internalOpenIndexes });\n if (this.openIndexes !== undefined) {\n this.openIndexes =\n this.mode === 'accordion'\n ? [this.internalOpenIndexes[0]].filter(x => x !== undefined)\n : [...this.internalOpenIndexes];\n }\n }\n }\n //#endregion METHODS\n /****************************************************************************/\n //#region WATCHERS\n @Watch('data')\n dataChanged() {\n this.parseData();\n }\n\n // Synchronization openIndexes <-> internalOpenIndexes\n private itemToggleHandlers: Array<() => void> = [];\n\n private parseData() {\n if (typeof this.data === 'string') {\n try {\n this.parsedData = JSON.parse(this.data);\n } catch (e) {\n console.error('nv-accordion: Failed to parse data prop.', e);\n this.parsedData = [];\n }\n } else {\n this.parsedData = this.data || [];\n }\n\n if (this.parsedData) {\n this.itemToggleHandlers = this.parsedData.map(\n (_, i) => () => this.toggleItem(i),\n );\n }\n }\n\n componentWillLoad() {\n this.parseData();\n if (this.openIndexes !== undefined) {\n this.internalOpenIndexes = [...this.openIndexes];\n }\n }\n\n componentDidLoad() {\n // If using direct child elements, initialize their state\n if (!this.parsedData || this.parsedData.length === 0) {\n this.updateChildrenState();\n }\n }\n\n componentWillUpdate() {\n if (this.openIndexes !== undefined) {\n this.internalOpenIndexes = [...this.openIndexes];\n }\n }\n //#endregion WATCHERS\n /****************************************************************************/\n //#region LIFECYCLE\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region RENDER\n render() {\n return (\n <Host role=\"list\" class=\"nv-accordion\">\n {this.parsedData && this.parsedData.length > 0 ? (\n this.parsedData.map((item, i) => (\n <nv-accordion-item\n key={item.id ?? i}\n itemtitle={item.title}\n disabled={item.disabled}\n open={(this.internalOpenIndexes || []).includes(i)}\n onItemToggle={this.itemToggleHandlers[i]}\n >\n {item.subtitle ? (\n <div slot=\"header\">\n <div class=\"nv-accordion-item__header-content\">\n <span class=\"nv-accordion-item__title\">{item.title}</span>\n <span class=\"nv-accordion-item__subtitle\">\n {item.subtitle}\n </span>\n </div>\n </div>\n ) : null}\n <div slot=\"content\">{item.content}</div>\n {item.footer && <div slot=\"footer\">{item.footer}</div>}\n </nv-accordion-item>\n ))\n ) : (\n <slot></slot>\n )}\n </Host>\n );\n }\n // #endregion RENDER\n}\n"]}
|
|
1
|
+
{"version":3,"file":"nv-accordion.js","sourceRoot":"","sources":["../../../src/components/nv-accordion/nv-accordion.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Host,\n h,\n Prop,\n State,\n Event,\n EventEmitter,\n Method,\n Listen,\n Element,\n} from '@stencil/core';\n\n/**\n * @slot default - Slot for custom content (optional, ignored if data is provided)\n */\n@Component({\n tag: 'nv-accordion',\n styleUrl: 'styles/nv-accordion.scss',\n shadow: false,\n})\nexport class NvAccordion {\n /****************************************************************************/\n //#region PROPERTIES\n /**\n * Data to display as a list of items (title, subtitle, content).\n */\n @Prop({ reflect: false })\n readonly data: {\n /** Unique identifier of the item */\n id: string;\n /** Item title */\n title: string;\n /** Optional subtitle */\n subtitle?: string;\n /** Main content */\n content: string;\n /** Optional footer */\n footer?: string;\n /** Disabled state */\n disabled?: boolean;\n }[] = [];\n\n /**\n * Expansion mode: 'accordion' (single open) or 'multi' (multiple open)\n */\n @Prop({ reflect: true })\n readonly mode: 'accordion' | 'multi' = 'accordion';\n\n /**\n * Index of open items (external control possible)\n */\n @Prop({ reflect: false, mutable: true })\n openIndexes?: number[];\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region STATE\n /**\n * Internal index of open items (not exposed)\n */\n @State()\n internalOpenIndexes: number[] = [];\n\n /**\n * Reference to host element to access children\n */\n @Element() el!: HTMLNvAccordionElement;\n //#endregion STATE\n /****************************************************************************/\n //#region EVENTS\n /**\n * Event emitted when an item's open state changes\n */\n @Event()\n openChanged: EventEmitter<{\n /** Index of open items */\n openIndexes: number[];\n }>;\n //#endregion EVENTS\n /****************************************************************************/\n //#region METHODS\n /**\n * Opens an item by its index (Public API)\n * @param {number} index Index of the item to open\n */\n @Method()\n async open(index: number) {\n this.toggleItem(index, true);\n }\n /**\n * Closes an item by its index (Public API)\n * @param {number} index Index of the item to close\n */\n @Method()\n async close(index: number) {\n this.toggleItem(index, false);\n }\n /**\n * Toggles an item's state (internal)\n * @param {number} index Item index\n * @param {boolean} [forceOpen] Force open (true) or close (false)\n */\n private toggleItem(index: number, forceOpen?: boolean) {\n let openIndexes =\n this.openIndexes !== undefined\n ? [...this.openIndexes]\n : [...(this.internalOpenIndexes || [])];\n const isOpen = openIndexes.includes(index);\n if (this.mode === 'accordion') {\n openIndexes = forceOpen === false || isOpen ? [] : [index];\n } else {\n if (forceOpen === false) {\n openIndexes = openIndexes.filter(i => i !== index);\n } else if (!isOpen) {\n openIndexes.push(index);\n }\n }\n this.internalOpenIndexes = openIndexes;\n this.openChanged.emit({ openIndexes });\n if (this.openIndexes !== undefined) {\n this.openIndexes =\n this.mode === 'accordion'\n ? [openIndexes[0]].filter(x => x !== undefined)\n : [...openIndexes];\n }\n\n // Update child elements state - for both data and slot usage\n this.updateChildrenState();\n }\n\n /**\n * Updates the open state of child elements based on internalOpenIndexes\n */\n private async updateChildrenState() {\n // Force a re-render by updating the state\n this.internalOpenIndexes = [...(this.internalOpenIndexes || [])];\n }\n\n /**\n * Listens to itemToggle events from nv-accordion-item elements\n * @param {CustomEvent<boolean>} event Event emitted by nv-accordion-item\n */\n @Listen('itemToggle')\n onItemToggle(event: CustomEvent<boolean>) {\n // Find the index of the item that emitted the event\n const items = Array.from(\n this.el.querySelectorAll('nv-accordion-item'),\n ) as HTMLNvAccordionItemElement[];\n const targetItem = event.target as HTMLNvAccordionItemElement;\n const index = items.indexOf(targetItem);\n\n if (index !== -1) {\n // If the event comes from an item that is opening, handle accordion mode\n if (event.detail === true) {\n if (this.mode === 'accordion') {\n // Close all other items\n items.forEach((item, i) => {\n if (i !== index && item.open) {\n item.open = false;\n }\n });\n this.internalOpenIndexes = [index];\n } else {\n // Add index to internalOpenIndexes if not already present\n if (!this.internalOpenIndexes.includes(index)) {\n this.internalOpenIndexes = [...this.internalOpenIndexes, index];\n }\n }\n } else {\n // If the item is closing, remove it from internalOpenIndexes\n this.internalOpenIndexes = this.internalOpenIndexes.filter(\n i => i !== index,\n );\n }\n\n // Emit openChanged event\n this.openChanged.emit({ openIndexes: this.internalOpenIndexes });\n if (this.openIndexes !== undefined) {\n this.openIndexes =\n this.mode === 'accordion'\n ? [this.internalOpenIndexes[0]].filter(x => x !== undefined)\n : [...this.internalOpenIndexes];\n }\n }\n }\n\n //#endregion METHODS\n /****************************************************************************/\n //#region WATCHERS\n //#endregion WATCHERS\n /****************************************************************************/\n //#region LIFECYCLE\n componentWillLoad() {\n if (this.openIndexes !== undefined) {\n this.internalOpenIndexes = [...this.openIndexes];\n }\n }\n\n componentDidLoad() {\n // If using direct child elements, initialize their state\n if (!this.data || this.data.length === 0) {\n this.updateChildrenState();\n }\n }\n\n componentWillUpdate() {\n if (this.openIndexes !== undefined) {\n this.internalOpenIndexes = [...this.openIndexes];\n }\n }\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region RENDER\n render() {\n return (\n <Host role=\"list\" class=\"nv-accordion\">\n {this.data && this.data.length > 0 ? (\n this.data.map((item, i) => (\n <nv-accordion-item\n key={item.id ?? i}\n itemTitle={item.title}\n disabled={item.disabled}\n open={(this.internalOpenIndexes || []).includes(i)}\n >\n {item.subtitle ? (\n <div slot=\"header\">\n <div class=\"nv-accordion-item__header-content\">\n <span class=\"nv-accordion-item__title\">{item.title}</span>\n <span class=\"nv-accordion-item__subtitle\">\n {item.subtitle}\n </span>\n </div>\n </div>\n ) : null}\n <div slot=\"content\">{item.content}</div>\n {item.footer && <div slot=\"footer\">{item.footer}</div>}\n </nv-accordion-item>\n ))\n ) : (\n <slot></slot>\n )}\n </Host>\n );\n }\n // #endregion RENDER\n}\n"]}
|
|
@@ -3,7 +3,7 @@ import { useCollapse } from "../../animations";
|
|
|
3
3
|
/**
|
|
4
4
|
* Accordion item element for nv-accordion.
|
|
5
5
|
*
|
|
6
|
-
* @slot header - Custom header (replaces
|
|
6
|
+
* @slot header - Custom header (replaces itemTitle/subtitle)
|
|
7
7
|
* @slot content - Main content (expandable area)
|
|
8
8
|
*/
|
|
9
9
|
export class NvAccordionItem {
|
|
@@ -157,12 +157,12 @@ export class NvAccordionItem {
|
|
|
157
157
|
/****************************************************************************/
|
|
158
158
|
//#region RENDER
|
|
159
159
|
render() {
|
|
160
|
-
return (h(Host, { key: '
|
|
160
|
+
return (h(Host, { key: 'dfb8ca76f8ac40c938323be1ccba4353ea33a616', class: {
|
|
161
161
|
'nv-accordion-item': true,
|
|
162
162
|
'is-open': this.open,
|
|
163
163
|
'is-disabled': this.disabled,
|
|
164
164
|
'is-animating': this.isAnimating,
|
|
165
|
-
}, role: "listitem", "aria-expanded": this.open ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false' }, h("div", { key: '
|
|
165
|
+
}, role: "listitem", "aria-expanded": this.open ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false' }, h("div", { key: '258efe0502a39d963a9e75c16285ee9cbc65cb9f', class: "nv-accordion-item__header", onClick: this.handleHeaderClick, "aria-controls": "content" }, h("slot", { key: 'bb4dae743f06e3d41d1f7b8c17793b668df9347b', name: "header" }, h("div", { key: 'f3142a81c6be776d95ab9292101b889db6e35805', class: "nv-accordion-item__header-content" }, this.itemTitle && (h("span", { key: 'e897d8b4d414ba4e93b2853c152059579063335e', class: "nv-accordion-item__title" }, this.itemTitle)), this.subtitle && (h("span", { key: 'b8e03ceb1ca0e4c0b0fe24398f0e1c592ac077ab', class: "nv-accordion-item__subtitle" }, this.subtitle)))), h("nv-iconbutton", { key: '8d90711a96f5ce2e7d6f5ebcf3922cd0fedd69bd', emphasis: "low", size: "sm", shape: "square", name: this.chevronIconName, tabindex: this.disabled ? -1 : 0, onClick: this.handleIconClick, onKeyDown: this.handleHeaderKeyDown, "aria-expanded": this.open ? 'true' : 'false', "aria-controls": "content", "aria-label": this.open ? 'Fermer la section' : 'Ouvrir la section' })), h("div", { key: '171b5165f3663fa5f0fa28ef84145dfc998e9f10', id: "content", class: "nv-accordion-item__content", "aria-hidden": !this.open ? 'true' : 'false', ref: el => (this.contentRef = el) }, h("div", { key: 'dcf753f23cec073a036d8137f1299dcf4ca4af78', class: "nv-accordion-item__content-inner" }, h("slot", { key: '3dc85def21aace19f3d211262b6cf66ccb9438fa', name: "content" })))));
|
|
166
166
|
}
|
|
167
167
|
static get is() { return "nv-accordion-item"; }
|
|
168
168
|
static get originalStyleUrls() {
|
|
@@ -177,7 +177,7 @@ export class NvAccordionItem {
|
|
|
177
177
|
}
|
|
178
178
|
static get properties() {
|
|
179
179
|
return {
|
|
180
|
-
"
|
|
180
|
+
"itemTitle": {
|
|
181
181
|
"type": "string",
|
|
182
182
|
"mutable": false,
|
|
183
183
|
"complexType": {
|
|
@@ -193,7 +193,7 @@ export class NvAccordionItem {
|
|
|
193
193
|
},
|
|
194
194
|
"getter": false,
|
|
195
195
|
"setter": false,
|
|
196
|
-
"attribute": "
|
|
196
|
+
"attribute": "item-title",
|
|
197
197
|
"reflect": true
|
|
198
198
|
},
|
|
199
199
|
"subtitle": {
|