@oiz/stzh-components 3.2.0-beta1 → 3.2.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/{app-globals-efe6d21d.js → app-globals-d07dad99.js} +2 -2
- package/dist/cjs/{app-globals-efe6d21d.js.map → app-globals-d07dad99.js.map} +1 -1
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/stzh-audio.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-badge_3.cjs.entry.js +3 -3
- package/dist/cjs/stzh-badge_3.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-breadcrumb_2.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-card-navigation.cjs.entry.js +6 -4
- package/dist/cjs/stzh-card-navigation.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-card-searchresult.cjs.entry.js +3 -1
- package/dist/cjs/stzh-card-searchresult.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-card-superteaser.cjs.entry.js +8 -20
- package/dist/cjs/stzh-card-superteaser.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-carousel.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-chart.cjs.entry.js +1 -1
- package/dist/cjs/stzh-chart.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-clamp.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-components.cjs.js +2 -2
- package/dist/cjs/stzh-datalist_2.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-datamessagelist.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-datatable.cjs.entry.js +98 -79
- package/dist/cjs/stzh-datatable.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-dialog.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-disturber.cjs.entry.js +1 -1
- package/dist/cjs/stzh-disturber.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-ghettobox_3.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-header.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-link.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-pagebottom.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-pagecontent.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-pagetitle-hero.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-pagetitle.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-pi-pagetitle.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-pi-quote.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-progressbar.cjs.entry.js +1 -1
- package/dist/cjs/stzh-progressbar.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-search.cjs.entry.js +3 -4
- package/dist/cjs/stzh-search.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-sticky-actions.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-sticky.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-table.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-vbz-intro.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-youtube.cjs.entry.js.map +1 -1
- package/dist/collection/components/stzh-audio/stzh-audio.js +1 -0
- package/dist/collection/components/stzh-audio/stzh-audio.js.map +1 -1
- package/dist/collection/components/stzh-badge/stzh-badge.js +1 -1
- package/dist/collection/components/stzh-badge/stzh-badge.js.map +1 -1
- package/dist/collection/components/stzh-breadcrumb/stzh-breadcrumb.js +1 -1
- package/dist/collection/components/stzh-breadcrumb/stzh-breadcrumb.js.map +1 -1
- package/dist/collection/components/stzh-button/stzh-button.js +2 -2
- package/dist/collection/components/stzh-button/stzh-button.js.map +1 -1
- package/dist/collection/components/stzh-card-navigation/stzh-card-navigation.css +5 -0
- package/dist/collection/components/stzh-card-navigation/stzh-card-navigation.js +24 -4
- package/dist/collection/components/stzh-card-navigation/stzh-card-navigation.js.map +1 -1
- package/dist/collection/components/stzh-card-navigation/stzh-card-navigation.stories.js +14 -7
- package/dist/collection/components/stzh-card-searchresult/stzh-card-searchresult.css +5 -0
- package/dist/collection/components/stzh-card-searchresult/stzh-card-searchresult.js +20 -0
- package/dist/collection/components/stzh-card-searchresult/stzh-card-searchresult.js.map +1 -1
- package/dist/collection/components/stzh-card-searchresult/stzh-card-searchresult.stories.js +129 -109
- package/dist/collection/components/stzh-card-superteaser/stzh-card-superteaser.css +5 -0
- package/dist/collection/components/stzh-card-superteaser/stzh-card-superteaser.js +25 -19
- package/dist/collection/components/stzh-card-superteaser/stzh-card-superteaser.js.map +1 -1
- package/dist/collection/components/stzh-card-superteaser/stzh-card-superteaser.stories.js +116 -98
- package/dist/collection/components/stzh-carousel/stzh-carousel.js +1 -1
- package/dist/collection/components/stzh-carousel/stzh-carousel.js.map +1 -1
- package/dist/collection/components/stzh-chart/stzh-chart.js +1 -1
- package/dist/collection/components/stzh-chart/stzh-chart.js.map +1 -1
- package/dist/collection/components/stzh-clamp/stzh-clamp.js +1 -1
- package/dist/collection/components/stzh-clamp/stzh-clamp.js.map +1 -1
- package/dist/collection/components/stzh-datalist/stzh-datalist.js +1 -0
- package/dist/collection/components/stzh-datalist/stzh-datalist.js.map +1 -1
- package/dist/collection/components/stzh-datamessagelist/stzh-datamessagelist.js +1 -0
- package/dist/collection/components/stzh-datamessagelist/stzh-datamessagelist.js.map +1 -1
- package/dist/collection/components/stzh-datatable/stzh-datatable.js +100 -80
- package/dist/collection/components/stzh-datatable/stzh-datatable.js.map +1 -1
- package/dist/collection/components/stzh-datatable/stzh-datatable.stories.js +110 -39
- package/dist/collection/components/stzh-dialog/stzh-dialog.js +1 -0
- package/dist/collection/components/stzh-dialog/stzh-dialog.js.map +1 -1
- package/dist/collection/components/stzh-disturber/stzh-disturber.css +1 -0
- package/dist/collection/components/stzh-ghettobox/stzh-ghettobox.js +1 -0
- package/dist/collection/components/stzh-ghettobox/stzh-ghettobox.js.map +1 -1
- package/dist/collection/components/stzh-header/stzh-header.js +1 -0
- package/dist/collection/components/stzh-header/stzh-header.js.map +1 -1
- package/dist/collection/components/stzh-link/stzh-link.js +1 -1
- package/dist/collection/components/stzh-link/stzh-link.js.map +1 -1
- package/dist/collection/components/stzh-pagebottom/stzh-pagebottom.js +1 -0
- package/dist/collection/components/stzh-pagebottom/stzh-pagebottom.js.map +1 -1
- package/dist/collection/components/stzh-pagecontent/stzh-pagecontent.js +1 -0
- package/dist/collection/components/stzh-pagecontent/stzh-pagecontent.js.map +1 -1
- package/dist/collection/components/stzh-pagetitle/stzh-pagetitle.js +2 -1
- package/dist/collection/components/stzh-pagetitle/stzh-pagetitle.js.map +1 -1
- package/dist/collection/components/stzh-pagetitle-hero/stzh-pagetitle-hero.js +1 -0
- package/dist/collection/components/stzh-pagetitle-hero/stzh-pagetitle-hero.js.map +1 -1
- package/dist/collection/components/stzh-pi-pagetitle/stzh-pi-pagetitle.js +4 -0
- package/dist/collection/components/stzh-pi-pagetitle/stzh-pi-pagetitle.js.map +1 -1
- package/dist/collection/components/stzh-pi-quote/stzh-pi-quote.js +3 -0
- package/dist/collection/components/stzh-pi-quote/stzh-pi-quote.js.map +1 -1
- package/dist/collection/components/stzh-progressbar/stzh-progressbar.js +1 -1
- package/dist/collection/components/stzh-progressbar/stzh-progressbar.js.map +1 -1
- package/dist/collection/components/stzh-search/stzh-search.js +4 -4
- package/dist/collection/components/stzh-search/stzh-search.js.map +1 -1
- package/dist/collection/components/stzh-sticky/stzh-sticky.js +1 -1
- package/dist/collection/components/stzh-sticky/stzh-sticky.js.map +1 -1
- package/dist/collection/components/stzh-sticky-actions/stzh-sticky-actions.js +2 -0
- package/dist/collection/components/stzh-sticky-actions/stzh-sticky-actions.js.map +1 -1
- package/dist/collection/components/stzh-table/stzh-table.js +2 -0
- package/dist/collection/components/stzh-table/stzh-table.js.map +1 -1
- package/dist/collection/components/stzh-vbz-intro/stzh-vbz-intro.js +3 -0
- package/dist/collection/components/stzh-vbz-intro/stzh-vbz-intro.js.map +1 -1
- package/dist/collection/components/stzh-youtube/stzh-youtube.js +2 -1
- package/dist/collection/components/stzh-youtube/stzh-youtube.js.map +1 -1
- package/dist/collection/index.js.map +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/index2.js.map +1 -1
- package/dist/components/stzh-audio.js.map +1 -1
- package/dist/components/stzh-badge2.js +2 -2
- package/dist/components/stzh-badge2.js.map +1 -1
- package/dist/components/stzh-breadcrumb2.js.map +1 -1
- package/dist/components/stzh-button2.js +2 -2
- package/dist/components/stzh-button2.js.map +1 -1
- package/dist/components/stzh-card-navigation.js +8 -5
- package/dist/components/stzh-card-navigation.js.map +1 -1
- package/dist/components/stzh-card-searchresult.js +5 -2
- package/dist/components/stzh-card-searchresult.js.map +1 -1
- package/dist/components/stzh-card-superteaser.js +10 -21
- package/dist/components/stzh-card-superteaser.js.map +1 -1
- package/dist/components/stzh-carousel2.js.map +1 -1
- package/dist/components/stzh-chart.js +2 -2
- package/dist/components/stzh-chart.js.map +1 -1
- package/dist/components/stzh-clamp2.js.map +1 -1
- package/dist/components/stzh-datalist2.js.map +1 -1
- package/dist/components/stzh-datamessagelist.js.map +1 -1
- package/dist/components/stzh-datatable.js +98 -79
- package/dist/components/stzh-datatable.js.map +1 -1
- package/dist/components/stzh-dialog2.js.map +1 -1
- package/dist/components/stzh-disturber.js +1 -1
- package/dist/components/stzh-disturber.js.map +1 -1
- package/dist/components/stzh-ghettobox2.js.map +1 -1
- package/dist/components/stzh-header.js.map +1 -1
- package/dist/components/stzh-link2.js.map +1 -1
- package/dist/components/stzh-pagebottom.js.map +1 -1
- package/dist/components/stzh-pagecontent.js.map +1 -1
- package/dist/components/stzh-pagetitle-hero.js.map +1 -1
- package/dist/components/stzh-pagetitle.js.map +1 -1
- package/dist/components/stzh-pi-pagetitle.js.map +1 -1
- package/dist/components/stzh-pi-quote.js.map +1 -1
- package/dist/components/stzh-progressbar.js +2 -2
- package/dist/components/stzh-progressbar.js.map +1 -1
- package/dist/components/stzh-search.js +3 -4
- package/dist/components/stzh-search.js.map +1 -1
- package/dist/components/stzh-sticky-actions.js.map +1 -1
- package/dist/components/stzh-sticky2.js.map +1 -1
- package/dist/components/stzh-table.js.map +1 -1
- package/dist/components/stzh-vbz-intro.js.map +1 -1
- package/dist/components/stzh-youtube.js.map +1 -1
- package/dist/esm/{app-globals-93678901.js → app-globals-b0bdc495.js} +2 -2
- package/dist/esm/{app-globals-93678901.js.map → app-globals-b0bdc495.js.map} +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/loader.js +2 -2
- package/dist/esm/stzh-audio.entry.js.map +1 -1
- package/dist/esm/stzh-badge_3.entry.js +3 -3
- package/dist/esm/stzh-badge_3.entry.js.map +1 -1
- package/dist/esm/stzh-breadcrumb_2.entry.js.map +1 -1
- package/dist/esm/stzh-card-navigation.entry.js +6 -4
- package/dist/esm/stzh-card-navigation.entry.js.map +1 -1
- package/dist/esm/stzh-card-searchresult.entry.js +3 -1
- package/dist/esm/stzh-card-searchresult.entry.js.map +1 -1
- package/dist/esm/stzh-card-superteaser.entry.js +8 -20
- package/dist/esm/stzh-card-superteaser.entry.js.map +1 -1
- package/dist/esm/stzh-carousel.entry.js.map +1 -1
- package/dist/esm/stzh-chart.entry.js +1 -1
- package/dist/esm/stzh-chart.entry.js.map +1 -1
- package/dist/esm/stzh-clamp.entry.js.map +1 -1
- package/dist/esm/stzh-components.js +2 -2
- package/dist/esm/stzh-datalist_2.entry.js.map +1 -1
- package/dist/esm/stzh-datamessagelist.entry.js.map +1 -1
- package/dist/esm/stzh-datatable.entry.js +98 -79
- package/dist/esm/stzh-datatable.entry.js.map +1 -1
- package/dist/esm/stzh-dialog.entry.js.map +1 -1
- package/dist/esm/stzh-disturber.entry.js +1 -1
- package/dist/esm/stzh-disturber.entry.js.map +1 -1
- package/dist/esm/stzh-ghettobox_3.entry.js.map +1 -1
- package/dist/esm/stzh-header.entry.js.map +1 -1
- package/dist/esm/stzh-link.entry.js.map +1 -1
- package/dist/esm/stzh-pagebottom.entry.js.map +1 -1
- package/dist/esm/stzh-pagecontent.entry.js.map +1 -1
- package/dist/esm/stzh-pagetitle-hero.entry.js.map +1 -1
- package/dist/esm/stzh-pagetitle.entry.js.map +1 -1
- package/dist/esm/stzh-pi-pagetitle.entry.js.map +1 -1
- package/dist/esm/stzh-pi-quote.entry.js.map +1 -1
- package/dist/esm/stzh-progressbar.entry.js +1 -1
- package/dist/esm/stzh-progressbar.entry.js.map +1 -1
- package/dist/esm/stzh-search.entry.js +3 -4
- package/dist/esm/stzh-search.entry.js.map +1 -1
- package/dist/esm/stzh-sticky-actions.entry.js.map +1 -1
- package/dist/esm/stzh-sticky.entry.js.map +1 -1
- package/dist/esm/stzh-table.entry.js.map +1 -1
- package/dist/esm/stzh-vbz-intro.entry.js.map +1 -1
- package/dist/esm/stzh-youtube.entry.js.map +1 -1
- package/dist/stzh-components/index.esm.js.map +1 -1
- package/dist/stzh-components/p-069e181f.entry.js.map +1 -1
- package/dist/stzh-components/p-09480ffe.entry.js.map +1 -1
- package/dist/stzh-components/p-1c75b53f.entry.js +2 -0
- package/dist/stzh-components/p-1c75b53f.entry.js.map +1 -0
- package/dist/stzh-components/p-29c1cb5c.entry.js.map +1 -1
- package/dist/stzh-components/p-30a522e0.entry.js.map +1 -1
- package/dist/stzh-components/p-32cb5b94.entry.js.map +1 -1
- package/dist/stzh-components/p-3cc6f193.entry.js.map +1 -1
- package/dist/stzh-components/p-429d2a9b.entry.js.map +1 -1
- package/dist/stzh-components/{p-30a7c058.entry.js → p-4b0cb255.entry.js} +2 -2
- package/dist/stzh-components/p-4b0cb255.entry.js.map +1 -0
- package/dist/stzh-components/p-513b7fcd.entry.js +2 -0
- package/dist/stzh-components/p-513b7fcd.entry.js.map +1 -0
- package/dist/stzh-components/p-6e49f741.js +2 -0
- package/dist/stzh-components/{p-2d405b51.js.map → p-6e49f741.js.map} +1 -1
- package/dist/stzh-components/{p-3912a256.entry.js → p-8273e37d.entry.js} +2 -2
- package/dist/stzh-components/p-8273e37d.entry.js.map +1 -0
- package/dist/stzh-components/p-909f7fc0.entry.js.map +1 -1
- package/dist/stzh-components/p-94947ab0.entry.js.map +1 -1
- package/dist/stzh-components/{p-d9fa718c.entry.js → p-995bee31.entry.js} +2 -2
- package/dist/stzh-components/p-995bee31.entry.js.map +1 -0
- package/dist/stzh-components/p-9c1b3929.entry.js.map +1 -1
- package/dist/stzh-components/p-aa3e4203.entry.js.map +1 -1
- package/dist/stzh-components/p-b273f95c.entry.js.map +1 -1
- package/dist/stzh-components/p-b397337c.entry.js.map +1 -1
- package/dist/stzh-components/p-b41d255f.entry.js.map +1 -1
- package/dist/stzh-components/{p-2ba166dd.entry.js → p-b5c781bc.entry.js} +2 -2
- package/dist/stzh-components/{p-2ba166dd.entry.js.map → p-b5c781bc.entry.js.map} +1 -1
- package/dist/stzh-components/{p-ab2aee99.entry.js → p-b87781f5.entry.js} +2 -2
- package/dist/stzh-components/{p-ab2aee99.entry.js.map → p-b87781f5.entry.js.map} +1 -1
- package/dist/stzh-components/p-ba716237.entry.js.map +1 -1
- package/dist/stzh-components/p-bdff55a6.entry.js.map +1 -1
- package/dist/stzh-components/p-bfe8d5cc.entry.js +2 -0
- package/dist/stzh-components/p-bfe8d5cc.entry.js.map +1 -0
- package/dist/stzh-components/p-cb569e91.entry.js.map +1 -1
- package/dist/stzh-components/p-d0ecdd5b.entry.js.map +1 -1
- package/dist/stzh-components/p-d48ecb2f.entry.js.map +1 -1
- package/dist/stzh-components/p-d7697cf8.entry.js.map +1 -1
- package/dist/stzh-components/p-dcfe93da.entry.js.map +1 -1
- package/dist/stzh-components/{p-8b04698a.entry.js → p-f18978b5.entry.js} +2 -2
- package/dist/stzh-components/p-f18978b5.entry.js.map +1 -0
- package/dist/stzh-components/stzh-components.esm.js +1 -1
- package/dist/stzh-components/stzh-components.esm.js.map +1 -1
- package/dist/types/components/stzh-audio/stzh-audio.d.ts +1 -0
- package/dist/types/components/stzh-breadcrumb/stzh-breadcrumb.d.ts +1 -1
- package/dist/types/components/stzh-card-navigation/stzh-card-navigation.d.ts +2 -0
- package/dist/types/components/stzh-card-searchresult/stzh-card-searchresult.d.ts +2 -0
- package/dist/types/components/stzh-card-superteaser/stzh-card-superteaser.d.ts +3 -1
- package/dist/types/components/stzh-carousel/stzh-carousel.d.ts +1 -1
- package/dist/types/components/stzh-clamp/stzh-clamp.d.ts +1 -1
- package/dist/types/components/stzh-datalist/stzh-datalist.d.ts +1 -0
- package/dist/types/components/stzh-datamessagelist/stzh-datamessagelist.d.ts +1 -0
- package/dist/types/components/stzh-datatable/stzh-datatable.d.ts +2 -1
- package/dist/types/components/stzh-dialog/stzh-dialog.d.ts +1 -0
- package/dist/types/components/stzh-ghettobox/stzh-ghettobox.d.ts +1 -0
- package/dist/types/components/stzh-header/stzh-header.d.ts +1 -0
- package/dist/types/components/stzh-link/stzh-link.d.ts +1 -1
- package/dist/types/components/stzh-pagebottom/stzh-pagebottom.d.ts +1 -0
- package/dist/types/components/stzh-pagecontent/stzh-pagecontent.d.ts +1 -0
- package/dist/types/components/stzh-pagetitle/stzh-pagetitle.d.ts +2 -1
- package/dist/types/components/stzh-pagetitle-hero/stzh-pagetitle-hero.d.ts +1 -0
- package/dist/types/components/stzh-pi-pagetitle/stzh-pi-pagetitle.d.ts +4 -0
- package/dist/types/components/stzh-pi-quote/stzh-pi-quote.d.ts +3 -0
- package/dist/types/components/stzh-search/stzh-search.d.ts +1 -0
- package/dist/types/components/stzh-sticky/stzh-sticky.d.ts +1 -1
- package/dist/types/components/stzh-sticky-actions/stzh-sticky-actions.d.ts +2 -0
- package/dist/types/components/stzh-table/stzh-table.d.ts +2 -0
- package/dist/types/components/stzh-vbz-intro/stzh-vbz-intro.d.ts +3 -0
- package/dist/types/components/stzh-youtube/stzh-youtube.d.ts +2 -1
- package/dist/types/components.d.ts +26 -2
- package/dist/types/index.d.ts +4 -0
- package/dist/vscode-data.json +13 -1
- package/package.json +1 -1
- package/dist/stzh-components/p-2d405b51.js +0 -2
- package/dist/stzh-components/p-30a7c058.entry.js.map +0 -1
- package/dist/stzh-components/p-3912a256.entry.js.map +0 -1
- package/dist/stzh-components/p-39acdb68.entry.js +0 -2
- package/dist/stzh-components/p-39acdb68.entry.js.map +0 -1
- package/dist/stzh-components/p-8b04698a.entry.js.map +0 -1
- package/dist/stzh-components/p-acef653a.entry.js +0 -2
- package/dist/stzh-components/p-acef653a.entry.js.map +0 -1
- package/dist/stzh-components/p-c169f243.entry.js +0 -2
- package/dist/stzh-components/p-c169f243.entry.js.map +0 -1
- package/dist/stzh-components/p-d9fa718c.entry.js.map +0 -1
|
@@ -1,27 +1,28 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { h, Host } from "@stencil/core";
|
|
2
2
|
import { Document } from "flexsearch/dist/flexsearch.bundle.min.js";
|
|
3
3
|
import { parse } from "papaparse";
|
|
4
4
|
import { hasSlot } from "../../utils/utils";
|
|
5
5
|
/**
|
|
6
|
+
* @slot heading - Slot for heading element
|
|
6
7
|
* @slot action-button - Slot for action `stzh-button` element
|
|
7
8
|
*/
|
|
8
9
|
export class StzhDatatable {
|
|
9
10
|
constructor() {
|
|
10
11
|
this.handleSortByDropdownChange = async (event) => {
|
|
11
12
|
const target = event.target;
|
|
12
|
-
const sortBy = await target.getValue();
|
|
13
|
+
const sortBy = (await target.getValue());
|
|
13
14
|
this.sortBy = sortBy;
|
|
14
15
|
};
|
|
15
16
|
this.handleSortDirectionDropdownChange = async (event) => {
|
|
16
17
|
const target = event.target;
|
|
17
|
-
const sortDirection = await target.getValue();
|
|
18
|
+
const sortDirection = (await target.getValue());
|
|
18
19
|
this.sortDirection = sortDirection;
|
|
19
20
|
};
|
|
20
21
|
this.handleRowClick = (event, row) => {
|
|
21
22
|
this.stzhRowClick.emit({
|
|
22
23
|
component: "stzh-datatable",
|
|
23
24
|
row,
|
|
24
|
-
originalEvent: event
|
|
25
|
+
originalEvent: event,
|
|
25
26
|
});
|
|
26
27
|
};
|
|
27
28
|
this.handleCellClick = (event, row, column, cellIndex, rowIndex) => {
|
|
@@ -31,14 +32,14 @@ export class StzhDatatable {
|
|
|
31
32
|
column,
|
|
32
33
|
cellIndex,
|
|
33
34
|
rowIndex,
|
|
34
|
-
originalEvent: event
|
|
35
|
+
originalEvent: event,
|
|
35
36
|
});
|
|
36
37
|
};
|
|
37
38
|
this.handleSortClick = (event, column) => {
|
|
38
39
|
this.stzhSortClick.emit({
|
|
39
40
|
component: "stzh-datatable",
|
|
40
41
|
column,
|
|
41
|
-
originalEvent: event
|
|
42
|
+
originalEvent: event,
|
|
42
43
|
});
|
|
43
44
|
this.toggleSort(column.key);
|
|
44
45
|
};
|
|
@@ -63,14 +64,12 @@ export class StzhDatatable {
|
|
|
63
64
|
cells.forEach((cell, index) => {
|
|
64
65
|
const offsetLeft = cell.offsetLeft;
|
|
65
66
|
const offsetRight = offsetLeft + cell.offsetWidth;
|
|
66
|
-
if (this.hasScrollLeft
|
|
67
|
-
&& this._columns[index].fixed === "left"
|
|
68
|
-
&& Math.ceil(wrapperScrollLeft) >= offsetLeft) {
|
|
67
|
+
if (this.hasScrollLeft && this._columns[index].fixed === "left" && Math.ceil(wrapperScrollLeft) >= offsetLeft) {
|
|
69
68
|
this.cellsStickyLeft.push(index);
|
|
70
69
|
}
|
|
71
|
-
if (this.hasScrollRight
|
|
72
|
-
|
|
73
|
-
|
|
70
|
+
if (this.hasScrollRight &&
|
|
71
|
+
this._columns[index].fixed === "right" &&
|
|
72
|
+
Math.ceil(wrapperScrollLeft) + wrapperClientWidth <= offsetRight) {
|
|
74
73
|
this.cellsStickyRight.push(index);
|
|
75
74
|
}
|
|
76
75
|
});
|
|
@@ -139,7 +138,7 @@ export class StzhDatatable {
|
|
|
139
138
|
const csvData = await response.text();
|
|
140
139
|
const { columns, rows } = await this.parseCsvToJson(csvData);
|
|
141
140
|
if (this.csvHeader) {
|
|
142
|
-
this.columns = columns.map(
|
|
141
|
+
this.columns = columns.map(column => {
|
|
143
142
|
var _a;
|
|
144
143
|
return (Object.assign(Object.assign({}, column), (((_a = this._columns) === null || _a === void 0 ? void 0 : _a.find(({ key }) => key === column.key)) || {})));
|
|
145
144
|
});
|
|
@@ -161,7 +160,7 @@ export class StzhDatatable {
|
|
|
161
160
|
const row = {};
|
|
162
161
|
function transformRowCell(cellData) {
|
|
163
162
|
const baseCellData = {
|
|
164
|
-
value: ""
|
|
163
|
+
value: "",
|
|
165
164
|
};
|
|
166
165
|
if (typeof cellData === "object") {
|
|
167
166
|
return Object.assign(Object.assign({}, baseCellData), cellData);
|
|
@@ -195,14 +194,14 @@ export class StzhDatatable {
|
|
|
195
194
|
this.stzhSortByChange.emit({
|
|
196
195
|
component: "stzh-datatable",
|
|
197
196
|
value,
|
|
198
|
-
oldValue
|
|
197
|
+
oldValue,
|
|
199
198
|
});
|
|
200
199
|
}
|
|
201
200
|
sortDirectionWatcher(value, oldValue) {
|
|
202
201
|
this.stzhSortDirectionChange.emit({
|
|
203
202
|
component: "stzh-datatable",
|
|
204
203
|
value,
|
|
205
|
-
oldValue
|
|
204
|
+
oldValue,
|
|
206
205
|
});
|
|
207
206
|
}
|
|
208
207
|
async parseCsvToJson(csvData) {
|
|
@@ -210,23 +209,23 @@ export class StzhDatatable {
|
|
|
210
209
|
parse(csvData, {
|
|
211
210
|
header: this.csvHeader,
|
|
212
211
|
dynamicTyping: this.csvDynamicTyping,
|
|
213
|
-
complete:
|
|
214
|
-
const normalizedData = result.data.map(
|
|
212
|
+
complete: result => {
|
|
213
|
+
const normalizedData = result.data.map(row => {
|
|
215
214
|
const normalizedRow = {};
|
|
216
|
-
Object.keys(row).forEach(
|
|
215
|
+
Object.keys(row).forEach(key => {
|
|
217
216
|
normalizedRow[key.toLowerCase()] = row[key];
|
|
218
217
|
});
|
|
219
218
|
return normalizedRow;
|
|
220
219
|
});
|
|
221
220
|
resolve({
|
|
222
|
-
columns: Object.keys(result.data[0]).map(
|
|
221
|
+
columns: Object.keys(result.data[0]).map(key => ({
|
|
223
222
|
key: key.toLowerCase(),
|
|
224
223
|
text: key,
|
|
225
224
|
})),
|
|
226
225
|
rows: normalizedData,
|
|
227
226
|
});
|
|
228
227
|
},
|
|
229
|
-
error:
|
|
228
|
+
error: error => {
|
|
230
229
|
reject(error);
|
|
231
230
|
},
|
|
232
231
|
});
|
|
@@ -237,26 +236,25 @@ export class StzhDatatable {
|
|
|
237
236
|
component: "stzh-datatable",
|
|
238
237
|
column,
|
|
239
238
|
index,
|
|
240
|
-
originalEvent: event
|
|
239
|
+
originalEvent: event,
|
|
241
240
|
});
|
|
242
241
|
}
|
|
243
242
|
buildSearchIndex() {
|
|
244
|
-
if (!this._rows || this._rows.length === 0
|
|
245
|
-
|| !this._columns || this._columns.length === 0) {
|
|
243
|
+
if (!this._rows || this._rows.length === 0 || !this._columns || this._columns.length === 0) {
|
|
246
244
|
return;
|
|
247
245
|
}
|
|
248
246
|
this.searchIndex = new Document({
|
|
249
247
|
tokenize: "forward",
|
|
250
248
|
matcher: {
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
249
|
+
"[äà]": "a",
|
|
250
|
+
"[öó]": "o",
|
|
251
|
+
"[üûúù]": "u",
|
|
252
|
+
"[éè]": "e",
|
|
255
253
|
},
|
|
256
254
|
document: {
|
|
257
255
|
id: this.idField,
|
|
258
|
-
index: this._columns.map(column => column.key)
|
|
259
|
-
}
|
|
256
|
+
index: this._columns.map(column => column.key),
|
|
257
|
+
},
|
|
260
258
|
});
|
|
261
259
|
this._rows.forEach(row => {
|
|
262
260
|
const rowData = {};
|
|
@@ -281,15 +279,14 @@ export class StzhDatatable {
|
|
|
281
279
|
this._rowsFiltered = [];
|
|
282
280
|
if (this.query) {
|
|
283
281
|
let resultIds = [];
|
|
284
|
-
this.searchIndex.search(this.query).forEach(
|
|
282
|
+
this.searchIndex.search(this.query).forEach(result => {
|
|
285
283
|
resultIds = [...resultIds, ...result.result];
|
|
286
284
|
});
|
|
287
285
|
resultIds = resultIds.filter(function (item, pos) {
|
|
288
286
|
return resultIds.indexOf(item) === pos;
|
|
289
287
|
});
|
|
290
|
-
this._rows.forEach(
|
|
291
|
-
if (resultIds.includes(row[this.idField].value)
|
|
292
|
-
|| resultIds.includes(row[this.idField].value.toString())) {
|
|
288
|
+
this._rows.forEach(row => {
|
|
289
|
+
if (resultIds.includes(row[this.idField].value) || resultIds.includes(row[this.idField].value.toString())) {
|
|
293
290
|
this._rowsFiltered.push(row);
|
|
294
291
|
}
|
|
295
292
|
});
|
|
@@ -298,7 +295,7 @@ export class StzhDatatable {
|
|
|
298
295
|
this._rowsFiltered = [...this._rows];
|
|
299
296
|
}
|
|
300
297
|
if (this.sortBy) {
|
|
301
|
-
const columnConfig = this._columns.find(
|
|
298
|
+
const columnConfig = this._columns.find(column => column.key === this.sortBy);
|
|
302
299
|
let column = this.sortBy;
|
|
303
300
|
let type = null;
|
|
304
301
|
if (typeof columnConfig.sort === "object") {
|
|
@@ -355,14 +352,14 @@ export class StzhDatatable {
|
|
|
355
352
|
"has-list": this.showList,
|
|
356
353
|
"has-heading": headingSlotUsed,
|
|
357
354
|
"has-action-or-search": actionButtonSlotUsed || !this.hideSearch,
|
|
358
|
-
"has-header": headingSlotUsed || actionButtonSlotUsed || !this.hideSearch
|
|
355
|
+
"has-header": headingSlotUsed || actionButtonSlotUsed || !this.hideSearch,
|
|
359
356
|
};
|
|
360
357
|
const totalPages = Math.ceil(this._rowsFiltered.length / this.pageSize);
|
|
361
|
-
const firstHeaderColumn = this._columns.find(
|
|
358
|
+
const firstHeaderColumn = this._columns.find(column => column.isHeader);
|
|
362
359
|
const sortByOptions = [
|
|
363
360
|
{
|
|
364
361
|
text: this.localization.sortByDefaultOption,
|
|
365
|
-
value:
|
|
362
|
+
value: "",
|
|
366
363
|
},
|
|
367
364
|
...this._columns
|
|
368
365
|
.filter(column => !!column.sort)
|
|
@@ -372,17 +369,17 @@ export class StzhDatatable {
|
|
|
372
369
|
value: column.key,
|
|
373
370
|
text: (_a = this.localization.sortByOption) === null || _a === void 0 ? void 0 : _a.replace(/\{column\}/gi, column.text),
|
|
374
371
|
});
|
|
375
|
-
})
|
|
372
|
+
}),
|
|
376
373
|
];
|
|
377
374
|
const sortDirectionOptions = [
|
|
378
375
|
{
|
|
379
|
-
value:
|
|
376
|
+
value: "asc",
|
|
380
377
|
text: (_a = this.localization.sortDirectionOption) === null || _a === void 0 ? void 0 : _a.replace(/\{direction\}/gi, this.localization.asc),
|
|
381
378
|
},
|
|
382
379
|
{
|
|
383
|
-
value:
|
|
380
|
+
value: "desc",
|
|
384
381
|
text: (_b = this.localization.sortDirectionOption) === null || _b === void 0 ? void 0 : _b.replace(/\{direction\}/gi, this.localization.desc),
|
|
385
|
-
}
|
|
382
|
+
},
|
|
386
383
|
];
|
|
387
384
|
const getCellClasses = (column, row, index) => {
|
|
388
385
|
var _a, _b, _c, _d, _e;
|
|
@@ -397,48 +394,71 @@ export class StzhDatatable {
|
|
|
397
394
|
"has-sorted-asc": column.key === this.sortBy && this.sortDirection === "asc",
|
|
398
395
|
"has-sorted-desc": column.key === this.sortBy && this.sortDirection === "desc",
|
|
399
396
|
[`align-${((_b = row[column.key]) === null || _b === void 0 ? void 0 : _b.align) || column.align}`]: !!((_c = row[column.key]) === null || _c === void 0 ? void 0 : _c.align) || !!column.align,
|
|
400
|
-
[`valign-${((_d = row[column.key]) === null || _d === void 0 ? void 0 : _d.valign) || column.valign}`]: !!((_e = row[column.key]) === null || _e === void 0 ? void 0 : _e.valign) || !!column.valign
|
|
397
|
+
[`valign-${((_d = row[column.key]) === null || _d === void 0 ? void 0 : _d.valign) || column.valign}`]: !!((_e = row[column.key]) === null || _e === void 0 ? void 0 : _e.valign) || !!column.valign,
|
|
401
398
|
};
|
|
402
399
|
};
|
|
403
|
-
return (h(Host, null, h("div", { class: classes }, h("div", { class: "stzh-datatable__header" }, h("div", { class: "stzh-datatable__heading" }, h("slot", { name: "heading" })), h("div", { class: "stzh-datatable__sub-header" }, !this.hideSearch &&
|
|
404
|
-
h("stzh-input", { ref: (el) => (this.input = el), class: "stzh-datatable__search", size: "small", name: "stzh-datatable-search", onStzhChange: this.onInputChange, hideOptional: true, label: this.localization.searchLabel, type: "search" }), h("div", { class: "stzh-datatable__action-button" }, h("slot", { name: "action-button" })))), h("div", { class: "stzh-datatable__outer-wrapper" }, h("div", { ref: (el) => (this.tableWrapper = el), class: "stzh-datatable__wrapper", onScroll: this.handleScroll }, h("table", { class: {
|
|
400
|
+
return (h(Host, null, h("div", { class: classes }, h("div", { class: "stzh-datatable__header" }, h("div", { class: "stzh-datatable__heading" }, h("slot", { name: "heading" })), h("div", { class: "stzh-datatable__sub-header" }, !this.hideSearch && (h("stzh-input", { ref: el => (this.input = el), class: "stzh-datatable__search", size: "small", name: "stzh-datatable-search", onStzhChange: this.onInputChange, hideOptional: true, label: this.localization.searchLabel, type: "search" })), h("div", { class: "stzh-datatable__action-button" }, h("slot", { name: "action-button" })))), h("div", { class: "stzh-datatable__outer-wrapper" }, h("div", { ref: el => (this.tableWrapper = el), class: "stzh-datatable__wrapper", onScroll: this.handleScroll }, h("table", { class: {
|
|
405
401
|
"stzh-datatable__table": true,
|
|
406
402
|
"has-layout-fixed": this.tableLayout === "fixed",
|
|
407
|
-
} }, !this.hideColumnHeadings &&
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
403
|
+
} }, !this.hideColumnHeadings && (h("thead", { class: "stzh-datatable__thead" }, h("tr", { class: "stzh-datatable__row stzh-datatable__row--head" }, (() => {
|
|
404
|
+
let colspanOffset = 0;
|
|
405
|
+
return this._columns.map((column, index) => {
|
|
406
|
+
if (colspanOffset > 0) {
|
|
407
|
+
colspanOffset--;
|
|
408
|
+
return null;
|
|
409
|
+
}
|
|
410
|
+
const colspan = column.colspan || 1;
|
|
411
|
+
if (colspan > 1) {
|
|
412
|
+
colspanOffset = colspan - 1;
|
|
413
|
+
}
|
|
414
|
+
return (h("th", Object.assign({ onClick: event => this.handleHeadingCellClick(event, column, index), style: column.style, class: {
|
|
415
|
+
"stzh-datatable__cell stzh-datatable__cell--head": true,
|
|
416
|
+
"is-sticky-left": column.fixed === "left",
|
|
417
|
+
"is-sticky-right": column.fixed === "right",
|
|
418
|
+
"is-sortable": !!column.sort,
|
|
419
|
+
"has-sticked": this.cellsStickyLeft.indexOf(index) > -1 || this.cellsStickyRight.indexOf(index) > -1,
|
|
420
|
+
"has-sorted": column.key === this.sortBy,
|
|
421
|
+
"has-sorted-asc": column.key === this.sortBy && this.sortDirection === "asc",
|
|
422
|
+
"has-sorted-desc": column.key === this.sortBy && this.sortDirection === "desc",
|
|
423
|
+
[`align-${column.align}`]: !!column.align,
|
|
424
|
+
[`valign-${column.valign}`]: !!column.valign,
|
|
425
|
+
} }, (colspan > 1 ? { colspan } : {}), (column.rowspan ? { rowspan: column.rowspan } : {})), !column.hideColumnHeading &&
|
|
426
|
+
(column.sort ? (h("button", { class: "stzh-datatable__sort-button", type: "button", onClick: event => this.handleSortClick(event, column), "s-object-id": column.analyticsId || `${column.text} ${this.localization.columnSort}` }, h("span", null, column.text), h("stzh-icon", { name: "arrow-up", class: "stzh-datatable__sort-icon", a11yTitle: this.localization.columnSort }))) : (h("span", null, column.text)))));
|
|
427
|
+
});
|
|
428
|
+
})()))), h("tbody", { class: "stzh-datatable__tbody" }, (() => {
|
|
429
|
+
const rowspanOffsets = [];
|
|
430
|
+
return this._rowsShown.map((row, rowIndex) => (h("tr", { class: "stzh-datatable__row stzh-datatable__row--body", onClick: event => this.handleRowClick(event, row) }, (() => {
|
|
431
|
+
let colspanOffset = 0;
|
|
432
|
+
return this._columns.map((column, index) => {
|
|
433
|
+
if (rowspanOffsets[index]) {
|
|
434
|
+
rowspanOffsets[index]--;
|
|
435
|
+
return null;
|
|
436
|
+
}
|
|
437
|
+
if (colspanOffset > 0) {
|
|
438
|
+
colspanOffset--;
|
|
439
|
+
return null;
|
|
440
|
+
}
|
|
441
|
+
const cell = row[column.key];
|
|
442
|
+
const colspan = (cell === null || cell === void 0 ? void 0 : cell.colspan) || 1;
|
|
443
|
+
const rowspan = (cell === null || cell === void 0 ? void 0 : cell.rowspan) || 1;
|
|
444
|
+
if (colspan > 1) {
|
|
445
|
+
colspanOffset = colspan - 1;
|
|
446
|
+
}
|
|
447
|
+
if (rowspan > 1) {
|
|
448
|
+
rowspanOffsets[index] = rowspan - 1;
|
|
449
|
+
}
|
|
450
|
+
return (cell === null || cell === void 0 ? void 0 : cell.isHeader) || column.isHeader ? (h("th", Object.assign({ id: cell.id, onClick: event => this.handleCellClick(event, row, column, index, rowIndex), innerHTML: cell.value.toString() || "", style: column.style }, (colspan > 1 ? { colspan } : {}), (rowspan > 1 ? { rowspan } : {}), { class: getCellClasses(column, row, index) }))) : (h("td", Object.assign({ id: cell.id, onClick: event => this.handleCellClick(event, row, column, index, rowIndex), innerHTML: cell.value.toString() || "", style: column.style }, (colspan > 1 ? { colspan } : {}), (rowspan > 1 ? { rowspan } : {}), { class: getCellClasses(column, row, index) })));
|
|
451
|
+
});
|
|
452
|
+
})())));
|
|
453
|
+
})())))), this.showList && (h("div", { class: "stzh-datatable__list-wrapper" }, sortByOptions.length > 1 && (h("div", { class: "stzh-datatable__list-sort-wrapper" }, h("stzh-dropdown", { inline: true, "no-search": true, class: "stzh-datatable__list-sort-by-dropdown", variant: "plain", size: "small", items: [this.sortBy], options: sortByOptions, onStzhChange: this.handleSortByDropdownChange }), h("stzh-dropdown", { disabled: this.sortBy === "", inline: true, "no-search": true, class: "stzh-datatable__list-sort-direction-dropdown", variant: "plain", size: "small", items: [this.sortDirection], options: sortDirectionOptions, onStzhChange: this.handleSortDirectionDropdownChange }))), h("stzh-accordion", { variant: "table" }, this._rowsShown.map((row, index) => {
|
|
454
|
+
var _a, _b, _c, _d;
|
|
455
|
+
return (h("stzh-accordion-item", { heading: ((_b = (_a = row[this.rowHeaderField]) === null || _a === void 0 ? void 0 : _a.value) === null || _b === void 0 ? void 0 : _b.toString()) ||
|
|
456
|
+
((_d = (_c = row[firstHeaderColumn === null || firstHeaderColumn === void 0 ? void 0 : firstHeaderColumn.key]) === null || _c === void 0 ? void 0 : _c.value) === null || _d === void 0 ? void 0 : _d.toString()) ||
|
|
457
|
+
this.localization.defaultListRowHeading.replace(/\{n\}/gi, (index + 1).toString()) }, h("stzh-datalist", { variant: "table", columnsMedium: 2 }, this._columns.map(column => {
|
|
458
|
+
var _a, _b;
|
|
459
|
+
return (h("stzh-datalist-item", { label: column.text, value: ((_b = (_a = row[column.key]) === null || _a === void 0 ? void 0 : _a.value) === null || _b === void 0 ? void 0 : _b.toString()) || "" }));
|
|
460
|
+
}))));
|
|
461
|
+
})))), this.pageSize !== null && totalPages > 1 && (h("div", { class: "stzh-datatable__pagination-wrapper" }, h("stzh-pagination", { value: this.page, total: totalPages, onStzhChange: this.onPaginationChange }))))));
|
|
442
462
|
}
|
|
443
463
|
static get is() { return "stzh-datatable"; }
|
|
444
464
|
static get originalStyleUrls() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stzh-datatable.js","sourceRoot":"","sources":["../../../../src/components/stzh-datatable/stzh-datatable.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Host,\n h,\n Element,\n Prop,\n Watch,\n Method,\n State,\n Event,\n EventEmitter,\n} from \"@stencil/core\";\n\nimport {\n StzhDatatableCellData,\n StzhDatatableRowData,\n StzhDatatableInputRowData,\n StzhDatatableColumnData,\n StzhDatatableRowClickEvent,\n StzhDatatableCellClickEvent,\n StzhDatatableHeadingCellClickEvent,\n StzhDatatableSortClickEvent,\n StzhDatatableSortByChangeEvent,\n StzhDatatableSortDirectionChangeEvent,\n StzhDropdownChangeEvent,\n StzhPaginationChangeEvent,\n} from \"../../index\";\n\nimport { Document } from \"flexsearch/dist/flexsearch.bundle.min.js\";\nimport { parse } from \"papaparse\";\n\nimport { StzhDatatableLocalizedText } from \"./stzh-datatable.localization\";\nimport { hasSlot } from \"../../utils/utils\";\n\n/**\n * @slot action-button - Slot for action `stzh-button` element\n */\n@Component({\n tag: \"stzh-datatable\",\n styleUrl: \"stzh-datatable.scss\"\n})\nexport class StzhDatatable {\n /** Table layout */\n @Prop() tableLayout: \"auto\" | \"fixed\" = \"auto\";\n\n /** Translation strings */\n @Prop() localization: StzhDatatableLocalizedText;\n\n /** Label */\n @Prop() label: string = \"\";\n\n /** Sort by given column key */\n @Prop({ mutable: true }) sortBy: string = \"\";\n\n /** Sort direction */\n @Prop({ mutable: true }) sortDirection: \"asc\" | \"desc\" = \"asc\";\n\n /** Tokenize type */\n // @Prop() tokenize: \"strict\" | \"forward\" | \"reverse\" | \"full\" = \"forward\";\n\n /** ID field */\n @Prop() idField = \"id\";\n\n /** Row header field when list is used (`showList=true`) */\n @Prop() rowHeaderField = \"\";\n\n /* Whether to hide search */\n @Prop({ reflect: true }) hideSearch = false;\n\n /* Whether to hide column heading cells */\n @Prop({ reflect: true }) hideColumnHeadings = false;\n\n /** Whether to show table data as list on mikro breakpoint */\n @Prop({ reflect: true }) showList = false;\n\n /** Current page */\n @Prop({ mutable: true }) page: number = 1;\n\n /** If pagination should be shown, set a number of items to be shown by each page. */\n @Prop() pageSize: number = null;\n\n /** URL of the CSV data */\n @Prop() csvUrl: string;\n\n /** Whether csv has header row */\n @Prop() csvHeader: boolean = true;\n\n /** Whether csv has dynamic typing enabled */\n @Prop() csvDynamicTyping: boolean = true;\n\n /**\n * Whether to disable min-width of the table.\n *\n * If `false`, the default `min-width` is `700px`\n * If `true`, the `min-width` is `none`, so the table will try to squeeze down content as much as possible.\n *\n * You can also overwrite the min-width via CSS with the custom property `--min-width`.\n */\n @Prop({ reflect: true }) disableMinWidth: boolean = false;\n\n /**\n * Array of objects including the row data that must at least include `id` attribute (name can be changed with `idField` property).\n *\n * Example: [{\"id\":\"1\",\"text\":\"Foo\"}, ...]\n */\n @Prop({ mutable: true }) rows: StzhDatatableInputRowData[] | StzhDatatableCellData[][] | string = [];\n private _rows: StzhDatatableRowData[];\n private _rowsShown: StzhDatatableRowData[];\n private _rowsFiltered: StzhDatatableRowData[];\n\n /**\n * Array of objects including the columns data that must include `key` and `text` attribute.\n *\n * Example: [{ \"key\": \"id\", \"text\": \"ID\", \"align\": \"right\", \"sort\": true, \"fixed\": \"right\", style: { width: \"53px\" } }]\n */\n\n @Prop({ mutable: true }) columns: StzhDatatableColumnData[] | string = [];\n private _columns: StzhDatatableColumnData[];\n\n @State() query: string = \"\";\n @State() hasScrollLeft: boolean = false;\n @State() hasScrollRight: boolean = false;\n @State() isScrollable: boolean = false;\n @State() cellsStickyLeft: number[] = [];\n @State() cellsStickyRight: number[] = [];\n\n @Element() element: HTMLStzhDatatableElement;\n\n /** Datatable row click event */\n @Event() stzhRowClick: EventEmitter<StzhDatatableRowClickEvent>;\n\n /** Datatable cell click event */\n @Event() stzhCellClick: EventEmitter<StzhDatatableCellClickEvent>;\n\n /** Datatable heading cell click event */\n @Event() stzhHeadingCellClick: EventEmitter<StzhDatatableHeadingCellClickEvent>;\n\n /** Datatable sort click event */\n @Event() stzhSortClick: EventEmitter<StzhDatatableSortClickEvent>;\n\n /** Datatable sort by change event */\n @Event() stzhSortByChange: EventEmitter<StzhDatatableSortByChangeEvent>;\n\n /** Datatable sort direction change event */\n @Event() stzhSortDirectionChange: EventEmitter<StzhDatatableSortDirectionChangeEvent>;\n\n /** Toggle sort by a given column key like when clicking on a column header */\n @Method()\n async toggleSort(columnKey: string) {\n this.page = 1;\n\n if (columnKey === this.sortBy) {\n this.sortDirection = this.sortDirection === \"asc\" ? \"desc\" : \"asc\";\n } else {\n this.sortDirection = \"asc\";\n this.sortBy = columnKey;\n }\n }\n\n @Watch(\"csvUrls\")\n async csvUrlsWatcher(newUrl: string) {\n if (!newUrl) {\n return;\n }\n\n const response = await fetch(newUrl);\n const csvData = await response.text();\n const { columns, rows } = await this.parseCsvToJson(csvData);\n\n if (this.csvHeader) {\n this.columns = columns.map((column) => ({\n ...column,\n ...(this._columns?.find(({ key }) => key === column.key) || {})\n }));\n } else {\n this.columns = this.columns || columns;\n }\n\n this.rows = rows;\n }\n\n @Watch(\"rows\")\n rowsWatcher(newValue: StzhDatatableInputRowData[] | StzhDatatableCellData[][] | string) {\n let inputData: StzhDatatableInputRowData[] | StzhDatatableCellData[][];\n\n if (typeof newValue === \"string\") {\n inputData = JSON.parse(newValue);\n } else {\n inputData = newValue;\n }\n\n this._rows = inputData.map((rowData: StzhDatatableCellData[] | StzhDatatableInputRowData) => {\n const row: StzhDatatableRowData = {};\n\n function transformRowCell(cellData: StzhDatatableCellData | string | number) {\n const baseCellData: StzhDatatableCellData = {\n value: \"\"\n };\n\n if (typeof cellData === \"object\") {\n return {\n ...baseCellData,\n ...cellData\n };\n } else {\n return {\n ...baseCellData,\n value: cellData\n };\n }\n }\n\n this._columns.forEach((column, index) => {\n if (Array.isArray(rowData)) {\n row[column.key] = transformRowCell(rowData[index]);\n } else {\n row[column.key] = transformRowCell(rowData[column.key]);\n }\n });\n\n return row;\n });\n\n this.buildSearchIndex();\n }\n\n @Watch(\"columns\")\n columnsWatcher(newValue: StzhDatatableColumnData[] | string) {\n if (typeof newValue === \"string\") {\n this._columns = JSON.parse(newValue);\n } else {\n this._columns = newValue;\n }\n\n this.rowsWatcher(this.rows);\n }\n\n @Watch(\"sortBy\")\n sortByWatcher(value: string, oldValue: string) {\n this.stzhSortByChange.emit({\n component: \"stzh-datatable\",\n value,\n oldValue\n });\n }\n\n @Watch(\"sortDirection\")\n sortDirectionWatcher(value: \"asc\" | \"desc\", oldValue: \"asc\" | \"desc\") {\n this.stzhSortDirectionChange.emit({\n component: \"stzh-datatable\",\n value,\n oldValue\n });\n }\n\n private input: HTMLStzhInputElement;\n private searchIndex: Document;\n private tableWrapper: HTMLDivElement;\n private debounceScroll: number;\n\n private debounceResize: number;\n private resizeObserver: ResizeObserver;\n\n private async parseCsvToJson(csvData: string): Promise<{\n columns: { key: string, text: string }[]\n rows: { [key: string]: string | number }[]\n }> {\n return new Promise((resolve, reject) => {\n parse(csvData, {\n header: this.csvHeader,\n dynamicTyping: this.csvDynamicTyping,\n complete: (result) => {\n const normalizedData = result.data.map((row) => {\n const normalizedRow = {};\n Object.keys(row).forEach((key) => {\n normalizedRow[key.toLowerCase()] = row[key];\n });\n return normalizedRow;\n });\n resolve({\n columns: Object.keys(result.data[0]).map((key) => ({\n key: key.toLowerCase(),\n text: key,\n })),\n rows: normalizedData,\n });\n },\n error: (error) => {\n reject(error);\n },\n });\n });\n }\n\n private handleSortByDropdownChange = async (event: CustomEvent<StzhDropdownChangeEvent>) => {\n const target: HTMLStzhDropdownElement = event.target as HTMLStzhDropdownElement;\n const sortBy = await target.getValue() as string;\n this.sortBy = sortBy;\n }\n\n private handleSortDirectionDropdownChange = async (event: CustomEvent<StzhDropdownChangeEvent>) => {\n const target: HTMLStzhDropdownElement = event.target as HTMLStzhDropdownElement;\n const sortDirection = await target.getValue() as \"asc\" | \"desc\";\n this.sortDirection = sortDirection;\n }\n\n private handleRowClick = (event: MouseEvent, row: StzhDatatableRowData) => {\n this.stzhRowClick.emit({\n component: \"stzh-datatable\",\n row,\n originalEvent: event\n });\n }\n\n private handleCellClick = (event: MouseEvent, row: StzhDatatableRowData, column: StzhDatatableColumnData, cellIndex: number, rowIndex: number) => {\n this.stzhCellClick.emit({\n component: \"stzh-datatable\",\n row,\n column,\n cellIndex,\n rowIndex,\n originalEvent: event\n });\n }\n\n private handleHeadingCellClick(event: MouseEvent, column: StzhDatatableColumnData, index: number) {\n this.stzhHeadingCellClick.emit({\n component: \"stzh-datatable\",\n column,\n index,\n originalEvent: event\n });\n }\n\n private handleSortClick = (event: MouseEvent, column: StzhDatatableColumnData) => {\n this.stzhSortClick.emit({\n component: \"stzh-datatable\",\n column,\n originalEvent: event\n });\n\n this.toggleSort(column.key);\n }\n\n private updateScrollStates = () => {\n if (!this.tableWrapper) {\n return;\n }\n\n const wrapperScrollLeft = this.tableWrapper.scrollLeft;\n const wrapperScrollWidth = this.tableWrapper.scrollWidth;\n const wrapperClientWidth = this.tableWrapper.clientWidth;\n\n this.isScrollable = wrapperScrollWidth > wrapperClientWidth;\n this.hasScrollLeft = wrapperScrollLeft > 0;\n this.hasScrollRight = wrapperScrollLeft < wrapperScrollWidth - wrapperClientWidth;\n\n const rows: HTMLTableRowElement[] = Array.from(this.tableWrapper.querySelectorAll(\"tr\"));\n const firstRow = rows[0];\n\n if (!firstRow) {\n return;\n }\n\n this.cellsStickyLeft = [];\n this.cellsStickyRight = [];\n const cells: Element[] = Array.from(firstRow.children);\n\n cells.forEach((cell: HTMLTableCellElement, index: number) => {\n const offsetLeft = cell.offsetLeft;\n const offsetRight = offsetLeft + cell.offsetWidth;\n\n if (\n this.hasScrollLeft\n && this._columns[index].fixed === \"left\"\n && Math.ceil(wrapperScrollLeft) >= offsetLeft\n ) {\n this.cellsStickyLeft.push(index);\n }\n\n if (\n this.hasScrollRight\n && this._columns[index].fixed === \"right\"\n && Math.ceil(wrapperScrollLeft) + wrapperClientWidth <= offsetRight\n ) {\n this.cellsStickyRight.push(index);\n }\n });\n }\n\n private handleResize = () => {\n if (this.debounceResize) {\n window.cancelAnimationFrame(this.debounceResize);\n }\n\n this.debounceResize = requestAnimationFrame(this.updateScrollStates);\n }\n\n private handleScroll = () => {\n if (this.debounceScroll) {\n window.cancelAnimationFrame(this.debounceScroll);\n }\n\n this.debounceScroll = requestAnimationFrame(this.updateScrollStates);\n }\n\n private buildSearchIndex() {\n if (!this._rows || this._rows.length === 0\n || !this._columns || this._columns.length === 0\n ) {\n return;\n }\n\n this.searchIndex = new Document({\n tokenize: \"forward\",\n matcher: {\n '[äà]': 'a',\n '[öó]': 'o',\n '[üûúù]': 'u',\n '[éè]': 'e'\n },\n document: {\n id: this.idField,\n index: this._columns.map(column => column.key)\n }\n });\n\n this._rows.forEach(row => {\n const rowData: {\n [key: string]: string\n } = {};\n\n for (const columnKey in row) {\n rowData[columnKey] = row[columnKey].value.toString();\n }\n\n this.searchIndex.add(rowData);\n });\n }\n\n private onInputChange = () => {\n this.query = this.input.value;\n }\n\n private onPaginationChange = (event: CustomEvent<StzhPaginationChangeEvent>) => {\n if (event.detail.component === \"stzh-pagination\") {\n this.page = event.detail.page;\n }\n }\n\n async componentWillLoad() {\n this.columnsWatcher(this.columns);\n await this.csvUrlsWatcher(this.csvUrl);\n\n if (!this.localization) {\n this.localization = await window.stzhComponents.utils.fetchTranslations(this.element, \"datatable\");\n }\n }\n\n componentDidLoad() {\n this.updateScrollStates();\n }\n\n componentWillRender() {\n this._rowsShown = [];\n this._rowsFiltered = [];\n\n if (this.query) {\n let resultIds = [];\n\n this.searchIndex.search(this.query).forEach((result) => {\n resultIds = [...resultIds, ...result.result];\n });\n\n resultIds = resultIds.filter(function(item, pos) {\n return resultIds.indexOf(item) === pos;\n });\n\n this._rows.forEach((row) => {\n if (\n resultIds.includes(row[this.idField].value)\n || resultIds.includes(row[this.idField].value.toString())\n ) {\n this._rowsFiltered.push(row);\n }\n });\n } else {\n this._rowsFiltered = [...this._rows];\n }\n\n if (this.sortBy) {\n const columnConfig = this._columns.find((column) => column.key === this.sortBy);\n\n let column = this.sortBy;\n let type = null;\n\n if (typeof columnConfig.sort === \"object\") {\n if (columnConfig.sort.field) {\n column = columnConfig.sort.field;\n }\n\n if (columnConfig.sort.type) {\n type = columnConfig.sort.type;\n }\n }\n\n this._rowsFiltered.sort((rowA, rowB) => {\n if (type === \"numerical\") {\n if (this.sortDirection === \"asc\") {\n return Number(rowA[column].value) - Number(rowB[column].value);\n } else {\n return Number(rowB[column].value) - Number(rowA[column].value);\n }\n } else {\n const comparison = rowA[column].value.toString().localeCompare(rowB[column].value.toString())\n return this.sortDirection === \"asc\" ? comparison : comparison / -1;\n }\n });\n }\n\n if (this.pageSize !== null) {\n const pageEnd = this.page * this.pageSize;\n this._rowsShown = this._rowsFiltered.slice(pageEnd - this.pageSize, pageEnd);\n } else {\n this._rowsShown = [...this._rowsFiltered];\n }\n }\n\n connectedCallback() {\n this.resizeObserver = new ResizeObserver(this.handleResize);\n this.resizeObserver.observe(this.element);\n }\n\n disconnectedCallback() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n\n render() {\n const headingSlotUsed = hasSlot(this.element, \"heading\");\n const actionButtonSlotUsed = hasSlot(this.element, \"action-button\");\n\n const classes = {\n \"stzh-datatable\": true,\n \"is-scrollable\": this.isScrollable,\n \"has-scroll-left\": this.hasScrollLeft,\n \"has-scroll-right\": this.hasScrollRight,\n \"has-scroll-left-shadow\": this.hasScrollLeft && this.cellsStickyLeft.length === 0,\n \"has-scroll-right-shadow\": this.hasScrollRight && this.cellsStickyRight.length === 0,\n \"has-list\": this.showList,\n \"has-heading\": headingSlotUsed,\n \"has-action-or-search\": actionButtonSlotUsed || !this.hideSearch,\n \"has-header\": headingSlotUsed || actionButtonSlotUsed || !this.hideSearch\n };\n\n const totalPages = Math.ceil(this._rowsFiltered.length / this.pageSize);\n\n const firstHeaderColumn = this._columns.find((column) => column.isHeader);\n\n const sortByOptions = [\n {\n text: this.localization.sortByDefaultOption,\n value: ''\n },\n ...this._columns\n .filter(column => !!column.sort)\n .map(column => ({\n value: column.key,\n text: this.localization.sortByOption\n ?.replace(/\\{column\\}/gi, column.text),\n }))\n ];\n\n const sortDirectionOptions = [\n {\n value: 'asc',\n text: this.localization.sortDirectionOption\n ?.replace(/\\{direction\\}/gi, this.localization.asc),\n },\n {\n value: 'desc',\n text: this.localization.sortDirectionOption\n ?.replace(/\\{direction\\}/gi, this.localization.desc),\n }\n ];\n\n const getCellClasses = (column: StzhDatatableColumnData, row: StzhDatatableRowData, index: number) => {\n return {\n \"stzh-datatable__cell stzh-datatable__cell--body\": true,\n \"is-sticky-left\": column.fixed === \"left\",\n \"is-sticky-right\": column.fixed === \"right\",\n \"is-head\": !!row[column.key]?.isHeader || !!column.isHeader,\n \"is-sortable\": !!column.sort,\n \"has-sticked\": this.cellsStickyLeft.indexOf(index) > -1 || this.cellsStickyRight.indexOf(index) > -1,\n \"has-sorted\": column.key === this.sortBy,\n \"has-sorted-asc\": column.key === this.sortBy && this.sortDirection === \"asc\",\n \"has-sorted-desc\": column.key === this.sortBy && this.sortDirection === \"desc\",\n [`align-${row[column.key]?.align || column.align}`]: !!row[column.key]?.align || !!column.align,\n [`valign-${row[column.key]?.valign || column.valign}`]: !!row[column.key]?.valign || !!column.valign\n }\n }\n\n return (\n <Host>\n <div class={classes}>\n <div class=\"stzh-datatable__header\">\n <div class=\"stzh-datatable__heading\">\n <slot name=\"heading\"></slot>\n </div>\n <div class=\"stzh-datatable__sub-header\">\n {!this.hideSearch &&\n <stzh-input\n ref={(el) => (this.input = el as HTMLStzhInputElement)}\n class=\"stzh-datatable__search\"\n size=\"small\"\n name=\"stzh-datatable-search\"\n onStzhChange={this.onInputChange}\n hideOptional={true}\n label={this.localization.searchLabel}\n type=\"search\"\n ></stzh-input>\n }\n <div class=\"stzh-datatable__action-button\">\n <slot name=\"action-button\"></slot>\n </div>\n </div>\n </div>\n\n <div class=\"stzh-datatable__outer-wrapper\">\n <div\n ref={(el) => (this.tableWrapper = el as HTMLDivElement)}\n class=\"stzh-datatable__wrapper\"\n onScroll={this.handleScroll}\n >\n <table class={{\n \"stzh-datatable__table\": true,\n \"has-layout-fixed\": this.tableLayout === \"fixed\",\n }}>\n {!this.hideColumnHeadings &&\n <thead class=\"stzh-datatable__thead\">\n <tr class=\"stzh-datatable__row stzh-datatable__row--head\">\n {this._columns.map((column, index) =>\n <th\n onClick={(event) => this.handleHeadingCellClick(event, column, index)}\n style={column.style}\n class={{\n \"stzh-datatable__cell stzh-datatable__cell--head\": true,\n \"is-sticky-left\": column.fixed === \"left\",\n \"is-sticky-right\": column.fixed === \"right\",\n \"is-sortable\": !!column.sort,\n \"has-sticked\": this.cellsStickyLeft.indexOf(index) > -1 || this.cellsStickyRight.indexOf(index) > -1,\n \"has-sorted\": column.key === this.sortBy,\n \"has-sorted-asc\": column.key === this.sortBy && this.sortDirection === \"asc\",\n \"has-sorted-desc\": column.key === this.sortBy && this.sortDirection === \"desc\",\n [`align-${column.align}`]: !!column.align,\n [`valign-${column.valign}`]: !!column.valign\n }}\n >\n {!column.hideColumnHeading &&\n (column.sort ?\n <button\n class=\"stzh-datatable__sort-button\"\n type=\"button\"\n onClick={(event) => this.handleSortClick(event, column)}\n s-object-id={column.analyticsId || `${column.text} ${this.localization.columnSort}`}\n >\n <span>{column.text}</span>\n <stzh-icon\n name=\"arrow-up\"\n class=\"stzh-datatable__sort-icon\"\n a11yTitle={this.localization.columnSort}\n ></stzh-icon>\n </button>\n :\n <span>{column.text}</span>)\n }\n </th>\n )}\n </tr>\n </thead>\n }\n <tbody class=\"stzh-datatable__tbody\">\n {this._rowsShown.map((row, rowIndex) =>\n <tr\n class=\"stzh-datatable__row stzh-datatable__row--body\"\n onClick={(event) => this.handleRowClick(event, row)}\n >\n {this._columns.map((column, index) =>\n (!!row[column.key]?.isHeader || !!column.isHeader)\n ?\n <th\n id={row[column.key].id}\n onClick={(event) => this.handleCellClick(event, row, column, index, rowIndex)}\n innerHTML={row[column.key].value.toString() || \"\"}\n style={column.style}\n class={getCellClasses(column, row, index)}\n ></th>\n :\n <td\n id={row[column.key].id}\n onClick={(event) => this.handleCellClick(event, row, column, index, rowIndex)}\n innerHTML={row[column.key].value.toString() || \"\"}\n style={column.style}\n class={getCellClasses(column, row, index)}\n ></td>\n )}\n </tr>\n )}\n </tbody>\n </table>\n </div>\n </div>\n\n {this.showList &&\n <div class=\"stzh-datatable__list-wrapper\">\n {sortByOptions.length > 1 &&\n <div class=\"stzh-datatable__list-sort-wrapper\">\n <stzh-dropdown\n inline\n no-search\n class=\"stzh-datatable__list-sort-by-dropdown\"\n variant=\"plain\"\n size=\"small\"\n items={[this.sortBy]}\n options={sortByOptions}\n onStzhChange={this.handleSortByDropdownChange}\n ></stzh-dropdown>\n <stzh-dropdown\n disabled={this.sortBy === ''}\n inline\n no-search\n class=\"stzh-datatable__list-sort-direction-dropdown\"\n variant=\"plain\"\n size=\"small\"\n items={[this.sortDirection]}\n options={sortDirectionOptions}\n onStzhChange={this.handleSortDirectionDropdownChange}\n ></stzh-dropdown>\n </div>\n }\n\n <stzh-accordion variant=\"table\">\n {this._rowsShown.map((row, index) =>\n <stzh-accordion-item\n heading={\n row[this.rowHeaderField]?.value?.toString()\n || row[firstHeaderColumn?.key]?.value?.toString()\n || this.localization.defaultListRowHeading.replace(/\\{n\\}/ig, (index + 1).toString())\n }\n >\n <stzh-datalist variant=\"table\" columnsMedium={2}>\n {this._columns.map((column) =>\n <stzh-datalist-item\n label={column.text}\n value={row[column.key]?.value?.toString() || \"\"}\n ></stzh-datalist-item>\n )}\n </stzh-datalist>\n </stzh-accordion-item>\n )}\n </stzh-accordion>\n </div>\n }\n\n {this.pageSize !== null && totalPages > 1 &&\n <div class=\"stzh-datatable__pagination-wrapper\">\n <stzh-pagination\n value={this.page}\n total={totalPages}\n onStzhChange={this.onPaginationChange}\n ></stzh-pagination>\n </div>\n }\n </div>\n </Host>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"stzh-datatable.js","sourceRoot":"","sources":["../../../../src/components/stzh-datatable/stzh-datatable.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, h, Host, Method, Prop, State, Watch } from \"@stencil/core\";\n\nimport {\n StzhDatatableCellClickEvent,\n StzhDatatableCellData,\n StzhDatatableColumnData,\n StzhDatatableHeadingCellClickEvent,\n StzhDatatableInputRowData,\n StzhDatatableRowClickEvent,\n StzhDatatableRowData,\n StzhDatatableSortByChangeEvent,\n StzhDatatableSortClickEvent,\n StzhDatatableSortDirectionChangeEvent,\n StzhDropdownChangeEvent,\n StzhPaginationChangeEvent,\n} from \"../../index\";\n\nimport { Document } from \"flexsearch/dist/flexsearch.bundle.min.js\";\nimport { parse } from \"papaparse\";\n\nimport { StzhDatatableLocalizedText } from \"./stzh-datatable.localization\";\nimport { hasSlot } from \"../../utils/utils\";\n\n/**\n * @slot heading - Slot for heading element\n * @slot action-button - Slot for action `stzh-button` element\n */\n@Component({\n tag: \"stzh-datatable\",\n styleUrl: \"stzh-datatable.scss\",\n})\nexport class StzhDatatable {\n /** Table layout */\n @Prop() tableLayout: \"auto\" | \"fixed\" = \"auto\";\n\n /** Translation strings */\n @Prop() localization: StzhDatatableLocalizedText;\n\n /** Label */\n @Prop() label: string = \"\";\n\n /** Sort by given column key */\n @Prop({ mutable: true }) sortBy: string = \"\";\n\n /** Sort direction */\n @Prop({ mutable: true }) sortDirection: \"asc\" | \"desc\" = \"asc\";\n\n /** Tokenize type */\n // @Prop() tokenize: \"strict\" | \"forward\" | \"reverse\" | \"full\" = \"forward\";\n\n /** ID field */\n @Prop() idField = \"id\";\n\n /** Row header field when list is used (`showList=true`) */\n @Prop() rowHeaderField = \"\";\n\n /* Whether to hide search */\n @Prop({ reflect: true }) hideSearch = false;\n\n /* Whether to hide column heading cells */\n @Prop({ reflect: true }) hideColumnHeadings = false;\n\n /** Whether to show table data as list on mikro breakpoint */\n @Prop({ reflect: true }) showList = false;\n\n /** Current page */\n @Prop({ mutable: true }) page: number = 1;\n\n /** If pagination should be shown, set a number of items to be shown by each page. */\n @Prop() pageSize: number = null;\n\n /** URL of the CSV data */\n @Prop() csvUrl: string;\n\n /** Whether csv has header row */\n @Prop() csvHeader: boolean = true;\n\n /** Whether csv has dynamic typing enabled */\n @Prop() csvDynamicTyping: boolean = true;\n\n /**\n * Whether to disable min-width of the table.\n *\n * If `false`, the default `min-width` is `700px`\n * If `true`, the `min-width` is `none`, so the table will try to squeeze down content as much as possible.\n *\n * You can also overwrite the min-width via CSS with the custom property `--min-width`.\n */\n @Prop({ reflect: true }) disableMinWidth: boolean = false;\n\n /**\n * Array of objects including the row data that must at least include `id` attribute (name can be changed with `idField` property).\n *\n * Example: [{\"id\":\"1\",\"text\":\"Foo\"}, ...]\n */\n @Prop({ mutable: true }) rows: StzhDatatableInputRowData[] | StzhDatatableCellData[][] | string = [];\n private _rows: StzhDatatableRowData[];\n private _rowsShown: StzhDatatableRowData[];\n private _rowsFiltered: StzhDatatableRowData[];\n\n /**\n * Array of objects including the columns data that must include `key` and `text` attribute.\n *\n * Example: [{ \"key\": \"id\", \"text\": \"ID\", \"align\": \"right\", \"sort\": true, \"fixed\": \"right\", style: { width: \"53px\" } }]\n */\n\n @Prop({ mutable: true }) columns: StzhDatatableColumnData[] | string = [];\n private _columns: StzhDatatableColumnData[];\n\n @State() query: string = \"\";\n @State() hasScrollLeft: boolean = false;\n @State() hasScrollRight: boolean = false;\n @State() isScrollable: boolean = false;\n @State() cellsStickyLeft: number[] = [];\n @State() cellsStickyRight: number[] = [];\n\n @Element() element: HTMLStzhDatatableElement;\n\n /** Datatable row click event */\n @Event() stzhRowClick: EventEmitter<StzhDatatableRowClickEvent>;\n\n /** Datatable cell click event */\n @Event() stzhCellClick: EventEmitter<StzhDatatableCellClickEvent>;\n\n /** Datatable heading cell click event */\n @Event() stzhHeadingCellClick: EventEmitter<StzhDatatableHeadingCellClickEvent>;\n\n /** Datatable sort click event */\n @Event() stzhSortClick: EventEmitter<StzhDatatableSortClickEvent>;\n\n /** Datatable sort by change event */\n @Event() stzhSortByChange: EventEmitter<StzhDatatableSortByChangeEvent>;\n\n /** Datatable sort direction change event */\n @Event() stzhSortDirectionChange: EventEmitter<StzhDatatableSortDirectionChangeEvent>;\n\n /** Toggle sort by a given column key like when clicking on a column header */\n @Method()\n async toggleSort(columnKey: string) {\n this.page = 1;\n\n if (columnKey === this.sortBy) {\n this.sortDirection = this.sortDirection === \"asc\" ? \"desc\" : \"asc\";\n } else {\n this.sortDirection = \"asc\";\n this.sortBy = columnKey;\n }\n }\n\n @Watch(\"csvUrls\")\n async csvUrlsWatcher(newUrl: string) {\n if (!newUrl) {\n return;\n }\n\n const response = await fetch(newUrl);\n const csvData = await response.text();\n const { columns, rows } = await this.parseCsvToJson(csvData);\n\n if (this.csvHeader) {\n this.columns = columns.map(column => ({\n ...column,\n ...(this._columns?.find(({ key }) => key === column.key) || {}),\n }));\n } else {\n this.columns = this.columns || columns;\n }\n\n this.rows = rows;\n }\n\n @Watch(\"rows\")\n rowsWatcher(newValue: StzhDatatableInputRowData[] | StzhDatatableCellData[][] | string) {\n let inputData: StzhDatatableInputRowData[] | StzhDatatableCellData[][];\n\n if (typeof newValue === \"string\") {\n inputData = JSON.parse(newValue);\n } else {\n inputData = newValue;\n }\n\n this._rows = inputData.map((rowData: StzhDatatableCellData[] | StzhDatatableInputRowData) => {\n const row: StzhDatatableRowData = {};\n\n function transformRowCell(cellData: StzhDatatableCellData | string | number) {\n const baseCellData: StzhDatatableCellData = {\n value: \"\",\n };\n\n if (typeof cellData === \"object\") {\n return {\n ...baseCellData,\n ...cellData,\n };\n } else {\n return {\n ...baseCellData,\n value: cellData,\n };\n }\n }\n\n this._columns.forEach((column, index) => {\n if (Array.isArray(rowData)) {\n row[column.key] = transformRowCell(rowData[index]);\n } else {\n row[column.key] = transformRowCell(rowData[column.key]);\n }\n });\n\n return row;\n });\n\n this.buildSearchIndex();\n }\n\n @Watch(\"columns\")\n columnsWatcher(newValue: StzhDatatableColumnData[] | string) {\n if (typeof newValue === \"string\") {\n this._columns = JSON.parse(newValue);\n } else {\n this._columns = newValue;\n }\n\n this.rowsWatcher(this.rows);\n }\n\n @Watch(\"sortBy\")\n sortByWatcher(value: string, oldValue: string) {\n this.stzhSortByChange.emit({\n component: \"stzh-datatable\",\n value,\n oldValue,\n });\n }\n\n @Watch(\"sortDirection\")\n sortDirectionWatcher(value: \"asc\" | \"desc\", oldValue: \"asc\" | \"desc\") {\n this.stzhSortDirectionChange.emit({\n component: \"stzh-datatable\",\n value,\n oldValue,\n });\n }\n\n private input: HTMLStzhInputElement;\n private searchIndex: Document;\n private tableWrapper: HTMLDivElement;\n private debounceScroll: number;\n\n private debounceResize: number;\n private resizeObserver: ResizeObserver;\n\n private async parseCsvToJson(csvData: string): Promise<{\n columns: { key: string; text: string }[];\n rows: { [key: string]: string | number }[];\n }> {\n return new Promise((resolve, reject) => {\n parse(csvData, {\n header: this.csvHeader,\n dynamicTyping: this.csvDynamicTyping,\n complete: result => {\n const normalizedData = result.data.map(row => {\n const normalizedRow = {};\n Object.keys(row).forEach(key => {\n normalizedRow[key.toLowerCase()] = row[key];\n });\n return normalizedRow;\n });\n resolve({\n columns: Object.keys(result.data[0]).map(key => ({\n key: key.toLowerCase(),\n text: key,\n })),\n rows: normalizedData,\n });\n },\n error: error => {\n reject(error);\n },\n });\n });\n }\n\n private handleSortByDropdownChange = async (event: CustomEvent<StzhDropdownChangeEvent>) => {\n const target: HTMLStzhDropdownElement = event.target as HTMLStzhDropdownElement;\n const sortBy = (await target.getValue()) as string;\n this.sortBy = sortBy;\n };\n\n private handleSortDirectionDropdownChange = async (event: CustomEvent<StzhDropdownChangeEvent>) => {\n const target: HTMLStzhDropdownElement = event.target as HTMLStzhDropdownElement;\n const sortDirection = (await target.getValue()) as \"asc\" | \"desc\";\n this.sortDirection = sortDirection;\n };\n\n private handleRowClick = (event: MouseEvent, row: StzhDatatableRowData) => {\n this.stzhRowClick.emit({\n component: \"stzh-datatable\",\n row,\n originalEvent: event,\n });\n };\n\n private handleCellClick = (\n event: MouseEvent,\n row: StzhDatatableRowData,\n column: StzhDatatableColumnData,\n cellIndex: number,\n rowIndex: number\n ) => {\n this.stzhCellClick.emit({\n component: \"stzh-datatable\",\n row,\n column,\n cellIndex,\n rowIndex,\n originalEvent: event,\n });\n };\n\n private handleHeadingCellClick(event: MouseEvent, column: StzhDatatableColumnData, index: number) {\n this.stzhHeadingCellClick.emit({\n component: \"stzh-datatable\",\n column,\n index,\n originalEvent: event,\n });\n }\n\n private handleSortClick = (event: MouseEvent, column: StzhDatatableColumnData) => {\n this.stzhSortClick.emit({\n component: \"stzh-datatable\",\n column,\n originalEvent: event,\n });\n\n this.toggleSort(column.key);\n };\n\n private updateScrollStates = () => {\n if (!this.tableWrapper) {\n return;\n }\n\n const wrapperScrollLeft = this.tableWrapper.scrollLeft;\n const wrapperScrollWidth = this.tableWrapper.scrollWidth;\n const wrapperClientWidth = this.tableWrapper.clientWidth;\n\n this.isScrollable = wrapperScrollWidth > wrapperClientWidth;\n this.hasScrollLeft = wrapperScrollLeft > 0;\n this.hasScrollRight = wrapperScrollLeft < wrapperScrollWidth - wrapperClientWidth;\n\n const rows: HTMLTableRowElement[] = Array.from(this.tableWrapper.querySelectorAll(\"tr\"));\n const firstRow = rows[0];\n\n if (!firstRow) {\n return;\n }\n\n this.cellsStickyLeft = [];\n this.cellsStickyRight = [];\n const cells: Element[] = Array.from(firstRow.children);\n\n cells.forEach((cell: HTMLTableCellElement, index: number) => {\n const offsetLeft = cell.offsetLeft;\n const offsetRight = offsetLeft + cell.offsetWidth;\n\n if (this.hasScrollLeft && this._columns[index].fixed === \"left\" && Math.ceil(wrapperScrollLeft) >= offsetLeft) {\n this.cellsStickyLeft.push(index);\n }\n\n if (\n this.hasScrollRight &&\n this._columns[index].fixed === \"right\" &&\n Math.ceil(wrapperScrollLeft) + wrapperClientWidth <= offsetRight\n ) {\n this.cellsStickyRight.push(index);\n }\n });\n };\n\n private handleResize = () => {\n if (this.debounceResize) {\n window.cancelAnimationFrame(this.debounceResize);\n }\n\n this.debounceResize = requestAnimationFrame(this.updateScrollStates);\n };\n\n private handleScroll = () => {\n if (this.debounceScroll) {\n window.cancelAnimationFrame(this.debounceScroll);\n }\n\n this.debounceScroll = requestAnimationFrame(this.updateScrollStates);\n };\n\n private buildSearchIndex() {\n if (!this._rows || this._rows.length === 0 || !this._columns || this._columns.length === 0) {\n return;\n }\n\n this.searchIndex = new Document({\n tokenize: \"forward\",\n matcher: {\n \"[äà]\": \"a\",\n \"[öó]\": \"o\",\n \"[üûúù]\": \"u\",\n \"[éè]\": \"e\",\n },\n document: {\n id: this.idField,\n index: this._columns.map(column => column.key),\n },\n });\n\n this._rows.forEach(row => {\n const rowData: {\n [key: string]: string;\n } = {};\n\n for (const columnKey in row) {\n rowData[columnKey] = row[columnKey].value.toString();\n }\n\n this.searchIndex.add(rowData);\n });\n }\n\n private onInputChange = () => {\n this.query = this.input.value;\n };\n\n private onPaginationChange = (event: CustomEvent<StzhPaginationChangeEvent>) => {\n if (event.detail.component === \"stzh-pagination\") {\n this.page = event.detail.page;\n }\n };\n\n async componentWillLoad() {\n this.columnsWatcher(this.columns);\n await this.csvUrlsWatcher(this.csvUrl);\n\n if (!this.localization) {\n this.localization = await window.stzhComponents.utils.fetchTranslations(this.element, \"datatable\");\n }\n }\n\n componentDidLoad() {\n this.updateScrollStates();\n }\n\n componentWillRender() {\n this._rowsShown = [];\n this._rowsFiltered = [];\n\n if (this.query) {\n let resultIds = [];\n\n this.searchIndex.search(this.query).forEach(result => {\n resultIds = [...resultIds, ...result.result];\n });\n\n resultIds = resultIds.filter(function (item, pos) {\n return resultIds.indexOf(item) === pos;\n });\n\n this._rows.forEach(row => {\n if (resultIds.includes(row[this.idField].value) || resultIds.includes(row[this.idField].value.toString())) {\n this._rowsFiltered.push(row);\n }\n });\n } else {\n this._rowsFiltered = [...this._rows];\n }\n\n if (this.sortBy) {\n const columnConfig = this._columns.find(column => column.key === this.sortBy);\n\n let column = this.sortBy;\n let type = null;\n\n if (typeof columnConfig.sort === \"object\") {\n if (columnConfig.sort.field) {\n column = columnConfig.sort.field;\n }\n\n if (columnConfig.sort.type) {\n type = columnConfig.sort.type;\n }\n }\n\n this._rowsFiltered.sort((rowA, rowB) => {\n if (type === \"numerical\") {\n if (this.sortDirection === \"asc\") {\n return Number(rowA[column].value) - Number(rowB[column].value);\n } else {\n return Number(rowB[column].value) - Number(rowA[column].value);\n }\n } else {\n const comparison = rowA[column].value.toString().localeCompare(rowB[column].value.toString());\n return this.sortDirection === \"asc\" ? comparison : comparison / -1;\n }\n });\n }\n\n if (this.pageSize !== null) {\n const pageEnd = this.page * this.pageSize;\n this._rowsShown = this._rowsFiltered.slice(pageEnd - this.pageSize, pageEnd);\n } else {\n this._rowsShown = [...this._rowsFiltered];\n }\n }\n\n connectedCallback() {\n this.resizeObserver = new ResizeObserver(this.handleResize);\n this.resizeObserver.observe(this.element);\n }\n\n disconnectedCallback() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n\n render() {\n const headingSlotUsed = hasSlot(this.element, \"heading\");\n const actionButtonSlotUsed = hasSlot(this.element, \"action-button\");\n\n const classes = {\n \"stzh-datatable\": true,\n \"is-scrollable\": this.isScrollable,\n \"has-scroll-left\": this.hasScrollLeft,\n \"has-scroll-right\": this.hasScrollRight,\n \"has-scroll-left-shadow\": this.hasScrollLeft && this.cellsStickyLeft.length === 0,\n \"has-scroll-right-shadow\": this.hasScrollRight && this.cellsStickyRight.length === 0,\n \"has-list\": this.showList,\n \"has-heading\": headingSlotUsed,\n \"has-action-or-search\": actionButtonSlotUsed || !this.hideSearch,\n \"has-header\": headingSlotUsed || actionButtonSlotUsed || !this.hideSearch,\n };\n\n const totalPages = Math.ceil(this._rowsFiltered.length / this.pageSize);\n\n const firstHeaderColumn = this._columns.find(column => column.isHeader);\n\n const sortByOptions = [\n {\n text: this.localization.sortByDefaultOption,\n value: \"\",\n },\n ...this._columns\n .filter(column => !!column.sort)\n .map(column => ({\n value: column.key,\n text: this.localization.sortByOption?.replace(/\\{column\\}/gi, column.text),\n })),\n ];\n\n const sortDirectionOptions = [\n {\n value: \"asc\",\n text: this.localization.sortDirectionOption?.replace(/\\{direction\\}/gi, this.localization.asc),\n },\n {\n value: \"desc\",\n text: this.localization.sortDirectionOption?.replace(/\\{direction\\}/gi, this.localization.desc),\n },\n ];\n\n const getCellClasses = (column: StzhDatatableColumnData, row: StzhDatatableRowData, index: number) => {\n return {\n \"stzh-datatable__cell stzh-datatable__cell--body\": true,\n \"is-sticky-left\": column.fixed === \"left\",\n \"is-sticky-right\": column.fixed === \"right\",\n \"is-head\": !!row[column.key]?.isHeader || !!column.isHeader,\n \"is-sortable\": !!column.sort,\n \"has-sticked\": this.cellsStickyLeft.indexOf(index) > -1 || this.cellsStickyRight.indexOf(index) > -1,\n \"has-sorted\": column.key === this.sortBy,\n \"has-sorted-asc\": column.key === this.sortBy && this.sortDirection === \"asc\",\n \"has-sorted-desc\": column.key === this.sortBy && this.sortDirection === \"desc\",\n [`align-${row[column.key]?.align || column.align}`]: !!row[column.key]?.align || !!column.align,\n [`valign-${row[column.key]?.valign || column.valign}`]: !!row[column.key]?.valign || !!column.valign,\n };\n };\n\n return (\n <Host>\n <div class={classes}>\n <div class=\"stzh-datatable__header\">\n <div class=\"stzh-datatable__heading\">\n <slot name=\"heading\"></slot>\n </div>\n <div class=\"stzh-datatable__sub-header\">\n {!this.hideSearch && (\n <stzh-input\n ref={el => (this.input = el as HTMLStzhInputElement)}\n class=\"stzh-datatable__search\"\n size=\"small\"\n name=\"stzh-datatable-search\"\n onStzhChange={this.onInputChange}\n hideOptional={true}\n label={this.localization.searchLabel}\n type=\"search\"\n ></stzh-input>\n )}\n <div class=\"stzh-datatable__action-button\">\n <slot name=\"action-button\"></slot>\n </div>\n </div>\n </div>\n\n <div class=\"stzh-datatable__outer-wrapper\">\n <div\n ref={el => (this.tableWrapper = el as HTMLDivElement)}\n class=\"stzh-datatable__wrapper\"\n onScroll={this.handleScroll}\n >\n <table\n class={{\n \"stzh-datatable__table\": true,\n \"has-layout-fixed\": this.tableLayout === \"fixed\",\n }}\n >\n {!this.hideColumnHeadings && (\n <thead class=\"stzh-datatable__thead\">\n <tr class=\"stzh-datatable__row stzh-datatable__row--head\">\n {(() => {\n let colspanOffset = 0;\n return this._columns.map((column, index) => {\n if (colspanOffset > 0) {\n colspanOffset--;\n return null;\n }\n\n const colspan = column.colspan || 1;\n if (colspan > 1) {\n colspanOffset = colspan - 1;\n }\n\n return (\n <th\n onClick={event => this.handleHeadingCellClick(event, column, index)}\n style={column.style}\n class={{\n \"stzh-datatable__cell stzh-datatable__cell--head\": true,\n \"is-sticky-left\": column.fixed === \"left\",\n \"is-sticky-right\": column.fixed === \"right\",\n \"is-sortable\": !!column.sort,\n \"has-sticked\":\n this.cellsStickyLeft.indexOf(index) > -1 || this.cellsStickyRight.indexOf(index) > -1,\n \"has-sorted\": column.key === this.sortBy,\n \"has-sorted-asc\": column.key === this.sortBy && this.sortDirection === \"asc\",\n \"has-sorted-desc\": column.key === this.sortBy && this.sortDirection === \"desc\",\n [`align-${column.align}`]: !!column.align,\n [`valign-${column.valign}`]: !!column.valign,\n }}\n {...(colspan > 1 ? { colspan } : {})}\n {...(column.rowspan ? { rowspan: column.rowspan } : {})}\n >\n {!column.hideColumnHeading &&\n (column.sort ? (\n <button\n class=\"stzh-datatable__sort-button\"\n type=\"button\"\n onClick={event => this.handleSortClick(event, column)}\n s-object-id={column.analyticsId || `${column.text} ${this.localization.columnSort}`}\n >\n <span>{column.text}</span>\n <stzh-icon\n name=\"arrow-up\"\n class=\"stzh-datatable__sort-icon\"\n a11yTitle={this.localization.columnSort}\n ></stzh-icon>\n </button>\n ) : (\n <span>{column.text}</span>\n ))}\n </th>\n );\n });\n })()}\n </tr>\n </thead>\n )}\n <tbody class=\"stzh-datatable__tbody\">\n {(() => {\n const rowspanOffsets = [];\n\n return this._rowsShown.map((row, rowIndex) => (\n <tr\n class=\"stzh-datatable__row stzh-datatable__row--body\"\n onClick={event => this.handleRowClick(event, row)}\n >\n {(() => {\n let colspanOffset = 0;\n return this._columns.map((column, index) => {\n if (rowspanOffsets[index]) {\n rowspanOffsets[index]--;\n return null;\n }\n if (colspanOffset > 0) {\n colspanOffset--;\n return null;\n }\n\n const cell = row[column.key];\n const colspan = cell?.colspan || 1;\n const rowspan = cell?.rowspan || 1;\n\n if (colspan > 1) {\n colspanOffset = colspan - 1;\n }\n if (rowspan > 1) {\n rowspanOffsets[index] = rowspan - 1;\n }\n\n return cell?.isHeader || column.isHeader ? (\n <th\n id={cell.id}\n onClick={event => this.handleCellClick(event, row, column, index, rowIndex)}\n innerHTML={cell.value.toString() || \"\"}\n style={column.style}\n {...(colspan > 1 ? { colspan } : {})}\n {...(rowspan > 1 ? { rowspan } : {})}\n class={getCellClasses(column, row, index)}\n ></th>\n ) : (\n <td\n id={cell.id}\n onClick={event => this.handleCellClick(event, row, column, index, rowIndex)}\n innerHTML={cell.value.toString() || \"\"}\n style={column.style}\n {...(colspan > 1 ? { colspan } : {})}\n {...(rowspan > 1 ? { rowspan } : {})}\n class={getCellClasses(column, row, index)}\n ></td>\n );\n });\n })()}\n </tr>\n ));\n })()}\n </tbody>\n </table>\n </div>\n </div>\n\n {this.showList && (\n <div class=\"stzh-datatable__list-wrapper\">\n {sortByOptions.length > 1 && (\n <div class=\"stzh-datatable__list-sort-wrapper\">\n <stzh-dropdown\n inline\n no-search\n class=\"stzh-datatable__list-sort-by-dropdown\"\n variant=\"plain\"\n size=\"small\"\n items={[this.sortBy]}\n options={sortByOptions}\n onStzhChange={this.handleSortByDropdownChange}\n ></stzh-dropdown>\n <stzh-dropdown\n disabled={this.sortBy === \"\"}\n inline\n no-search\n class=\"stzh-datatable__list-sort-direction-dropdown\"\n variant=\"plain\"\n size=\"small\"\n items={[this.sortDirection]}\n options={sortDirectionOptions}\n onStzhChange={this.handleSortDirectionDropdownChange}\n ></stzh-dropdown>\n </div>\n )}\n\n <stzh-accordion variant=\"table\">\n {this._rowsShown.map((row, index) => (\n <stzh-accordion-item\n heading={\n row[this.rowHeaderField]?.value?.toString() ||\n row[firstHeaderColumn?.key]?.value?.toString() ||\n this.localization.defaultListRowHeading.replace(/\\{n\\}/gi, (index + 1).toString())\n }\n >\n <stzh-datalist variant=\"table\" columnsMedium={2}>\n {this._columns.map(column => (\n <stzh-datalist-item\n label={column.text}\n value={row[column.key]?.value?.toString() || \"\"}\n ></stzh-datalist-item>\n ))}\n </stzh-datalist>\n </stzh-accordion-item>\n ))}\n </stzh-accordion>\n </div>\n )}\n\n {this.pageSize !== null && totalPages > 1 && (\n <div class=\"stzh-datatable__pagination-wrapper\">\n <stzh-pagination\n value={this.page}\n total={totalPages}\n onStzhChange={this.onPaginationChange}\n ></stzh-pagination>\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n"]}
|