primeng 11.3.1 → 11.4.2
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/README.md +3 -2
- package/api/primeng-api.metadata.json +1 -1
- package/api/translation.d.ts +2 -0
- package/api/translationkeys.d.ts +2 -0
- package/autocomplete/autocomplete.d.ts +15 -2
- package/autocomplete/primeng-autocomplete.metadata.json +1 -1
- package/bundles/primeng-api.umd.js +19 -12
- package/bundles/primeng-api.umd.js.map +1 -1
- package/bundles/primeng-api.umd.min.js +1 -1
- package/bundles/primeng-api.umd.min.js.map +1 -1
- package/bundles/primeng-autocomplete.umd.js +65 -30
- package/bundles/primeng-autocomplete.umd.js.map +1 -1
- package/bundles/primeng-autocomplete.umd.min.js +2 -2
- package/bundles/primeng-autocomplete.umd.min.js.map +1 -1
- package/bundles/primeng-button.umd.js +71 -15
- package/bundles/primeng-button.umd.js.map +1 -1
- package/bundles/primeng-button.umd.min.js +1 -1
- package/bundles/primeng-button.umd.min.js.map +1 -1
- package/bundles/primeng-calendar.umd.js +25 -14
- package/bundles/primeng-calendar.umd.js.map +1 -1
- package/bundles/primeng-calendar.umd.min.js +2 -2
- package/bundles/primeng-calendar.umd.min.js.map +1 -1
- package/bundles/primeng-carousel.umd.js +24 -13
- package/bundles/primeng-carousel.umd.js.map +1 -1
- package/bundles/primeng-carousel.umd.min.js +1 -1
- package/bundles/primeng-carousel.umd.min.js.map +1 -1
- package/bundles/primeng-cascadeselect.umd.js +14 -12
- package/bundles/primeng-cascadeselect.umd.js.map +1 -1
- package/bundles/primeng-cascadeselect.umd.min.js +1 -1
- package/bundles/primeng-cascadeselect.umd.min.js.map +1 -1
- package/bundles/primeng-checkbox.umd.js +14 -11
- package/bundles/primeng-checkbox.umd.js.map +1 -1
- package/bundles/primeng-checkbox.umd.min.js.map +1 -1
- package/bundles/primeng-chips.umd.js +14 -11
- package/bundles/primeng-chips.umd.js.map +1 -1
- package/bundles/primeng-chips.umd.min.js.map +1 -1
- package/bundles/primeng-confirmdialog.umd.js +19 -7
- package/bundles/primeng-confirmdialog.umd.js.map +1 -1
- package/bundles/primeng-confirmdialog.umd.min.js +1 -1
- package/bundles/primeng-confirmdialog.umd.min.js.map +1 -1
- package/bundles/primeng-contextmenu.umd.js +15 -12
- package/bundles/primeng-contextmenu.umd.js.map +1 -1
- package/bundles/primeng-contextmenu.umd.min.js +1 -1
- package/bundles/primeng-contextmenu.umd.min.js.map +1 -1
- package/bundles/primeng-dataview.umd.js +25 -4
- package/bundles/primeng-dataview.umd.js.map +1 -1
- package/bundles/primeng-dataview.umd.min.js +1 -1
- package/bundles/primeng-dataview.umd.min.js.map +1 -1
- package/bundles/primeng-dom.umd.js +14 -11
- package/bundles/primeng-dom.umd.js.map +1 -1
- package/bundles/primeng-dom.umd.min.js.map +1 -1
- package/bundles/primeng-dropdown.umd.js +78 -46
- package/bundles/primeng-dropdown.umd.js.map +1 -1
- package/bundles/primeng-dropdown.umd.min.js +1 -1
- package/bundles/primeng-dropdown.umd.min.js.map +1 -1
- package/bundles/primeng-editor.umd.js +1 -1
- package/bundles/primeng-editor.umd.js.map +1 -1
- package/bundles/primeng-editor.umd.min.js +1 -1
- package/bundles/primeng-editor.umd.min.js.map +1 -1
- package/bundles/primeng-fileupload.umd.js +23 -11
- package/bundles/primeng-fileupload.umd.js.map +1 -1
- package/bundles/primeng-fileupload.umd.min.js +1 -1
- package/bundles/primeng-fileupload.umd.min.js.map +1 -1
- package/bundles/primeng-galleria.umd.js +17 -12
- package/bundles/primeng-galleria.umd.js.map +1 -1
- package/bundles/primeng-galleria.umd.min.js +1 -1
- package/bundles/primeng-galleria.umd.min.js.map +1 -1
- package/bundles/primeng-gmap.umd.js +14 -11
- package/bundles/primeng-gmap.umd.js.map +1 -1
- package/bundles/primeng-gmap.umd.min.js.map +1 -1
- package/bundles/primeng-inputnumber.umd.js +15 -12
- package/bundles/primeng-inputnumber.umd.js.map +1 -1
- package/bundles/primeng-inputnumber.umd.min.js +1 -1
- package/bundles/primeng-inputnumber.umd.min.js.map +1 -1
- package/bundles/primeng-keyfilter.umd.js +14 -11
- package/bundles/primeng-keyfilter.umd.js.map +1 -1
- package/bundles/primeng-keyfilter.umd.min.js.map +1 -1
- package/bundles/primeng-listbox.umd.js +69 -28
- package/bundles/primeng-listbox.umd.js.map +1 -1
- package/bundles/primeng-listbox.umd.min.js +1 -1
- package/bundles/primeng-listbox.umd.min.js.map +1 -1
- package/bundles/primeng-menu.umd.js +14 -11
- package/bundles/primeng-menu.umd.js.map +1 -1
- package/bundles/primeng-menu.umd.min.js.map +1 -1
- package/bundles/primeng-menubar.umd.js +1 -1
- package/bundles/primeng-menubar.umd.js.map +1 -1
- package/bundles/primeng-menubar.umd.min.js +1 -1
- package/bundles/primeng-menubar.umd.min.js.map +1 -1
- package/bundles/primeng-messages.umd.js +14 -11
- package/bundles/primeng-messages.umd.js.map +1 -1
- package/bundles/primeng-messages.umd.min.js.map +1 -1
- package/bundles/primeng-multiselect.umd.js +62 -32
- package/bundles/primeng-multiselect.umd.js.map +1 -1
- package/bundles/primeng-multiselect.umd.min.js +1 -1
- package/bundles/primeng-multiselect.umd.min.js.map +1 -1
- package/bundles/primeng-orderlist.umd.js +49 -16
- package/bundles/primeng-orderlist.umd.js.map +1 -1
- package/bundles/primeng-orderlist.umd.min.js +2 -2
- package/bundles/primeng-orderlist.umd.min.js.map +1 -1
- package/bundles/primeng-organizationchart.umd.js +14 -11
- package/bundles/primeng-organizationchart.umd.js.map +1 -1
- package/bundles/primeng-organizationchart.umd.min.js.map +1 -1
- package/bundles/primeng-paginator.umd.js +14 -11
- package/bundles/primeng-paginator.umd.js.map +1 -1
- package/bundles/primeng-paginator.umd.min.js.map +1 -1
- package/bundles/primeng-panelmenu.umd.js +14 -11
- package/bundles/primeng-panelmenu.umd.js.map +1 -1
- package/bundles/primeng-panelmenu.umd.min.js.map +1 -1
- package/bundles/primeng-password.umd.js +48 -38
- package/bundles/primeng-password.umd.js.map +1 -1
- package/bundles/primeng-password.umd.min.js +1 -1
- package/bundles/primeng-password.umd.min.js.map +1 -1
- package/bundles/primeng-picklist.umd.js +109 -48
- package/bundles/primeng-picklist.umd.js.map +1 -1
- package/bundles/primeng-picklist.umd.min.js +1 -1
- package/bundles/primeng-picklist.umd.min.js.map +1 -1
- package/bundles/primeng-radiobutton.umd.js +5 -11
- package/bundles/primeng-radiobutton.umd.js.map +1 -1
- package/bundles/primeng-radiobutton.umd.min.js +1 -1
- package/bundles/primeng-radiobutton.umd.min.js.map +1 -1
- package/bundles/primeng-scrollpanel.umd.js +1 -0
- package/bundles/primeng-scrollpanel.umd.js.map +1 -1
- package/bundles/primeng-scrollpanel.umd.min.js +1 -1
- package/bundles/primeng-scrollpanel.umd.min.js.map +1 -1
- package/bundles/primeng-selectbutton.umd.js +16 -13
- package/bundles/primeng-selectbutton.umd.js.map +1 -1
- package/bundles/primeng-selectbutton.umd.min.js +1 -1
- package/bundles/primeng-selectbutton.umd.min.js.map +1 -1
- package/bundles/primeng-sidebar.umd.js +77 -46
- package/bundles/primeng-sidebar.umd.js.map +1 -1
- package/bundles/primeng-sidebar.umd.min.js +1 -1
- package/bundles/primeng-sidebar.umd.min.js.map +1 -1
- package/bundles/primeng-skeleton.umd.js +1 -1
- package/bundles/primeng-skeleton.umd.js.map +1 -1
- package/bundles/primeng-skeleton.umd.min.js +1 -1
- package/bundles/primeng-skeleton.umd.min.js.map +1 -1
- package/bundles/primeng-splitter.umd.js +53 -22
- package/bundles/primeng-splitter.umd.js.map +1 -1
- package/bundles/primeng-splitter.umd.min.js +1 -1
- package/bundles/primeng-splitter.umd.min.js.map +1 -1
- package/bundles/primeng-table.umd.js +30 -17
- package/bundles/primeng-table.umd.js.map +1 -1
- package/bundles/primeng-table.umd.min.js +2 -2
- package/bundles/primeng-table.umd.min.js.map +1 -1
- package/bundles/primeng-tabmenu.umd.js +1 -1
- package/bundles/primeng-tabmenu.umd.js.map +1 -1
- package/bundles/primeng-tabmenu.umd.min.js +1 -1
- package/bundles/primeng-tabmenu.umd.min.js.map +1 -1
- package/bundles/primeng-tabview.umd.js +1 -0
- package/bundles/primeng-tabview.umd.js.map +1 -1
- package/bundles/primeng-tabview.umd.min.js +1 -1
- package/bundles/primeng-tabview.umd.min.js.map +1 -1
- package/bundles/primeng-tieredmenu.umd.js +1 -1
- package/bundles/primeng-tieredmenu.umd.js.map +1 -1
- package/bundles/primeng-tieredmenu.umd.min.js +1 -1
- package/bundles/primeng-tieredmenu.umd.min.js.map +1 -1
- package/bundles/primeng-timeline.umd.js +1 -1
- package/bundles/primeng-timeline.umd.js.map +1 -1
- package/bundles/primeng-timeline.umd.min.js +1 -1
- package/bundles/primeng-timeline.umd.min.js.map +1 -1
- package/bundles/primeng-toast.umd.js +14 -11
- package/bundles/primeng-toast.umd.js.map +1 -1
- package/bundles/primeng-toast.umd.min.js.map +1 -1
- package/bundles/primeng-togglebutton.umd.js +1 -1
- package/bundles/primeng-togglebutton.umd.min.js +1 -1
- package/bundles/primeng-togglebutton.umd.min.js.map +1 -1
- package/bundles/primeng-tree.umd.js +85 -30
- package/bundles/primeng-tree.umd.js.map +1 -1
- package/bundles/primeng-tree.umd.min.js +1 -1
- package/bundles/primeng-tree.umd.min.js.map +1 -1
- package/bundles/primeng-treetable.umd.js +18 -11
- package/bundles/primeng-treetable.umd.js.map +1 -1
- package/bundles/primeng-treetable.umd.min.js +1 -1
- package/bundles/primeng-treetable.umd.min.js.map +1 -1
- package/bundles/primeng-tristatecheckbox.umd.js +5 -1
- package/bundles/primeng-tristatecheckbox.umd.js.map +1 -1
- package/bundles/primeng-tristatecheckbox.umd.min.js +1 -1
- package/bundles/primeng-tristatecheckbox.umd.min.js.map +1 -1
- package/button/button.d.ts +10 -0
- package/button/primeng-button.metadata.json +1 -1
- package/calendar/calendar.d.ts +3 -1
- package/calendar/primeng-calendar.metadata.json +1 -1
- package/carousel/carousel.d.ts +7 -2
- package/carousel/primeng-carousel.metadata.json +1 -1
- package/cascadeselect/primeng-cascadeselect.metadata.json +1 -1
- package/confirmdialog/confirmdialog.d.ts +2 -0
- package/confirmdialog/primeng-confirmdialog.metadata.json +1 -1
- package/contextmenu/primeng-contextmenu.metadata.json +1 -1
- package/dataview/dataview.d.ts +10 -4
- package/dataview/primeng-dataview.metadata.json +1 -1
- package/dropdown/dropdown.d.ts +15 -7
- package/dropdown/primeng-dropdown.metadata.json +1 -1
- package/esm2015/api/primengconfig.js +4 -2
- package/esm2015/api/translation.js +1 -1
- package/esm2015/api/translationkeys.js +3 -1
- package/esm2015/autocomplete/autocomplete.js +70 -22
- package/esm2015/button/button.js +75 -20
- package/esm2015/calendar/calendar.js +18 -11
- package/esm2015/carousel/carousel.js +14 -6
- package/esm2015/cascadeselect/cascadeselect.js +1 -2
- package/esm2015/confirmdialog/confirmdialog.js +22 -7
- package/esm2015/contextmenu/contextmenu.js +5 -6
- package/esm2015/dataview/dataview.js +27 -6
- package/esm2015/dropdown/dropdown.js +69 -34
- package/esm2015/editor/editor.js +2 -2
- package/esm2015/fileupload/fileupload.js +9 -1
- package/esm2015/galleria/galleria.js +4 -2
- package/esm2015/inputnumber/inputnumber.js +2 -2
- package/esm2015/listbox/listbox.js +55 -14
- package/esm2015/menubar/menubar.js +4 -5
- package/esm2015/multiselect/multiselect.js +51 -21
- package/esm2015/orderlist/orderlist.js +48 -9
- package/esm2015/password/password.js +50 -40
- package/esm2015/picklist/picklist.js +140 -70
- package/esm2015/radiobutton/radiobutton.js +6 -12
- package/esm2015/scrollpanel/scrollpanel.js +2 -1
- package/esm2015/selectbutton/selectbutton.js +3 -3
- package/esm2015/sidebar/sidebar.js +77 -53
- package/esm2015/skeleton/skeleton.js +2 -2
- package/esm2015/splitter/splitter.js +40 -13
- package/esm2015/table/table.js +18 -8
- package/esm2015/tabmenu/tabmenu.js +2 -2
- package/esm2015/tabview/tabview.js +2 -1
- package/esm2015/tieredmenu/tieredmenu.js +4 -4
- package/esm2015/timeline/timeline.js +3 -3
- package/esm2015/togglebutton/togglebutton.js +1 -1
- package/esm2015/tree/tree.js +82 -20
- package/esm2015/treetable/treetable.js +5 -1
- package/esm2015/tristatecheckbox/tristatecheckbox.js +6 -2
- package/fesm2015/primeng-api.js +5 -1
- package/fesm2015/primeng-api.js.map +1 -1
- package/fesm2015/primeng-autocomplete.js +69 -21
- package/fesm2015/primeng-autocomplete.js.map +1 -1
- package/fesm2015/primeng-button.js +74 -19
- package/fesm2015/primeng-button.js.map +1 -1
- package/fesm2015/primeng-calendar.js +17 -10
- package/fesm2015/primeng-calendar.js.map +1 -1
- package/fesm2015/primeng-carousel.js +13 -5
- package/fesm2015/primeng-carousel.js.map +1 -1
- package/fesm2015/primeng-cascadeselect.js +0 -1
- package/fesm2015/primeng-cascadeselect.js.map +1 -1
- package/fesm2015/primeng-confirmdialog.js +21 -6
- package/fesm2015/primeng-confirmdialog.js.map +1 -1
- package/fesm2015/primeng-contextmenu.js +4 -5
- package/fesm2015/primeng-contextmenu.js.map +1 -1
- package/fesm2015/primeng-dataview.js +26 -5
- package/fesm2015/primeng-dataview.js.map +1 -1
- package/fesm2015/primeng-dropdown.js +68 -34
- package/fesm2015/primeng-dropdown.js.map +1 -1
- package/fesm2015/primeng-editor.js +1 -1
- package/fesm2015/primeng-editor.js.map +1 -1
- package/fesm2015/primeng-fileupload.js +8 -0
- package/fesm2015/primeng-fileupload.js.map +1 -1
- package/fesm2015/primeng-galleria.js +3 -1
- package/fesm2015/primeng-galleria.js.map +1 -1
- package/fesm2015/primeng-inputnumber.js +1 -1
- package/fesm2015/primeng-inputnumber.js.map +1 -1
- package/fesm2015/primeng-listbox.js +54 -13
- package/fesm2015/primeng-listbox.js.map +1 -1
- package/fesm2015/primeng-menubar.js +3 -4
- package/fesm2015/primeng-menubar.js.map +1 -1
- package/fesm2015/primeng-multiselect.js +50 -20
- package/fesm2015/primeng-multiselect.js.map +1 -1
- package/fesm2015/primeng-orderlist.js +47 -8
- package/fesm2015/primeng-orderlist.js.map +1 -1
- package/fesm2015/primeng-password.js +49 -39
- package/fesm2015/primeng-password.js.map +1 -1
- package/fesm2015/primeng-picklist.js +140 -70
- package/fesm2015/primeng-picklist.js.map +1 -1
- package/fesm2015/primeng-radiobutton.js +5 -11
- package/fesm2015/primeng-radiobutton.js.map +1 -1
- package/fesm2015/primeng-scrollpanel.js +1 -0
- package/fesm2015/primeng-scrollpanel.js.map +1 -1
- package/fesm2015/primeng-selectbutton.js +2 -2
- package/fesm2015/primeng-selectbutton.js.map +1 -1
- package/fesm2015/primeng-sidebar.js +76 -52
- package/fesm2015/primeng-sidebar.js.map +1 -1
- package/fesm2015/primeng-skeleton.js +1 -1
- package/fesm2015/primeng-skeleton.js.map +1 -1
- package/fesm2015/primeng-splitter.js +39 -12
- package/fesm2015/primeng-splitter.js.map +1 -1
- package/fesm2015/primeng-table.js +17 -7
- package/fesm2015/primeng-table.js.map +1 -1
- package/fesm2015/primeng-tabmenu.js +1 -1
- package/fesm2015/primeng-tabmenu.js.map +1 -1
- package/fesm2015/primeng-tabview.js +1 -0
- package/fesm2015/primeng-tabview.js.map +1 -1
- package/fesm2015/primeng-tieredmenu.js +3 -3
- package/fesm2015/primeng-tieredmenu.js.map +1 -1
- package/fesm2015/primeng-timeline.js +2 -2
- package/fesm2015/primeng-timeline.js.map +1 -1
- package/fesm2015/primeng-togglebutton.js +1 -1
- package/fesm2015/primeng-tree.js +81 -20
- package/fesm2015/primeng-tree.js.map +1 -1
- package/fesm2015/primeng-treetable.js +4 -0
- package/fesm2015/primeng-treetable.js.map +1 -1
- package/fesm2015/primeng-tristatecheckbox.js +5 -1
- package/fesm2015/primeng-tristatecheckbox.js.map +1 -1
- package/fileupload/fileupload.d.ts +5 -2
- package/fileupload/primeng-fileupload.metadata.json +1 -1
- package/galleria/galleria.d.ts +3 -2
- package/galleria/primeng-galleria.metadata.json +1 -1
- package/inputnumber/primeng-inputnumber.metadata.json +1 -1
- package/listbox/listbox.d.ts +16 -4
- package/listbox/primeng-listbox.metadata.json +1 -1
- package/menubar/primeng-menubar.metadata.json +1 -1
- package/multiselect/multiselect.d.ts +10 -3
- package/multiselect/primeng-multiselect.metadata.json +1 -1
- package/orderlist/orderlist.d.ts +5 -1
- package/orderlist/primeng-orderlist.metadata.json +1 -1
- package/package.json +1 -1
- package/password/password.d.ts +5 -4
- package/password/primeng-password.metadata.json +1 -1
- package/picklist/picklist.d.ts +16 -7
- package/picklist/primeng-picklist.metadata.json +1 -1
- package/radiobutton/primeng-radiobutton.metadata.json +1 -1
- package/resources/components/button/button.css +4 -0
- package/resources/components/calendar/calendar.css +0 -1
- package/resources/components/orderlist/orderlist.css +1 -0
- package/resources/components/picklist/picklist.css +1 -0
- package/resources/components/sidebar/sidebar.css +12 -26
- package/resources/primeng.css +4 -0
- package/resources/primeng.min.css +1 -1
- package/resources/themes/arya-blue/theme.css +49 -9
- package/resources/themes/arya-green/theme.css +49 -9
- package/resources/themes/arya-orange/theme.css +49 -9
- package/resources/themes/arya-purple/theme.css +49 -9
- package/resources/themes/bootstrap4-dark-blue/theme.css +49 -9
- package/resources/themes/bootstrap4-dark-purple/theme.css +49 -9
- package/resources/themes/bootstrap4-light-blue/theme.css +49 -9
- package/resources/themes/bootstrap4-light-purple/theme.css +49 -9
- package/resources/themes/fluent-light/theme.css +47 -7
- package/resources/themes/luna-amber/theme.css +49 -9
- package/resources/themes/luna-blue/theme.css +49 -9
- package/resources/themes/luna-green/theme.css +49 -9
- package/resources/themes/luna-pink/theme.css +49 -9
- package/resources/themes/md-dark-deeppurple/theme.css +60 -14
- package/resources/themes/md-dark-indigo/theme.css +60 -14
- package/resources/themes/md-light-deeppurple/theme.css +60 -14
- package/resources/themes/md-light-indigo/theme.css +60 -14
- package/resources/themes/mdc-dark-deeppurple/theme.css +60 -14
- package/resources/themes/mdc-dark-indigo/theme.css +60 -14
- package/resources/themes/mdc-light-deeppurple/theme.css +60 -14
- package/resources/themes/mdc-light-indigo/theme.css +60 -14
- package/resources/themes/nova/theme.css +49 -9
- package/resources/themes/nova-accent/theme.css +49 -9
- package/resources/themes/nova-alt/theme.css +49 -9
- package/resources/themes/rhea/theme.css +49 -9
- package/resources/themes/saga-blue/theme.css +49 -9
- package/resources/themes/saga-green/theme.css +49 -9
- package/resources/themes/saga-orange/theme.css +49 -9
- package/resources/themes/saga-purple/theme.css +49 -9
- package/resources/themes/vela-blue/theme.css +49 -9
- package/resources/themes/vela-green/theme.css +49 -9
- package/resources/themes/vela-orange/theme.css +49 -9
- package/resources/themes/vela-purple/theme.css +49 -9
- package/scrollpanel/primeng-scrollpanel.metadata.json +1 -1
- package/selectbutton/primeng-selectbutton.metadata.json +1 -1
- package/sidebar/primeng-sidebar.metadata.json +1 -1
- package/sidebar/sidebar.d.ts +12 -8
- package/skeleton/skeleton.d.ts +1 -1
- package/splitter/primeng-splitter.metadata.json +1 -1
- package/splitter/splitter.d.ts +5 -1
- package/table/primeng-table.metadata.json +1 -1
- package/table/table.d.ts +3 -0
- package/tabmenu/primeng-tabmenu.metadata.json +1 -1
- package/tabview/primeng-tabview.metadata.json +1 -1
- package/tieredmenu/primeng-tieredmenu.metadata.json +1 -1
- package/timeline/primeng-timeline.metadata.json +1 -1
- package/togglebutton/primeng-togglebutton.metadata.json +1 -1
- package/tree/primeng-tree.metadata.json +1 -1
- package/tree/tree.d.ts +12 -4
- package/treetable/primeng-treetable.metadata.json +1 -1
- package/tristatecheckbox/primeng-tristatecheckbox.metadata.json +1 -1
- package/tristatecheckbox/tristatecheckbox.d.ts +2 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../src/app/components/tree/tree.ts"],"names":["Object","create","__values","o","s","Symbol","iterator","m","i","call","length","next","value","done","TypeError","__read","n","r","e","ar","push","error","__spread","arguments","concat","UITreeNode","tree","this","prototype","ngOnInit","node","parent","parentNode","syncNodeOption","getNodeWithKey","key","getIcon","icon","expanded","children","expandedIcon","collapsedIcon","ICON_CLASS","isLeaf","isNodeLeaf","toggle","event","collapse","expand","virtualScroll","updateSerializedValue","onNodeExpand","emit","originalEvent","onNodeCollapse","onNodeClick","onNodeKeydown","which","onNodeTouchEnd","onNodeRightClick","isSelected","onDropPoint","position","_this","preventDefault","dragNode","dragNodeIndex","dragNodeScope","isValidDropPointIndex","dragNodeTree","index","allowDrop","dropParams_1","assign","createDropPointEventMetadata","validateDrop","onNodeDrop","dropNode","dropIndex","accept","processPointDrop","draghoverPrev","draghoverNext","newNodeList","dragNodeSubNodes","splice","dragDropService","stopDrag","subNodes","onDropPointDragOver","dataTransfer","dropEffect","onDropPointDragEnter","onDropPointDragLeave","onDragStart","draggableNodes","draggable","setData","startDrag","scope","draggableScope","onDragStop","onDropNodeDragOver","droppableNodes","stopPropagation","onDropNode","droppable","dropParams_2","createDropNodeEventMetadata","processNodeDrop","draghoverNode","onDropNodeDragEnter","onDropNodeDragLeave","rect","currentTarget","getBoundingClientRect","x","left","width","y","Math","floor","top","height","onKeyDown","nodeElement","target","parentElement","nodeName","contextMenu","containerViewChild","nativeElement","style","display","listElement","focusNode","nextNodeElement","nextElementSibling","nextSiblingAncestor","findNextSiblingOfAncestor","previousElementSibling","findLastVisibleDescendant","parentNodeElement","getParentNodeElement","childrenListElement","Array","from","find","el","DomHandler","hasClass","lastChildElement","tagName","element","focus","Component","args","selector","template","encapsulation","ViewEncapsulation","None","Inject","forwardRef","Tree","Input","selectionChange","EventEmitter","onNodeSelect","onNodeUnselect","onNodeContextMenuSelect","layout","metaKeySelection","propagateSelectionUp","propagateSelectionDown","loadingIcon","emptyMessage","filterBy","filterMode","indentation","trackBy","item","onFilter","dragStartSubscription","dragStart$","subscribe","dragStopSubscription","dragStop$","dragHover","ngOnChanges","simpleChange","scrollHeight","virtualScrollBody","defineProperty","ngAfterContentInit","templates","templateMap","forEach","name","serializedValue","serializeNodes","getRootNode","nodes","level","visible","nodes_1","nodes_1_1","rowNode","eventTarget","selectionMode","selectable","hasFilteredNodes","index_1","findIndexInSelection","selected","isCheckboxSelectionMode","propagateDown","selection","filter","val","propagateUp","nodeTouched","metaKey","ctrlKey","isSingleSelectionMode","isMultipleSelectionMode","className","indexOf","show","selectedNode","parentNodes","option","_node","filteredNodes","nodes_2","nodes_2_1","matchedNode","select","selectedCount","childPartialSelected","_b","_c","child","partialSelected","index_2","leaf","getTemplateForNode","type","onDragOver","onDrop","onDragEnter","onDragLeave","isValidDragScope","allow","dragScope","dropScope","droppableScope","dropScope_1","dropScope_1_1","dragScope_1","e_6","dragScope_1_1","_filter","filterValue","searchFields","split","filterText","ObjectUtils","removeAccents","toLocaleLowerCase","filterLocale","isStrictMode","copyNode","paramsWithoutNode","findFilteredNodes","isFilterMatched","filteredValue","matched","childNodes","childNodes_1","childNodes_1_1","childNode","copyChildNode","_a","searchFields_1","searchFields_1_1","field","String","resolveFieldData","getBlockableElement","ngOnDestroy","unsubscribe","changeDetection","ChangeDetectionStrategy","Default","ElementRef","TreeDragDropService","decorators","Optional","Output","ContentChildren","PrimeTemplate","ViewChild","CdkVirtualScrollViewport","NgModule","imports","CommonModule","ScrollingModule","RippleModule","exports","SharedModule","declarations"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import {NgModule,Component,Input,AfterContentInit,OnDestroy,Output,EventEmitter,OnInit,OnChanges,\n ContentChildren,QueryList,TemplateRef,Inject,ElementRef,forwardRef,ChangeDetectionStrategy,SimpleChanges, ViewEncapsulation, ViewChild} from '@angular/core';\nimport {CdkVirtualScrollViewport, ScrollingModule} from '@angular/cdk/scrolling';\nimport {Optional} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TreeNode} from 'primeng/api';\nimport {SharedModule} from 'primeng/api';\nimport {PrimeTemplate} from 'primeng/api';\nimport {TreeDragDropService} from 'primeng/api';\nimport {Subscription} from 'rxjs';\nimport {BlockableUI} from 'primeng/api';\nimport {ObjectUtils} from 'primeng/utils';\nimport {DomHandler} from 'primeng/dom';\nimport {RippleModule} from 'primeng/ripple';\n\n@Component({\n selector: 'p-treeNode',\n template: `\n <ng-template [ngIf]=\"node\">\n <li *ngIf=\"tree.droppableNodes\" class=\"p-treenode-droppoint\" [ngClass]=\"{'p-treenode-droppoint-active':draghoverPrev}\"\n (drop)=\"onDropPoint($event,-1)\" (dragover)=\"onDropPointDragOver($event)\" (dragenter)=\"onDropPointDragEnter($event,-1)\" (dragleave)=\"onDropPointDragLeave($event)\"></li>\n <li *ngIf=\"!tree.horizontal\" [ngClass]=\"['p-treenode',node.styleClass||'', isLeaf() ? 'p-treenode-leaf': '']\">\n <div class=\"p-treenode-content\" [style.paddingLeft]=\"(level * indentation) + 'rem'\" (click)=\"onNodeClick($event)\" (contextmenu)=\"onNodeRightClick($event)\" (touchend)=\"onNodeTouchEnd()\"\n (drop)=\"onDropNode($event)\" (dragover)=\"onDropNodeDragOver($event)\" (dragenter)=\"onDropNodeDragEnter($event)\" (dragleave)=\"onDropNodeDragLeave($event)\"\n [draggable]=\"tree.draggableNodes\" (dragstart)=\"onDragStart($event)\" (dragend)=\"onDragStop($event)\" [attr.tabindex]=\"0\"\n [ngClass]=\"{'p-treenode-selectable':tree.selectionMode && node.selectable !== false,'p-treenode-dragover':draghoverNode, 'p-highlight':isSelected()}\" role=\"treeitem\"\n (keydown)=\"onKeyDown($event)\" [attr.aria-posinset]=\"this.index + 1\" [attr.aria-expanded]=\"this.node.expanded\" [attr.aria-selected]=\"isSelected()\" [attr.aria-label]=\"node.label\">\n <button type=\"button\" class=\"p-tree-toggler p-link\" (click)=\"toggle($event)\" pRipple tabindex=\"-1\">\n <span class=\"p-tree-toggler-icon pi pi-fw\" [ngClass]=\"{'pi-chevron-right':!node.expanded,'pi-chevron-down':node.expanded}\"></span>\n </button>\n <div class=\"p-checkbox p-component\" [ngClass]=\"{'p-checkbox-disabled': node.selectable === false}\" *ngIf=\"tree.selectionMode == 'checkbox'\" [attr.aria-checked]=\"isSelected()\">\n <div class=\"p-checkbox-box\" [ngClass]=\"{'p-highlight': isSelected(), 'p-indeterminate': node.partialSelected}\">\n <span class=\"p-checkbox-icon pi\" [ngClass]=\"{'pi-check':isSelected(),'pi-minus':node.partialSelected}\"></span>\n </div>\n </div>\n <span [class]=\"getIcon()\" *ngIf=\"node.icon||node.expandedIcon||node.collapsedIcon\"></span>\n <span class=\"p-treenode-label\">\n <span *ngIf=\"!tree.getTemplateForNode(node)\">{{node.label}}</span>\n <span *ngIf=\"tree.getTemplateForNode(node)\">\n <ng-container *ngTemplateOutlet=\"tree.getTemplateForNode(node); context: {$implicit: node}\"></ng-container>\n </span>\n </span>\n </div>\n <ul class=\"p-treenode-children\" style=\"display: none;\" *ngIf=\"!tree.virtualScroll && node.children && node.expanded\" [style.display]=\"node.expanded ? 'block' : 'none'\" role=\"group\">\n <p-treeNode *ngFor=\"let childNode of node.children;let firstChild=first;let lastChild=last; let index=index; trackBy: tree.trackBy\" [node]=\"childNode\" [parentNode]=\"node\"\n [firstChild]=\"firstChild\" [lastChild]=\"lastChild\" [index]=\"index\" [style.height.px]=\"tree.virtualNodeHeight\" [level]=\"level + 1\"></p-treeNode>\n </ul>\n </li>\n <li *ngIf=\"tree.droppableNodes&&lastChild\" class=\"p-treenode-droppoint\" [ngClass]=\"{'p-treenode-droppoint-active':draghoverNext}\"\n (drop)=\"onDropPoint($event,1)\" (dragover)=\"onDropPointDragOver($event)\" (dragenter)=\"onDropPointDragEnter($event,1)\" (dragleave)=\"onDropPointDragLeave($event)\"></li>\n <table *ngIf=\"tree.horizontal\" [class]=\"node.styleClass\">\n <tbody>\n <tr>\n <td class=\"p-treenode-connector\" *ngIf=\"!root\">\n <table class=\"p-treenode-connector-table\">\n <tbody>\n <tr>\n <td [ngClass]=\"{'p-treenode-connector-line':!firstChild}\"></td>\n </tr>\n <tr>\n <td [ngClass]=\"{'p-treenode-connector-line':!lastChild}\"></td>\n </tr>\n </tbody>\n </table>\n </td>\n <td class=\"p-treenode\" [ngClass]=\"{'p-treenode-collapsed':!node.expanded}\">\n <div class=\"p-treenode-content\" tabindex=\"0\" [ngClass]=\"{'p-treenode-selectable':tree.selectionMode,'p-highlight':isSelected()}\" (click)=\"onNodeClick($event)\" (contextmenu)=\"onNodeRightClick($event)\"\n (touchend)=\"onNodeTouchEnd()\" (keydown)=\"onNodeKeydown($event)\">\n <span class=\"p-tree-toggler pi pi-fw\" [ngClass]=\"{'pi-plus':!node.expanded,'pi-minus':node.expanded}\" *ngIf=\"!isLeaf()\" (click)=\"toggle($event)\"></span>\n <span [class]=\"getIcon()\" *ngIf=\"node.icon||node.expandedIcon||node.collapsedIcon\"></span>\n <span class=\"p-treenode-label\">\n <span *ngIf=\"!tree.getTemplateForNode(node)\">{{node.label}}</span>\n <span *ngIf=\"tree.getTemplateForNode(node)\">\n <ng-container *ngTemplateOutlet=\"tree.getTemplateForNode(node); context: {$implicit: node}\"></ng-container>\n </span>\n </span>\n </div>\n </td>\n <td class=\"p-treenode-children-container\" *ngIf=\"node.children && node.expanded\" [style.display]=\"node.expanded ? 'table-cell' : 'none'\">\n <div class=\"p-treenode-children\">\n <p-treeNode *ngFor=\"let childNode of node.children;let firstChild=first;let lastChild=last; trackBy: tree.trackBy\" [node]=\"childNode\"\n [firstChild]=\"firstChild\" [lastChild]=\"lastChild\"></p-treeNode>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n </ng-template>\n `,\n encapsulation: ViewEncapsulation.None\n})\nexport class UITreeNode implements OnInit {\n\n static ICON_CLASS: string = 'p-treenode-icon ';\n\n @Input() rowNode: any;\n\n @Input() node: TreeNode;\n\n @Input() parentNode: TreeNode;\n\n @Input() root: boolean;\n\n @Input() index: number;\n\n @Input() firstChild: boolean;\n\n @Input() lastChild: boolean;\n\n @Input() level: number;\n\n @Input() indentation: number;\n\n tree: Tree;\n\n constructor(@Inject(forwardRef(() => Tree)) tree) {\n this.tree = tree as Tree;\n }\n\n draghoverPrev: boolean;\n\n draghoverNext: boolean;\n\n draghoverNode: boolean\n\n ngOnInit() {\n this.node.parent = this.parentNode;\n\n if (this.parentNode) {\n this.tree.syncNodeOption(this.node, this.tree.value, 'parent', this.tree.getNodeWithKey(this.parentNode.key, this.tree.value));\n }\n }\n\n getIcon() {\n let icon: string;\n\n if (this.node.icon)\n icon = this.node.icon;\n else\n icon = this.node.expanded && this.node.children && this.node.children.length ? this.node.expandedIcon : this.node.collapsedIcon;\n\n return UITreeNode.ICON_CLASS + ' ' + icon;\n }\n\n isLeaf() {\n return this.tree.isNodeLeaf(this.node);\n }\n\n toggle(event: Event) {\n if (this.node.expanded)\n this.collapse(event);\n else\n this.expand(event);\n }\n\n expand(event: Event) {\n this.node.expanded = true;\n if (this.tree.virtualScroll) {\n this.tree.updateSerializedValue();\n }\n this.tree.onNodeExpand.emit({originalEvent: event, node: this.node});\n }\n\n collapse(event: Event) {\n this.node.expanded = false;\n if (this.tree.virtualScroll) {\n this.tree.updateSerializedValue();\n }\n this.tree.onNodeCollapse.emit({originalEvent: event, node: this.node});\n }\n\n onNodeClick(event: MouseEvent) {\n this.tree.onNodeClick(event, this.node);\n }\n\n onNodeKeydown(event: KeyboardEvent) {\n if (event.which === 13) {\n this.tree.onNodeClick(event, this.node);\n }\n }\n\n onNodeTouchEnd() {\n this.tree.onNodeTouchEnd();\n }\n\n onNodeRightClick(event: MouseEvent) {\n this.tree.onNodeRightClick(event, this.node);\n }\n\n isSelected() {\n return this.tree.isSelected(this.node);\n }\n\n onDropPoint(event: Event, position: number) {\n event.preventDefault();\n let dragNode = this.tree.dragNode;\n let dragNodeIndex = this.tree.dragNodeIndex;\n let dragNodeScope = this.tree.dragNodeScope;\n let isValidDropPointIndex = this.tree.dragNodeTree === this.tree ? (position === 1 || dragNodeIndex !== this.index - 1) : true;\n\n if (this.tree.allowDrop(dragNode, this.node, dragNodeScope) && isValidDropPointIndex) {\n let dropParams = {...this.createDropPointEventMetadata(position)};\n\n if (this.tree.validateDrop) {\n this.tree.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: this.node,\n dropIndex: this.index,\n accept: () => {\n this.processPointDrop(dropParams);\n }\n });\n }\n else {\n this.processPointDrop(dropParams);\n this.tree.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: this.node,\n dropIndex: this.index\n });\n }\n }\n\n this.draghoverPrev = false;\n this.draghoverNext = false;\n }\n\n processPointDrop(event) {\n let newNodeList = event.dropNode.parent ? event.dropNode.parent.children : this.tree.value;\n event.dragNodeSubNodes.splice(event.dragNodeIndex, 1);\n let dropIndex = this.index;\n\n if (event.position < 0) {\n dropIndex = (event.dragNodeSubNodes === newNodeList) ? ((event.dragNodeIndex > event.index) ? event.index : event.index - 1) : event.index;\n newNodeList.splice(dropIndex, 0, event.dragNode);\n }\n else {\n dropIndex = newNodeList.length;\n newNodeList.push(event.dragNode);\n }\n\n this.tree.dragDropService.stopDrag({\n node: event.dragNode,\n subNodes: event.dropNode.parent ? event.dropNode.parent.children : this.tree.value,\n index: event.dragNodeIndex\n });\n }\n\n createDropPointEventMetadata(position) {\n return {\n dragNode: this.tree.dragNode,\n dragNodeIndex: this.tree.dragNodeIndex,\n dragNodeSubNodes: this.tree.dragNodeSubNodes,\n dropNode: this.node,\n index: this.index,\n position: position\n };\n }\n\n onDropPointDragOver(event) {\n event.dataTransfer.dropEffect = 'move';\n event.preventDefault();\n }\n\n onDropPointDragEnter(event: Event, position: number) {\n if (this.tree.allowDrop(this.tree.dragNode, this.node, this.tree.dragNodeScope)) {\n if (position < 0)\n this.draghoverPrev = true;\n else\n this.draghoverNext = true;\n }\n }\n\n onDropPointDragLeave(event: Event) {\n this.draghoverPrev = false;\n this.draghoverNext = false;\n }\n\n onDragStart(event) {\n if (this.tree.draggableNodes && this.node.draggable !== false) {\n event.dataTransfer.setData(\"text\", \"data\");\n\n this.tree.dragDropService.startDrag({\n tree: this,\n node: this.node,\n subNodes: this.node.parent ? this.node.parent.children : this.tree.value,\n index: this.index,\n scope: this.tree.draggableScope\n });\n }\n else {\n event.preventDefault();\n }\n }\n\n onDragStop(event) {\n this.tree.dragDropService.stopDrag({\n node: this.node,\n subNodes: this.node.parent ? this.node.parent.children : this.tree.value,\n index: this.index\n });\n }\n\n onDropNodeDragOver(event) {\n event.dataTransfer.dropEffect = 'move';\n if (this.tree.droppableNodes) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n onDropNode(event) {\n if (this.tree.droppableNodes && this.node.droppable !== false) {\n let dragNode = this.tree.dragNode;\n\n if (this.tree.allowDrop(dragNode, this.node, this.tree.dragNodeScope)) {\n let dropParams = {...this.createDropNodeEventMetadata()};\n\n if (this.tree.validateDrop) {\n this.tree.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index,\n accept: () => {\n this.processNodeDrop(dropParams);\n }\n });\n }\n else {\n this.processNodeDrop(dropParams);\n this.tree.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index\n });\n }\n }\n }\n\n event.preventDefault();\n event.stopPropagation();\n this.draghoverNode = false;\n }\n\n createDropNodeEventMetadata() {\n return {\n dragNode: this.tree.dragNode,\n dragNodeIndex: this.tree.dragNodeIndex,\n dragNodeSubNodes: this.tree.dragNodeSubNodes,\n dropNode: this.node\n };\n }\n\n processNodeDrop(event) {\n let dragNodeIndex = event.dragNodeIndex;\n event.dragNodeSubNodes.splice(dragNodeIndex, 1);\n\n if (event.dropNode.children)\n event.dropNode.children.push(event.dragNode);\n else\n event.dropNode.children = [event.dragNode];\n\n this.tree.dragDropService.stopDrag({\n node: event.dragNode,\n subNodes: event.dropNode.parent ? event.dropNode.parent.children : this.tree.value,\n index: dragNodeIndex\n });\n }\n\n onDropNodeDragEnter(event) {\n if (this.tree.droppableNodes && this.node.droppable !== false && this.tree.allowDrop(this.tree.dragNode, this.node, this.tree.dragNodeScope)) {\n this.draghoverNode = true;\n }\n }\n\n onDropNodeDragLeave(event) {\n if (this.tree.droppableNodes) {\n let rect = event.currentTarget.getBoundingClientRect();\n if (event.x > rect.left + rect.width || event.x < rect.left || event.y >= Math.floor(rect.top + rect.height) || event.y < rect.top) {\n this.draghoverNode = false;\n }\n }\n }\n\n onKeyDown(event: KeyboardEvent) {\n const nodeElement = (<HTMLDivElement> event.target).parentElement.parentElement;\n\n if (nodeElement.nodeName !== 'P-TREENODE' || (this.tree.contextMenu && this.tree.contextMenu.containerViewChild.nativeElement.style.display === 'block')) {\n return;\n }\n\n switch (event.which) {\n //down arrow\n case 40:\n const listElement = (this.tree.droppableNodes) ? nodeElement.children[1].children[1] : nodeElement.children[0].children[1];\n if (listElement && listElement.children.length > 0) {\n this.focusNode(listElement.children[0]);\n }\n else {\n const nextNodeElement = nodeElement.nextElementSibling;\n if (nextNodeElement) {\n this.focusNode(nextNodeElement);\n }\n else {\n let nextSiblingAncestor = this.findNextSiblingOfAncestor(nodeElement);\n if (nextSiblingAncestor) {\n this.focusNode(nextSiblingAncestor);\n }\n }\n }\n\n event.preventDefault();\n break;\n\n //up arrow\n case 38:\n if (nodeElement.previousElementSibling) {\n this.focusNode(this.findLastVisibleDescendant(nodeElement.previousElementSibling));\n }\n else {\n let parentNodeElement = this.getParentNodeElement(nodeElement);\n if (parentNodeElement) {\n this.focusNode(parentNodeElement);\n }\n }\n\n event.preventDefault();\n break;\n\n //right arrow\n case 39:\n if (!this.node.expanded && !this.tree.isNodeLeaf(this.node)) {\n this.expand(event);\n }\n\n event.preventDefault();\n break;\n\n //left arrow\n case 37:\n if (this.node.expanded) {\n this.collapse(event);\n }\n else {\n let parentNodeElement = this.getParentNodeElement(nodeElement);\n if (parentNodeElement) {\n this.focusNode(parentNodeElement);\n }\n }\n\n event.preventDefault();\n break;\n\n //enter\n case 13:\n this.tree.onNodeClick(event, this.node);\n event.preventDefault();\n break;\n\n default:\n //no op\n break;\n }\n }\n\n findNextSiblingOfAncestor(nodeElement) {\n let parentNodeElement = this.getParentNodeElement(nodeElement);\n if (parentNodeElement) {\n if (parentNodeElement.nextElementSibling)\n return parentNodeElement.nextElementSibling;\n else\n return this.findNextSiblingOfAncestor(parentNodeElement);\n }\n else {\n return null;\n }\n }\n\n findLastVisibleDescendant(nodeElement) {\n const listElement = <HTMLElement> Array.from(nodeElement.children).find(el => DomHandler.hasClass(el, 'p-treenode'));\n const childrenListElement = listElement.children[1];\n if (childrenListElement && childrenListElement.children.length > 0) {\n const lastChildElement = childrenListElement.children[childrenListElement.children.length - 1];\n\n return this.findLastVisibleDescendant(lastChildElement);\n }\n else {\n return nodeElement;\n }\n }\n\n getParentNodeElement(nodeElement) {\n const parentNodeElement = nodeElement.parentElement.parentElement.parentElement;\n\n return parentNodeElement.tagName === 'P-TREENODE' ? parentNodeElement : null;\n }\n\n focusNode(element) {\n if (this.tree.droppableNodes)\n element.children[1].children[0].focus();\n else\n element.children[0].children[0].focus();\n }\n}\n\n@Component({\n selector: 'p-tree',\n template: `\n <div [ngClass]=\"{'p-tree p-component':true,'p-tree-selectable':selectionMode,\n 'p-treenode-dragover':dragHover,'p-tree-loading': loading, 'p-tree-flex-scrollable': scrollHeight === 'flex'}\" \n [ngStyle]=\"style\" [class]=\"styleClass\" *ngIf=\"!horizontal\"\n (drop)=\"onDrop($event)\" (dragover)=\"onDragOver($event)\" (dragenter)=\"onDragEnter($event)\" (dragleave)=\"onDragLeave($event)\">\n <div class=\"p-tree-loading-overlay p-component-overlay\" *ngIf=\"loading\">\n <i [class]=\"'p-tree-loading-icon pi-spin ' + loadingIcon\"></i>\n </div>\n <div *ngIf=\"filter\" class=\"p-tree-filter-container\">\n <input #filter type=\"text\" autocomplete=\"off\" class=\"p-tree-filter p-inputtext p-component\" [attr.placeholder]=\"filterPlaceholder\"\n (keydown.enter)=\"$event.preventDefault()\" (input)=\"_filter($event)\">\n <span class=\"p-tree-filter-icon pi pi-search\"></span>\n </div>\n <ng-container *ngIf=\"!virtualScroll; else virtualScrollList\">\n <div class=\"p-tree-wrapper\" [style.max-height]=\"scrollHeight\">\n <ul class=\"p-tree-container\" *ngIf=\"getRootNode()\" role=\"tree\" [attr.aria-label]=\"ariaLabel\" [attr.aria-labelledby]=\"ariaLabelledBy\">\n <p-treeNode *ngFor=\"let node of getRootNode(); let firstChild=first;let lastChild=last; let index=index; trackBy: trackBy\" [node]=\"node\"\n [firstChild]=\"firstChild\" [lastChild]=\"lastChild\" [index]=\"index\" [level]=\"0\"></p-treeNode>\n </ul>\n </div>\n </ng-container>\n <ng-template #virtualScrollList>\n <cdk-virtual-scroll-viewport class=\"p-tree-wrapper\" [style.height]=\"scrollHeight\" [itemSize]=\"virtualNodeHeight\" [minBufferPx]=\"minBufferPx\" [maxBufferPx]=\"maxBufferPx\">\n <ul class=\"p-tree-container\" *ngIf=\"getRootNode()\" role=\"tree\" [attr.aria-label]=\"ariaLabel\" [attr.aria-labelledby]=\"ariaLabelledBy\">\n <p-treeNode *cdkVirtualFor=\"let rowNode of serializedValue; let firstChild=first; let lastChild=last; let index=index; trackBy: trackBy; templateCacheSize: 0\" [level]=\"rowNode.level\"\n [rowNode]=\"rowNode\" [node]=\"rowNode.node\" [firstChild]=\"firstChild\" [lastChild]=\"lastChild\" [index]=\"index\" [style.height.px]=\"virtualNodeHeight\" [indentation]=\"indentation\"></p-treeNode>\n </ul>\n </cdk-virtual-scroll-viewport>\n </ng-template>\n <div class=\"p-tree-empty-message\" *ngIf=\"!loading && (value == null || value.length === 0)\">{{emptyMessage}}</div>\n </div>\n <div [ngClass]=\"{'p-tree p-tree-horizontal p-component':true,'p-tree-selectable':selectionMode}\" [ngStyle]=\"style\" [class]=\"styleClass\" *ngIf=\"horizontal\">\n <div class=\"p-tree-loading-mask p-component-overlay\" *ngIf=\"loading\">\n <i [class]=\"'p-tree-loading-icon pi-spin ' + loadingIcon\"></i>\n </div>\n <table *ngIf=\"value&&value[0]\">\n <p-treeNode [node]=\"value[0]\" [root]=\"true\"></p-treeNode>\n </table>\n <div class=\"p-tree-empty-message\" *ngIf=\"!loading && (value == null || value.length === 0)\">{{emptyMessage}}</div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./tree.css']\n})\nexport class Tree implements OnInit,AfterContentInit,OnChanges,OnDestroy,BlockableUI {\n\n @Input() value: TreeNode[];\n\n @Input() selectionMode: string;\n\n @Input() selection: any;\n\n @Output() selectionChange: EventEmitter<any> = new EventEmitter();\n\n @Output() onNodeSelect: EventEmitter<any> = new EventEmitter();\n\n @Output() onNodeUnselect: EventEmitter<any> = new EventEmitter();\n\n @Output() onNodeExpand: EventEmitter<any> = new EventEmitter();\n\n @Output() onNodeCollapse: EventEmitter<any> = new EventEmitter();\n\n @Output() onNodeContextMenuSelect: EventEmitter<any> = new EventEmitter();\n\n @Output() onNodeDrop: EventEmitter<any> = new EventEmitter();\n\n @Input() style: any;\n\n @Input() styleClass: string;\n\n @Input() contextMenu: any;\n\n @Input() layout: string = 'vertical';\n\n @Input() draggableScope: any;\n\n @Input() droppableScope: any;\n\n @Input() draggableNodes: boolean;\n\n @Input() droppableNodes: boolean;\n\n @Input() metaKeySelection: boolean = true;\n\n @Input() propagateSelectionUp: boolean = true;\n\n @Input() propagateSelectionDown: boolean = true;\n\n @Input() loading: boolean;\n\n @Input() loadingIcon: string = 'pi pi-spinner';\n\n @Input() emptyMessage: string = 'No records found';\n\n @Input() ariaLabel: string;\n\n @Input() ariaLabelledBy: string;\n\n @Input() validateDrop: boolean;\n\n @Input() filter: boolean;\n\n @Input() filterBy: string = 'label';\n\n @Input() filterMode: string = 'lenient';\n\n @Input() filterPlaceholder: string;\n\n @Input() filterLocale: string;\n\n @Input() scrollHeight: string;\n\n @Input() virtualScroll: boolean;\n\n @Input() virtualNodeHeight: string;\n\n @Input() minBufferPx: number;\n\n @Input() maxBufferPx: number;\n\n @Input() indentation: number = 1.5;\n\n @Input() trackBy: Function = (index: number, item: any) => item;\n\n @Output() onFilter: EventEmitter<any> = new EventEmitter();\n\n @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n @ViewChild(CdkVirtualScrollViewport) virtualScrollBody: CdkVirtualScrollViewport;\n\n serializedValue: any[];\n\n public templateMap: any;\n\n public nodeTouched: boolean;\n\n public dragNodeTree: Tree;\n\n public dragNode: TreeNode;\n\n public dragNodeSubNodes: TreeNode[];\n\n public dragNodeIndex: number;\n\n public dragNodeScope: any;\n\n public dragHover: boolean;\n\n public dragStartSubscription: Subscription;\n\n public dragStopSubscription: Subscription;\n\n public filteredNodes: TreeNode[];\n\n constructor(public el: ElementRef, @Optional() public dragDropService: TreeDragDropService) {}\n\n ngOnInit() {\n if (this.droppableNodes) {\n this.dragStartSubscription = this.dragDropService.dragStart$.subscribe(\n event => {\n this.dragNodeTree = event.tree;\n this.dragNode = event.node;\n this.dragNodeSubNodes = event.subNodes;\n this.dragNodeIndex = event.index;\n this.dragNodeScope = event.scope;\n });\n\n this.dragStopSubscription = this.dragDropService.dragStop$.subscribe(\n event => {\n this.dragNodeTree = null;\n this.dragNode = null;\n this.dragNodeSubNodes = null;\n this.dragNodeIndex = null;\n this.dragNodeScope = null;\n this.dragHover = false;\n });\n }\n }\n\n ngOnChanges(simpleChange: SimpleChanges) {\n if (simpleChange.value) {\n this.updateSerializedValue();\n }\n\n if (simpleChange.scrollHeight && this.virtualScrollBody) {\n this.virtualScrollBody.ngOnInit();\n }\n }\n\n get horizontal(): boolean {\n return this.layout == 'horizontal';\n }\n\n ngAfterContentInit() {\n if (this.templates.length) {\n this.templateMap = {};\n }\n\n this.templates.forEach((item) => {\n this.templateMap[item.name] = item.template;\n });\n }\n\n updateSerializedValue() {\n this.serializedValue = [];\n this.serializeNodes(null, this.getRootNode(), 0, true);\n }\n\n serializeNodes(parent, nodes, level, visible) {\n if (nodes && nodes.length) {\n for(let node of nodes) {\n node.parent = parent;\n const rowNode = {\n node: node,\n parent: parent,\n level: level,\n visible: visible && (parent ? parent.expanded : true)\n };\n this.serializedValue.push(rowNode);\n\n if (rowNode.visible && node.expanded) {\n this.serializeNodes(node, node.children, level + 1, rowNode.visible);\n }\n }\n }\n }\n\n onNodeClick(event, node: TreeNode) {\n let eventTarget = (<Element> event.target);\n\n if (DomHandler.hasClass(eventTarget, 'p-tree-toggler') || DomHandler.hasClass(eventTarget, 'p-tree-toggler-icon')) {\n return;\n }\n else if (this.selectionMode) {\n if (node.selectable === false) {\n return;\n }\n\n if (this.hasFilteredNodes()) {\n node = this.getNodeWithKey(node.key, this.value);\n\n if (!node) {\n return;\n }\n }\n\n let index = this.findIndexInSelection(node);\n let selected = (index >= 0);\n\n if (this.isCheckboxSelectionMode()) {\n if (selected) {\n if (this.propagateSelectionDown)\n this.propagateDown(node, false);\n else\n this.selection = this.selection.filter((val,i) => i!=index);\n\n if (this.propagateSelectionUp && node.parent) {\n this.propagateUp(node.parent, false);\n }\n\n this.selectionChange.emit(this.selection);\n this.onNodeUnselect.emit({originalEvent: event, node: node});\n }\n else {\n if (this.propagateSelectionDown)\n this.propagateDown(node, true);\n else\n this.selection = [...this.selection||[],node];\n\n if (this.propagateSelectionUp && node.parent) {\n this.propagateUp(node.parent, true);\n }\n\n this.selectionChange.emit(this.selection);\n this.onNodeSelect.emit({originalEvent: event, node: node});\n }\n }\n else {\n let metaSelection = this.nodeTouched ? false : this.metaKeySelection;\n\n if (metaSelection) {\n let metaKey = (event.metaKey||event.ctrlKey);\n\n if (selected && metaKey) {\n if (this.isSingleSelectionMode()) {\n this.selectionChange.emit(null);\n }\n else {\n this.selection = this.selection.filter((val,i) => i!=index);\n this.selectionChange.emit(this.selection);\n }\n\n this.onNodeUnselect.emit({originalEvent: event, node: node});\n }\n else {\n if (this.isSingleSelectionMode()) {\n this.selectionChange.emit(node);\n }\n else if (this.isMultipleSelectionMode()) {\n this.selection = (!metaKey) ? [] : this.selection||[];\n this.selection = [...this.selection,node];\n this.selectionChange.emit(this.selection);\n }\n\n this.onNodeSelect.emit({originalEvent: event, node: node});\n }\n }\n else {\n if (this.isSingleSelectionMode()) {\n if (selected) {\n this.selection = null;\n this.onNodeUnselect.emit({originalEvent: event, node: node});\n }\n else {\n this.selection = node;\n this.onNodeSelect.emit({originalEvent: event, node: node});\n }\n }\n else {\n if (selected) {\n this.selection = this.selection.filter((val,i) => i!=index);\n this.onNodeUnselect.emit({originalEvent: event, node: node});\n }\n else {\n this.selection = [...this.selection||[],node];\n this.onNodeSelect.emit({originalEvent: event, node: node});\n }\n }\n\n this.selectionChange.emit(this.selection);\n }\n }\n }\n\n this.nodeTouched = false;\n }\n\n onNodeTouchEnd() {\n this.nodeTouched = true;\n }\n\n onNodeRightClick(event: MouseEvent, node: TreeNode) {\n if (this.contextMenu) {\n let eventTarget = (<Element> event.target);\n\n if (eventTarget.className && eventTarget.className.indexOf('p-tree-toggler') === 0) {\n return;\n }\n else {\n let index = this.findIndexInSelection(node);\n let selected = (index >= 0);\n\n if (!selected) {\n if (this.isSingleSelectionMode())\n this.selectionChange.emit(node);\n else\n this.selectionChange.emit([node]);\n }\n\n this.contextMenu.show(event);\n this.onNodeContextMenuSelect.emit({originalEvent: event, node: node});\n }\n }\n }\n\n findIndexInSelection(node: TreeNode) {\n let index: number = -1;\n\n if (this.selectionMode && this.selection) {\n if (this.isSingleSelectionMode()) {\n let areNodesEqual = (this.selection.key && this.selection.key === node.key) || this.selection == node;\n index = areNodesEqual ? 0 : - 1;\n }\n else {\n for(let i = 0; i < this.selection.length; i++) {\n let selectedNode = this.selection[i];\n let areNodesEqual = (selectedNode.key && selectedNode.key === node.key) || selectedNode == node;\n if (areNodesEqual) {\n index = i;\n break;\n }\n }\n }\n }\n\n return index;\n }\n\n syncNodeOption(node, parentNodes, option, value?: any) {\n // to synchronize the node option between the filtered nodes and the original nodes(this.value)\n const _node = this.hasFilteredNodes() ? this.getNodeWithKey(node.key, parentNodes) : null;\n if (_node) {\n _node[option] = value||node[option];\n }\n }\n\n hasFilteredNodes() {\n return this.filter && this.filteredNodes && this.filteredNodes.length;\n }\n\n getNodeWithKey(key: string, nodes: TreeNode[]) {\n for (let node of nodes) {\n if (node.key === key) {\n return node;\n }\n\n if (node.children) {\n let matchedNode = this.getNodeWithKey(key, node.children);\n if (matchedNode) {\n return matchedNode;\n }\n }\n }\n }\n\n propagateUp(node: TreeNode, select: boolean) {\n if (node.children && node.children.length) {\n let selectedCount: number = 0;\n let childPartialSelected: boolean = false;\n for(let child of node.children) {\n if (this.isSelected(child)) {\n selectedCount++;\n }\n else if (child.partialSelected) {\n childPartialSelected = true;\n }\n }\n\n if (select && selectedCount == node.children.length) {\n this.selection = [...this.selection||[],node];\n node.partialSelected = false;\n }\n else {\n if (!select) {\n let index = this.findIndexInSelection(node);\n if (index >= 0) {\n this.selection = this.selection.filter((val,i) => i!=index);\n }\n }\n\n if (childPartialSelected || selectedCount > 0 && selectedCount != node.children.length)\n node.partialSelected = true;\n else\n node.partialSelected = false;\n }\n\n this.syncNodeOption(node, this.filteredNodes, 'partialSelected');\n }\n\n let parent = node.parent;\n if (parent) {\n this.propagateUp(parent, select);\n }\n }\n\n propagateDown(node: TreeNode, select: boolean) {\n let index = this.findIndexInSelection(node);\n\n if (select && index == -1) {\n this.selection = [...this.selection||[],node];\n }\n else if (!select && index > -1) {\n this.selection = this.selection.filter((val,i) => i!=index);\n }\n\n node.partialSelected = false;\n\n this.syncNodeOption(node, this.filteredNodes, 'partialSelected');\n\n if (node.children && node.children.length) {\n for(let child of node.children) {\n this.propagateDown(child, select);\n }\n }\n }\n\n isSelected(node: TreeNode) {\n return this.findIndexInSelection(node) != -1;\n }\n\n isSingleSelectionMode() {\n return this.selectionMode && this.selectionMode == 'single';\n }\n\n isMultipleSelectionMode() {\n return this.selectionMode && this.selectionMode == 'multiple';\n }\n\n isCheckboxSelectionMode() {\n return this.selectionMode && this.selectionMode == 'checkbox';\n }\n\n isNodeLeaf(node) {\n return node.leaf == false ? false : !(node.children && node.children.length);\n }\n\n getRootNode() {\n return this.filteredNodes ? this.filteredNodes : this.value;\n }\n\n getTemplateForNode(node: TreeNode): TemplateRef<any> {\n if (this.templateMap)\n return node.type ? this.templateMap[node.type] : this.templateMap['default'];\n else\n return null;\n }\n\n onDragOver(event) {\n if (this.droppableNodes && (!this.value || this.value.length === 0)) {\n event.dataTransfer.dropEffect = 'move';\n event.preventDefault();\n }\n }\n\n onDrop(event) {\n if (this.droppableNodes && (!this.value || this.value.length === 0)) {\n event.preventDefault();\n let dragNode = this.dragNode;\n if (this.allowDrop(dragNode, null, this.dragNodeScope)) {\n let dragNodeIndex = this.dragNodeIndex;\n this.dragNodeSubNodes.splice(dragNodeIndex, 1);\n this.value = this.value||[];\n this.value.push(dragNode);\n\n this.dragDropService.stopDrag({\n node: dragNode\n });\n }\n }\n }\n\n onDragEnter(event) {\n if (this.droppableNodes && this.allowDrop(this.dragNode, null, this.dragNodeScope)) {\n this.dragHover = true;\n }\n }\n\n onDragLeave(event) {\n if (this.droppableNodes) {\n let rect = event.currentTarget.getBoundingClientRect();\n if (event.x > rect.left + rect.width || event.x < rect.left || event.y > rect.top + rect.height || event.y < rect.top) {\n this.dragHover = false;\n }\n }\n }\n\n allowDrop(dragNode: TreeNode, dropNode: TreeNode, dragNodeScope: any): boolean {\n if (!dragNode) {\n //prevent random html elements to be dragged\n return false;\n }\n else if (this.isValidDragScope(dragNodeScope)) {\n let allow: boolean = true;\n if (dropNode) {\n if (dragNode === dropNode) {\n allow = false;\n }\n else {\n let parent = dropNode.parent;\n while(parent != null) {\n if (parent === dragNode) {\n allow = false;\n break;\n }\n parent = parent.parent;\n }\n }\n }\n\n return allow;\n }\n else {\n return false;\n }\n }\n\n isValidDragScope(dragScope: any): boolean {\n let dropScope = this.droppableScope;\n\n if (dropScope) {\n if (typeof dropScope === 'string') {\n if (typeof dragScope === 'string')\n return dropScope === dragScope;\n else if (dragScope instanceof Array)\n return (<Array<any>>dragScope).indexOf(dropScope) != -1;\n }\n else if (dropScope instanceof Array) {\n if (typeof dragScope === 'string') {\n return (<Array<any>>dropScope).indexOf(dragScope) != -1;\n }\n else if (dragScope instanceof Array) {\n for(let s of dropScope) {\n for(let ds of dragScope) {\n if (s === ds) {\n return true;\n }\n }\n }\n }\n }\n return false;\n }\n else {\n return true;\n }\n }\n\n _filter(event) {\n let filterValue = event.target.value;\n if (filterValue === '') {\n this.filteredNodes = null;\n }\n else {\n this.filteredNodes = [];\n const searchFields: string[] = this.filterBy.split(',');\n const filterText = ObjectUtils.removeAccents(filterValue).toLocaleLowerCase(this.filterLocale);\n const isStrictMode = this.filterMode === 'strict';\n for(let node of this.value) {\n let copyNode = {...node};\n let paramsWithoutNode = {searchFields, filterText, isStrictMode};\n if ((isStrictMode && (this.findFilteredNodes(copyNode, paramsWithoutNode) || this.isFilterMatched(copyNode, paramsWithoutNode))) ||\n (!isStrictMode && (this.isFilterMatched(copyNode, paramsWithoutNode) || this.findFilteredNodes(copyNode, paramsWithoutNode)))) {\n this.filteredNodes.push(copyNode);\n }\n }\n }\n\n this.updateSerializedValue();\n this.onFilter.emit({\n filter: filterValue,\n filteredValue: this.filteredNodes\n });\n }\n\n findFilteredNodes(node, paramsWithoutNode) {\n if (node) {\n let matched = false;\n if (node.children) {\n let childNodes = [...node.children];\n node.children = [];\n for (let childNode of childNodes) {\n let copyChildNode = {...childNode};\n if (this.isFilterMatched(copyChildNode, paramsWithoutNode)) {\n matched = true;\n node.children.push(copyChildNode);\n }\n }\n }\n\n if (matched) {\n node.expanded = true;\n return true;\n }\n }\n }\n\n isFilterMatched(node, {searchFields, filterText, isStrictMode}) {\n let matched = false;\n for(let field of searchFields) {\n let fieldValue = ObjectUtils.removeAccents(String(ObjectUtils.resolveFieldData(node, field))).toLocaleLowerCase(this.filterLocale);\n if (fieldValue.indexOf(filterText) > -1) {\n matched = true;\n }\n }\n\n if (!matched || (isStrictMode && !this.isNodeLeaf(node))) {\n matched = this.findFilteredNodes(node, {searchFields, filterText, isStrictMode}) || matched;\n }\n\n return matched;\n }\n\n getBlockableElement(): HTMLElement {\n return this.el.nativeElement.children[0];\n }\n\n ngOnDestroy() {\n if (this.dragStartSubscription) {\n this.dragStartSubscription.unsubscribe();\n }\n\n if (this.dragStopSubscription) {\n this.dragStopSubscription.unsubscribe();\n }\n }\n}\n@NgModule({\n imports: [CommonModule,ScrollingModule,RippleModule],\n exports: [Tree,SharedModule,ScrollingModule],\n declarations: [Tree,UITreeNode]\n})\nexport class TreeModule { }\n"]}
|
1
|
+
{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../src/app/components/tree/tree.ts"],"names":["Object","create","__values","o","s","Symbol","iterator","m","i","call","length","next","value","done","TypeError","__read","n","r","e","ar","push","error","__spread","arguments","concat","UITreeNode","tree","this","prototype","ngOnInit","node","parent","parentNode","syncNodeOption","getNodeWithKey","key","getIcon","icon","expanded","children","expandedIcon","collapsedIcon","ICON_CLASS","isLeaf","isNodeLeaf","toggle","event","collapse","expand","virtualScroll","updateSerializedValue","onNodeExpand","emit","originalEvent","onNodeCollapse","onNodeClick","onNodeKeydown","which","onNodeTouchEnd","onNodeRightClick","isSelected","onDropPoint","position","_this","preventDefault","dragNode","dragNodeIndex","dragNodeScope","isValidDropPointIndex","dragNodeTree","index","allowDrop","dropParams_1","assign","createDropPointEventMetadata","validateDrop","onNodeDrop","dropNode","accept","processPointDrop","draghoverPrev","draghoverNext","newNodeList","dragNodeSubNodes","splice","dropIndex","dragDropService","stopDrag","subNodes","onDropPointDragOver","dataTransfer","dropEffect","onDropPointDragEnter","onDropPointDragLeave","onDragStart","draggableNodes","draggable","setData","startDrag","scope","draggableScope","onDragStop","onDropNodeDragOver","droppableNodes","stopPropagation","onDropNode","droppable","dropParams_2","createDropNodeEventMetadata","processNodeDrop","draghoverNode","onDropNodeDragEnter","onDropNodeDragLeave","rect","currentTarget","getBoundingClientRect","x","left","width","y","Math","floor","top","height","onKeyDown","nodeElement","target","parentElement","nodeName","contextMenu","containerViewChild","nativeElement","style","display","listElement","focusNode","nextNodeElement","nextElementSibling","nextSiblingAncestor","findNextSiblingOfAncestor","previousElementSibling","findLastVisibleDescendant","parentNodeElement","getParentNodeElement","childrenListElement","Array","from","find","el","DomHandler","hasClass","lastChildElement","tagName","element","focus","Component","args","selector","template","encapsulation","ViewEncapsulation","None","Inject","forwardRef","Tree","Input","config","selectionChange","EventEmitter","onNodeSelect","onNodeUnselect","onNodeContextMenuSelect","layout","metaKeySelection","propagateSelectionUp","propagateSelectionDown","loadingIcon","emptyMessage","filterBy","filterMode","indentation","trackBy","item","onFilter","dragStartSubscription","dragStart$","subscribe","dragStopSubscription","dragStop$","dragHover","ngOnChanges","simpleChange","scrollHeight","virtualScrollBody","defineProperty","getTranslation","TranslationKeys","EMPTY_MESSAGE","ngAfterContentInit","templates","templateMap","forEach","getType","headerTemplate","emptyMessageTemplate","footerTemplate","name","serializedValue","serializeNodes","getRootNode","nodes","level","visible","nodes_1","nodes_1_1","rowNode","eventTarget","selectionMode","selectable","hasFilteredNodes","index_1","findIndexInSelection","selected","isCheckboxSelectionMode","propagateDown","selection","filter","val","propagateUp","nodeTouched","metaKey","ctrlKey","isSingleSelectionMode","isMultipleSelectionMode","className","indexOf","show","selectedNode","parentNodes","option","_node","filteredNodes","nodes_2","nodes_2_1","matchedNode","select","selectedCount","childPartialSelected","_b","_c","child","partialSelected","index_2","leaf","getTemplateForNode","type","onDragOver","onDrop","dragNode_1","dragNodeIndex_1","processTreeDrop","onDragEnter","onDragLeave","isValidDragScope","allow","dragScope","dropScope","droppableScope","dropScope_1","dropScope_1_1","dragScope_1","e_6","dragScope_1_1","_filter","filterValue","searchFields","split","filterText","ObjectUtils","removeAccents","toLocaleLowerCase","filterLocale","isStrictMode","copyNode","paramsWithoutNode","findFilteredNodes","isFilterMatched","filteredValue","resetFilter","filterViewChild","matched","childNodes","childNodes_1","childNodes_1_1","childNode","copyChildNode","_a","searchFields_1","searchFields_1_1","field","String","resolveFieldData","getBlockableElement","ngOnDestroy","unsubscribe","changeDetection","ChangeDetectionStrategy","Default","ElementRef","TreeDragDropService","decorators","Optional","PrimeNGConfig","Output","ContentChildren","PrimeTemplate","ViewChild","CdkVirtualScrollViewport","NgModule","imports","CommonModule","ScrollingModule","RippleModule","exports","SharedModule","declarations"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import {NgModule,Component,Input,AfterContentInit,OnDestroy,Output,EventEmitter,OnInit,OnChanges,\n ContentChildren,QueryList,TemplateRef,Inject,ElementRef,forwardRef,ChangeDetectionStrategy,SimpleChanges, ViewEncapsulation, ViewChild} from '@angular/core';\nimport {CdkVirtualScrollViewport, ScrollingModule} from '@angular/cdk/scrolling';\nimport {Optional} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {PrimeNGConfig, TranslationKeys, TreeNode} from 'primeng/api';\nimport {SharedModule} from 'primeng/api';\nimport {PrimeTemplate} from 'primeng/api';\nimport {TreeDragDropService} from 'primeng/api';\nimport {Subscription} from 'rxjs';\nimport {BlockableUI} from 'primeng/api';\nimport {ObjectUtils} from 'primeng/utils';\nimport {DomHandler} from 'primeng/dom';\nimport {RippleModule} from 'primeng/ripple';\n\n@Component({\n selector: 'p-treeNode',\n template: `\n <ng-template [ngIf]=\"node\">\n <li *ngIf=\"tree.droppableNodes\" class=\"p-treenode-droppoint\" [ngClass]=\"{'p-treenode-droppoint-active':draghoverPrev}\"\n (drop)=\"onDropPoint($event,-1)\" (dragover)=\"onDropPointDragOver($event)\" (dragenter)=\"onDropPointDragEnter($event,-1)\" (dragleave)=\"onDropPointDragLeave($event)\"></li>\n <li *ngIf=\"!tree.horizontal\" [ngClass]=\"['p-treenode',node.styleClass||'', isLeaf() ? 'p-treenode-leaf': '']\">\n <div class=\"p-treenode-content\" [style.paddingLeft]=\"(level * indentation) + 'rem'\" (click)=\"onNodeClick($event)\" (contextmenu)=\"onNodeRightClick($event)\" (touchend)=\"onNodeTouchEnd()\"\n (drop)=\"onDropNode($event)\" (dragover)=\"onDropNodeDragOver($event)\" (dragenter)=\"onDropNodeDragEnter($event)\" (dragleave)=\"onDropNodeDragLeave($event)\"\n [draggable]=\"tree.draggableNodes\" (dragstart)=\"onDragStart($event)\" (dragend)=\"onDragStop($event)\" [attr.tabindex]=\"0\"\n [ngClass]=\"{'p-treenode-selectable':tree.selectionMode && node.selectable !== false,'p-treenode-dragover':draghoverNode, 'p-highlight':isSelected()}\" role=\"treeitem\"\n (keydown)=\"onKeyDown($event)\" [attr.aria-posinset]=\"this.index + 1\" [attr.aria-expanded]=\"this.node.expanded\" [attr.aria-selected]=\"isSelected()\" [attr.aria-label]=\"node.label\">\n <button type=\"button\" class=\"p-tree-toggler p-link\" (click)=\"toggle($event)\" pRipple tabindex=\"-1\">\n <span class=\"p-tree-toggler-icon pi pi-fw\" [ngClass]=\"{'pi-chevron-right':!node.expanded,'pi-chevron-down':node.expanded}\"></span>\n </button>\n <div class=\"p-checkbox p-component\" [ngClass]=\"{'p-checkbox-disabled': node.selectable === false}\" *ngIf=\"tree.selectionMode == 'checkbox'\" [attr.aria-checked]=\"isSelected()\">\n <div class=\"p-checkbox-box\" [ngClass]=\"{'p-highlight': isSelected(), 'p-indeterminate': node.partialSelected}\">\n <span class=\"p-checkbox-icon pi\" [ngClass]=\"{'pi-check':isSelected(),'pi-minus':node.partialSelected}\"></span>\n </div>\n </div>\n <span [class]=\"getIcon()\" *ngIf=\"node.icon||node.expandedIcon||node.collapsedIcon\"></span>\n <span class=\"p-treenode-label\">\n <span *ngIf=\"!tree.getTemplateForNode(node)\">{{node.label}}</span>\n <span *ngIf=\"tree.getTemplateForNode(node)\">\n <ng-container *ngTemplateOutlet=\"tree.getTemplateForNode(node); context: {$implicit: node}\"></ng-container>\n </span>\n </span>\n </div>\n <ul class=\"p-treenode-children\" style=\"display: none;\" *ngIf=\"!tree.virtualScroll && node.children && node.expanded\" [style.display]=\"node.expanded ? 'block' : 'none'\" role=\"group\">\n <p-treeNode *ngFor=\"let childNode of node.children;let firstChild=first;let lastChild=last; let index=index; trackBy: tree.trackBy\" [node]=\"childNode\" [parentNode]=\"node\"\n [firstChild]=\"firstChild\" [lastChild]=\"lastChild\" [index]=\"index\" [style.height.px]=\"tree.virtualNodeHeight\" [level]=\"level + 1\"></p-treeNode>\n </ul>\n </li>\n <li *ngIf=\"tree.droppableNodes&&lastChild\" class=\"p-treenode-droppoint\" [ngClass]=\"{'p-treenode-droppoint-active':draghoverNext}\"\n (drop)=\"onDropPoint($event,1)\" (dragover)=\"onDropPointDragOver($event)\" (dragenter)=\"onDropPointDragEnter($event,1)\" (dragleave)=\"onDropPointDragLeave($event)\"></li>\n <table *ngIf=\"tree.horizontal\" [class]=\"node.styleClass\">\n <tbody>\n <tr>\n <td class=\"p-treenode-connector\" *ngIf=\"!root\">\n <table class=\"p-treenode-connector-table\">\n <tbody>\n <tr>\n <td [ngClass]=\"{'p-treenode-connector-line':!firstChild}\"></td>\n </tr>\n <tr>\n <td [ngClass]=\"{'p-treenode-connector-line':!lastChild}\"></td>\n </tr>\n </tbody>\n </table>\n </td>\n <td class=\"p-treenode\" [ngClass]=\"{'p-treenode-collapsed':!node.expanded}\">\n <div class=\"p-treenode-content\" tabindex=\"0\" [ngClass]=\"{'p-treenode-selectable':tree.selectionMode,'p-highlight':isSelected()}\" (click)=\"onNodeClick($event)\" (contextmenu)=\"onNodeRightClick($event)\"\n (touchend)=\"onNodeTouchEnd()\" (keydown)=\"onNodeKeydown($event)\">\n <span class=\"p-tree-toggler pi pi-fw\" [ngClass]=\"{'pi-plus':!node.expanded,'pi-minus':node.expanded}\" *ngIf=\"!isLeaf()\" (click)=\"toggle($event)\"></span>\n <span [class]=\"getIcon()\" *ngIf=\"node.icon||node.expandedIcon||node.collapsedIcon\"></span>\n <span class=\"p-treenode-label\">\n <span *ngIf=\"!tree.getTemplateForNode(node)\">{{node.label}}</span>\n <span *ngIf=\"tree.getTemplateForNode(node)\">\n <ng-container *ngTemplateOutlet=\"tree.getTemplateForNode(node); context: {$implicit: node}\"></ng-container>\n </span>\n </span>\n </div>\n </td>\n <td class=\"p-treenode-children-container\" *ngIf=\"node.children && node.expanded\" [style.display]=\"node.expanded ? 'table-cell' : 'none'\">\n <div class=\"p-treenode-children\">\n <p-treeNode *ngFor=\"let childNode of node.children;let firstChild=first;let lastChild=last; trackBy: tree.trackBy\" [node]=\"childNode\"\n [firstChild]=\"firstChild\" [lastChild]=\"lastChild\"></p-treeNode>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n </ng-template>\n `,\n encapsulation: ViewEncapsulation.None\n})\nexport class UITreeNode implements OnInit {\n\n static ICON_CLASS: string = 'p-treenode-icon ';\n\n @Input() rowNode: any;\n\n @Input() node: TreeNode;\n\n @Input() parentNode: TreeNode;\n\n @Input() root: boolean;\n\n @Input() index: number;\n\n @Input() firstChild: boolean;\n\n @Input() lastChild: boolean;\n\n @Input() level: number;\n\n @Input() indentation: number;\n\n tree: Tree;\n\n constructor(@Inject(forwardRef(() => Tree)) tree) {\n this.tree = tree as Tree;\n }\n\n draghoverPrev: boolean;\n\n draghoverNext: boolean;\n\n draghoverNode: boolean\n\n ngOnInit() {\n this.node.parent = this.parentNode;\n\n if (this.parentNode) {\n this.tree.syncNodeOption(this.node, this.tree.value, 'parent', this.tree.getNodeWithKey(this.parentNode.key, this.tree.value));\n }\n }\n\n getIcon() {\n let icon: string;\n\n if (this.node.icon)\n icon = this.node.icon;\n else\n icon = this.node.expanded && this.node.children && this.node.children.length ? this.node.expandedIcon : this.node.collapsedIcon;\n\n return UITreeNode.ICON_CLASS + ' ' + icon;\n }\n\n isLeaf() {\n return this.tree.isNodeLeaf(this.node);\n }\n\n toggle(event: Event) {\n if (this.node.expanded)\n this.collapse(event);\n else\n this.expand(event);\n }\n\n expand(event: Event) {\n this.node.expanded = true;\n if (this.tree.virtualScroll) {\n this.tree.updateSerializedValue();\n }\n this.tree.onNodeExpand.emit({originalEvent: event, node: this.node});\n }\n\n collapse(event: Event) {\n this.node.expanded = false;\n if (this.tree.virtualScroll) {\n this.tree.updateSerializedValue();\n }\n this.tree.onNodeCollapse.emit({originalEvent: event, node: this.node});\n }\n\n onNodeClick(event: MouseEvent) {\n this.tree.onNodeClick(event, this.node);\n }\n\n onNodeKeydown(event: KeyboardEvent) {\n if (event.which === 13) {\n this.tree.onNodeClick(event, this.node);\n }\n }\n\n onNodeTouchEnd() {\n this.tree.onNodeTouchEnd();\n }\n\n onNodeRightClick(event: MouseEvent) {\n this.tree.onNodeRightClick(event, this.node);\n }\n\n isSelected() {\n return this.tree.isSelected(this.node);\n }\n\n onDropPoint(event: Event, position: number) {\n event.preventDefault();\n let dragNode = this.tree.dragNode;\n let dragNodeIndex = this.tree.dragNodeIndex;\n let dragNodeScope = this.tree.dragNodeScope;\n let isValidDropPointIndex = this.tree.dragNodeTree === this.tree ? (position === 1 || dragNodeIndex !== this.index - 1) : true;\n\n if (this.tree.allowDrop(dragNode, this.node, dragNodeScope) && isValidDropPointIndex) {\n let dropParams = {...this.createDropPointEventMetadata(position)};\n\n if (this.tree.validateDrop) {\n this.tree.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index,\n accept: () => {\n this.processPointDrop(dropParams);\n }\n });\n }\n else {\n this.processPointDrop(dropParams);\n this.tree.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index\n });\n }\n }\n\n this.draghoverPrev = false;\n this.draghoverNext = false;\n }\n\n processPointDrop(event) {\n let newNodeList = event.dropNode.parent ? event.dropNode.parent.children : this.tree.value;\n event.dragNodeSubNodes.splice(event.dragNodeIndex, 1);\n let dropIndex = this.index;\n\n if (event.position < 0) {\n dropIndex = (event.dragNodeSubNodes === newNodeList) ? ((event.dragNodeIndex > event.index) ? event.index : event.index - 1) : event.index;\n newNodeList.splice(dropIndex, 0, event.dragNode);\n }\n else {\n dropIndex = newNodeList.length;\n newNodeList.push(event.dragNode);\n }\n\n this.tree.dragDropService.stopDrag({\n node: event.dragNode,\n subNodes: event.dropNode.parent ? event.dropNode.parent.children : this.tree.value,\n index: event.dragNodeIndex\n });\n }\n\n createDropPointEventMetadata(position) {\n return {\n dragNode: this.tree.dragNode,\n dragNodeIndex: this.tree.dragNodeIndex,\n dragNodeSubNodes: this.tree.dragNodeSubNodes,\n dropNode: this.node,\n index: this.index,\n position: position\n };\n }\n\n onDropPointDragOver(event) {\n event.dataTransfer.dropEffect = 'move';\n event.preventDefault();\n }\n\n onDropPointDragEnter(event: Event, position: number) {\n if (this.tree.allowDrop(this.tree.dragNode, this.node, this.tree.dragNodeScope)) {\n if (position < 0)\n this.draghoverPrev = true;\n else\n this.draghoverNext = true;\n }\n }\n\n onDropPointDragLeave(event: Event) {\n this.draghoverPrev = false;\n this.draghoverNext = false;\n }\n\n onDragStart(event) {\n if (this.tree.draggableNodes && this.node.draggable !== false) {\n event.dataTransfer.setData(\"text\", \"data\");\n\n this.tree.dragDropService.startDrag({\n tree: this,\n node: this.node,\n subNodes: this.node.parent ? this.node.parent.children : this.tree.value,\n index: this.index,\n scope: this.tree.draggableScope\n });\n }\n else {\n event.preventDefault();\n }\n }\n\n onDragStop(event) {\n this.tree.dragDropService.stopDrag({\n node: this.node,\n subNodes: this.node.parent ? this.node.parent.children : this.tree.value,\n index: this.index\n });\n }\n\n onDropNodeDragOver(event) {\n event.dataTransfer.dropEffect = 'move';\n if (this.tree.droppableNodes) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n onDropNode(event) {\n if (this.tree.droppableNodes && this.node.droppable !== false) {\n let dragNode = this.tree.dragNode;\n\n if (this.tree.allowDrop(dragNode, this.node, this.tree.dragNodeScope)) {\n let dropParams = {...this.createDropNodeEventMetadata()};\n\n if (this.tree.validateDrop) {\n this.tree.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index,\n accept: () => {\n this.processNodeDrop(dropParams);\n }\n });\n }\n else {\n this.processNodeDrop(dropParams);\n this.tree.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index\n });\n }\n }\n }\n\n event.preventDefault();\n event.stopPropagation();\n this.draghoverNode = false;\n }\n\n createDropNodeEventMetadata() {\n return {\n dragNode: this.tree.dragNode,\n dragNodeIndex: this.tree.dragNodeIndex,\n dragNodeSubNodes: this.tree.dragNodeSubNodes,\n dropNode: this.node\n };\n }\n\n processNodeDrop(event) {\n let dragNodeIndex = event.dragNodeIndex;\n event.dragNodeSubNodes.splice(dragNodeIndex, 1);\n\n if (event.dropNode.children)\n event.dropNode.children.push(event.dragNode);\n else\n event.dropNode.children = [event.dragNode];\n\n this.tree.dragDropService.stopDrag({\n node: event.dragNode,\n subNodes: event.dropNode.parent ? event.dropNode.parent.children : this.tree.value,\n index: dragNodeIndex\n });\n }\n\n onDropNodeDragEnter(event) {\n if (this.tree.droppableNodes && this.node.droppable !== false && this.tree.allowDrop(this.tree.dragNode, this.node, this.tree.dragNodeScope)) {\n this.draghoverNode = true;\n }\n }\n\n onDropNodeDragLeave(event) {\n if (this.tree.droppableNodes) {\n let rect = event.currentTarget.getBoundingClientRect();\n if (event.x > rect.left + rect.width || event.x < rect.left || event.y >= Math.floor(rect.top + rect.height) || event.y < rect.top) {\n this.draghoverNode = false;\n }\n }\n }\n\n onKeyDown(event: KeyboardEvent) {\n const nodeElement = (<HTMLDivElement> event.target).parentElement.parentElement;\n\n if (nodeElement.nodeName !== 'P-TREENODE' || (this.tree.contextMenu && this.tree.contextMenu.containerViewChild.nativeElement.style.display === 'block')) {\n return;\n }\n\n switch (event.which) {\n //down arrow\n case 40:\n const listElement = (this.tree.droppableNodes) ? nodeElement.children[1].children[1] : nodeElement.children[0].children[1];\n if (listElement && listElement.children.length > 0) {\n this.focusNode(listElement.children[0]);\n }\n else {\n const nextNodeElement = nodeElement.nextElementSibling;\n if (nextNodeElement) {\n this.focusNode(nextNodeElement);\n }\n else {\n let nextSiblingAncestor = this.findNextSiblingOfAncestor(nodeElement);\n if (nextSiblingAncestor) {\n this.focusNode(nextSiblingAncestor);\n }\n }\n }\n\n event.preventDefault();\n break;\n\n //up arrow\n case 38:\n if (nodeElement.previousElementSibling) {\n this.focusNode(this.findLastVisibleDescendant(nodeElement.previousElementSibling));\n }\n else {\n let parentNodeElement = this.getParentNodeElement(nodeElement);\n if (parentNodeElement) {\n this.focusNode(parentNodeElement);\n }\n }\n\n event.preventDefault();\n break;\n\n //right arrow\n case 39:\n if (!this.node.expanded && !this.tree.isNodeLeaf(this.node)) {\n this.expand(event);\n }\n\n event.preventDefault();\n break;\n\n //left arrow\n case 37:\n if (this.node.expanded) {\n this.collapse(event);\n }\n else {\n let parentNodeElement = this.getParentNodeElement(nodeElement);\n if (parentNodeElement) {\n this.focusNode(parentNodeElement);\n }\n }\n\n event.preventDefault();\n break;\n\n //enter\n case 13:\n this.tree.onNodeClick(event, this.node);\n event.preventDefault();\n break;\n\n default:\n //no op\n break;\n }\n }\n\n findNextSiblingOfAncestor(nodeElement) {\n let parentNodeElement = this.getParentNodeElement(nodeElement);\n if (parentNodeElement) {\n if (parentNodeElement.nextElementSibling)\n return parentNodeElement.nextElementSibling;\n else\n return this.findNextSiblingOfAncestor(parentNodeElement);\n }\n else {\n return null;\n }\n }\n\n findLastVisibleDescendant(nodeElement) {\n const listElement = <HTMLElement> Array.from(nodeElement.children).find(el => DomHandler.hasClass(el, 'p-treenode'));\n const childrenListElement = listElement.children[1];\n if (childrenListElement && childrenListElement.children.length > 0) {\n const lastChildElement = childrenListElement.children[childrenListElement.children.length - 1];\n\n return this.findLastVisibleDescendant(lastChildElement);\n }\n else {\n return nodeElement;\n }\n }\n\n getParentNodeElement(nodeElement) {\n const parentNodeElement = nodeElement.parentElement.parentElement.parentElement;\n\n return parentNodeElement.tagName === 'P-TREENODE' ? parentNodeElement : null;\n }\n\n focusNode(element) {\n if (this.tree.droppableNodes)\n element.children[1].children[0].focus();\n else\n element.children[0].children[0].focus();\n }\n}\n\n@Component({\n selector: 'p-tree',\n template: `\n <div [ngClass]=\"{'p-tree p-component':true,'p-tree-selectable':selectionMode,\n 'p-treenode-dragover':dragHover,'p-tree-loading': loading, 'p-tree-flex-scrollable': scrollHeight === 'flex'}\" \n [ngStyle]=\"style\" [class]=\"styleClass\" *ngIf=\"!horizontal\"\n (drop)=\"onDrop($event)\" (dragover)=\"onDragOver($event)\" (dragenter)=\"onDragEnter()\" (dragleave)=\"onDragLeave($event)\">\n <div class=\"p-tree-loading-overlay p-component-overlay\" *ngIf=\"loading\">\n <i [class]=\"'p-tree-loading-icon pi-spin ' + loadingIcon\"></i>\n </div>\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n <div *ngIf=\"filter\" class=\"p-tree-filter-container\">\n <input #filter type=\"text\" autocomplete=\"off\" class=\"p-tree-filter p-inputtext p-component\" [attr.placeholder]=\"filterPlaceholder\"\n (keydown.enter)=\"$event.preventDefault()\" (input)=\"_filter($event.target.value)\">\n <span class=\"p-tree-filter-icon pi pi-search\"></span>\n </div>\n <ng-container *ngIf=\"!virtualScroll; else virtualScrollList\">\n <div class=\"p-tree-wrapper\" [style.max-height]=\"scrollHeight\">\n <ul class=\"p-tree-container\" *ngIf=\"getRootNode()\" role=\"tree\" [attr.aria-label]=\"ariaLabel\" [attr.aria-labelledby]=\"ariaLabelledBy\">\n <p-treeNode *ngFor=\"let node of getRootNode(); let firstChild=first;let lastChild=last; let index=index; trackBy: trackBy\" [node]=\"node\"\n [firstChild]=\"firstChild\" [lastChild]=\"lastChild\" [index]=\"index\" [level]=\"0\"></p-treeNode>\n </ul>\n </div>\n </ng-container>\n <ng-template #virtualScrollList>\n <cdk-virtual-scroll-viewport class=\"p-tree-wrapper\" [style.height]=\"scrollHeight\" [itemSize]=\"virtualNodeHeight\" [minBufferPx]=\"minBufferPx\" [maxBufferPx]=\"maxBufferPx\">\n <ul class=\"p-tree-container\" *ngIf=\"getRootNode()\" role=\"tree\" [attr.aria-label]=\"ariaLabel\" [attr.aria-labelledby]=\"ariaLabelledBy\">\n <p-treeNode *cdkVirtualFor=\"let rowNode of serializedValue; let firstChild=first; let lastChild=last; let index=index; trackBy: trackBy; templateCacheSize: 0\" [level]=\"rowNode.level\"\n [rowNode]=\"rowNode\" [node]=\"rowNode.node\" [firstChild]=\"firstChild\" [lastChild]=\"lastChild\" [index]=\"index\" [style.height.px]=\"virtualNodeHeight\" [indentation]=\"indentation\"></p-treeNode>\n </ul>\n </cdk-virtual-scroll-viewport>\n </ng-template>\n <div class=\"p-tree-empty-message\" *ngIf=\"!loading && (getRootNode() == null || getRootNode().length === 0)\">\n <ng-container *ngIf=\"!emptyMessageTemplate; else emptyFilter\">\n {{emptyMessageLabel}}\n </ng-container>\n <ng-container #emptyFilter *ngTemplateOutlet=\"emptyMessageTemplate\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n <div [ngClass]=\"{'p-tree p-tree-horizontal p-component':true,'p-tree-selectable':selectionMode}\" [ngStyle]=\"style\" [class]=\"styleClass\" *ngIf=\"horizontal\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n <div class=\"p-tree-loading-mask p-component-overlay\" *ngIf=\"loading\">\n <i [class]=\"'p-tree-loading-icon pi-spin ' + loadingIcon\"></i>\n </div>\n <table *ngIf=\"value&&value[0]\">\n <p-treeNode [node]=\"value[0]\" [root]=\"true\"></p-treeNode>\n </table>\n <div class=\"p-tree-empty-message\" *ngIf=\"!loading && (getRootNode() == null || getRootNode().length === 0)\">\n <ng-container *ngIf=\"!emptyMessageTemplate; else emptyFilter\">\n {{emptyMessageLabel}}\n </ng-container>\n <ng-container #emptyFilter *ngTemplateOutlet=\"emptyMessageTemplate\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./tree.css']\n})\nexport class Tree implements OnInit,AfterContentInit,OnChanges,OnDestroy,BlockableUI {\n\n @Input() value: TreeNode[];\n\n @Input() selectionMode: string;\n\n @Input() selection: any;\n\n @Output() selectionChange: EventEmitter<any> = new EventEmitter();\n\n @Output() onNodeSelect: EventEmitter<any> = new EventEmitter();\n\n @Output() onNodeUnselect: EventEmitter<any> = new EventEmitter();\n\n @Output() onNodeExpand: EventEmitter<any> = new EventEmitter();\n\n @Output() onNodeCollapse: EventEmitter<any> = new EventEmitter();\n\n @Output() onNodeContextMenuSelect: EventEmitter<any> = new EventEmitter();\n\n @Output() onNodeDrop: EventEmitter<any> = new EventEmitter();\n\n @Input() style: any;\n\n @Input() styleClass: string;\n\n @Input() contextMenu: any;\n\n @Input() layout: string = 'vertical';\n\n @Input() draggableScope: any;\n\n @Input() droppableScope: any;\n\n @Input() draggableNodes: boolean;\n\n @Input() droppableNodes: boolean;\n\n @Input() metaKeySelection: boolean = true;\n\n @Input() propagateSelectionUp: boolean = true;\n\n @Input() propagateSelectionDown: boolean = true;\n\n @Input() loading: boolean;\n\n @Input() loadingIcon: string = 'pi pi-spinner';\n\n @Input() emptyMessage: string = '';\n\n @Input() ariaLabel: string;\n\n @Input() ariaLabelledBy: string;\n\n @Input() validateDrop: boolean;\n\n @Input() filter: boolean;\n\n @Input() filterBy: string = 'label';\n\n @Input() filterMode: string = 'lenient';\n\n @Input() filterPlaceholder: string;\n\n @Input() filterLocale: string;\n\n @Input() scrollHeight: string;\n\n @Input() virtualScroll: boolean;\n\n @Input() virtualNodeHeight: string;\n\n @Input() minBufferPx: number;\n\n @Input() maxBufferPx: number;\n\n @Input() indentation: number = 1.5;\n\n @Input() trackBy: Function = (index: number, item: any) => item;\n\n @Output() onFilter: EventEmitter<any> = new EventEmitter();\n\n @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n @ViewChild(CdkVirtualScrollViewport) virtualScrollBody: CdkVirtualScrollViewport;\n\n @ViewChild('filter') filterViewChild: ElementRef;\n\n serializedValue: any[];\n\n headerTemplate: TemplateRef<any>;\n\n footerTemplate: TemplateRef<any>;\n\n emptyMessageTemplate: TemplateRef<any>;\n\n public templateMap: any;\n\n public nodeTouched: boolean;\n\n public dragNodeTree: Tree;\n\n public dragNode: TreeNode;\n\n public dragNodeSubNodes: TreeNode[];\n\n public dragNodeIndex: number;\n\n public dragNodeScope: any;\n\n public dragHover: boolean;\n\n public dragStartSubscription: Subscription;\n\n public dragStopSubscription: Subscription;\n\n public filteredNodes: TreeNode[];\n\n constructor(public el: ElementRef, @Optional() public dragDropService: TreeDragDropService, public config: PrimeNGConfig) {}\n\n ngOnInit() {\n if (this.droppableNodes) {\n this.dragStartSubscription = this.dragDropService.dragStart$.subscribe(\n event => {\n this.dragNodeTree = event.tree;\n this.dragNode = event.node;\n this.dragNodeSubNodes = event.subNodes;\n this.dragNodeIndex = event.index;\n this.dragNodeScope = event.scope;\n });\n\n this.dragStopSubscription = this.dragDropService.dragStop$.subscribe(\n event => {\n this.dragNodeTree = null;\n this.dragNode = null;\n this.dragNodeSubNodes = null;\n this.dragNodeIndex = null;\n this.dragNodeScope = null;\n this.dragHover = false;\n });\n }\n }\n\n ngOnChanges(simpleChange: SimpleChanges) {\n if (simpleChange.value) {\n this.updateSerializedValue();\n }\n\n if (simpleChange.scrollHeight && this.virtualScrollBody) {\n this.virtualScrollBody.ngOnInit();\n }\n }\n\n get horizontal(): boolean {\n return this.layout == 'horizontal';\n }\n\n get emptyMessageLabel(): string {\n return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);\n }\n\n ngAfterContentInit() {\n if (this.templates.length) {\n this.templateMap = {};\n }\n\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'header':\n this.headerTemplate = item.template;\n break;\n\n case 'empty':\n this.emptyMessageTemplate = item.template;\n break;\n\n case 'footer':\n this.footerTemplate = item.template;\n break;\n\n default:\n this.templateMap[item.name] = item.template;\n break;\n }\n });\n }\n\n updateSerializedValue() {\n this.serializedValue = [];\n this.serializeNodes(null, this.getRootNode(), 0, true);\n }\n\n serializeNodes(parent, nodes, level, visible) {\n if (nodes && nodes.length) {\n for(let node of nodes) {\n node.parent = parent;\n const rowNode = {\n node: node,\n parent: parent,\n level: level,\n visible: visible && (parent ? parent.expanded : true)\n };\n this.serializedValue.push(rowNode);\n\n if (rowNode.visible && node.expanded) {\n this.serializeNodes(node, node.children, level + 1, rowNode.visible);\n }\n }\n }\n }\n\n onNodeClick(event, node: TreeNode) {\n let eventTarget = (<Element> event.target);\n\n if (DomHandler.hasClass(eventTarget, 'p-tree-toggler') || DomHandler.hasClass(eventTarget, 'p-tree-toggler-icon')) {\n return;\n }\n else if (this.selectionMode) {\n if (node.selectable === false) {\n return;\n }\n\n if (this.hasFilteredNodes()) {\n node = this.getNodeWithKey(node.key, this.value);\n\n if (!node) {\n return;\n }\n }\n\n let index = this.findIndexInSelection(node);\n let selected = (index >= 0);\n\n if (this.isCheckboxSelectionMode()) {\n if (selected) {\n if (this.propagateSelectionDown)\n this.propagateDown(node, false);\n else\n this.selection = this.selection.filter((val,i) => i!=index);\n\n if (this.propagateSelectionUp && node.parent) {\n this.propagateUp(node.parent, false);\n }\n\n this.selectionChange.emit(this.selection);\n this.onNodeUnselect.emit({originalEvent: event, node: node});\n }\n else {\n if (this.propagateSelectionDown)\n this.propagateDown(node, true);\n else\n this.selection = [...this.selection||[],node];\n\n if (this.propagateSelectionUp && node.parent) {\n this.propagateUp(node.parent, true);\n }\n\n this.selectionChange.emit(this.selection);\n this.onNodeSelect.emit({originalEvent: event, node: node});\n }\n }\n else {\n let metaSelection = this.nodeTouched ? false : this.metaKeySelection;\n\n if (metaSelection) {\n let metaKey = (event.metaKey||event.ctrlKey);\n\n if (selected && metaKey) {\n if (this.isSingleSelectionMode()) {\n this.selectionChange.emit(null);\n }\n else {\n this.selection = this.selection.filter((val,i) => i!=index);\n this.selectionChange.emit(this.selection);\n }\n\n this.onNodeUnselect.emit({originalEvent: event, node: node});\n }\n else {\n if (this.isSingleSelectionMode()) {\n this.selectionChange.emit(node);\n }\n else if (this.isMultipleSelectionMode()) {\n this.selection = (!metaKey) ? [] : this.selection||[];\n this.selection = [...this.selection,node];\n this.selectionChange.emit(this.selection);\n }\n\n this.onNodeSelect.emit({originalEvent: event, node: node});\n }\n }\n else {\n if (this.isSingleSelectionMode()) {\n if (selected) {\n this.selection = null;\n this.onNodeUnselect.emit({originalEvent: event, node: node});\n }\n else {\n this.selection = node;\n this.onNodeSelect.emit({originalEvent: event, node: node});\n }\n }\n else {\n if (selected) {\n this.selection = this.selection.filter((val,i) => i!=index);\n this.onNodeUnselect.emit({originalEvent: event, node: node});\n }\n else {\n this.selection = [...this.selection||[],node];\n this.onNodeSelect.emit({originalEvent: event, node: node});\n }\n }\n\n this.selectionChange.emit(this.selection);\n }\n }\n }\n\n this.nodeTouched = false;\n }\n\n onNodeTouchEnd() {\n this.nodeTouched = true;\n }\n\n onNodeRightClick(event: MouseEvent, node: TreeNode) {\n if (this.contextMenu) {\n let eventTarget = (<Element> event.target);\n\n if (eventTarget.className && eventTarget.className.indexOf('p-tree-toggler') === 0) {\n return;\n }\n else {\n let index = this.findIndexInSelection(node);\n let selected = (index >= 0);\n\n if (!selected) {\n if (this.isSingleSelectionMode())\n this.selectionChange.emit(node);\n else\n this.selectionChange.emit([node]);\n }\n\n this.contextMenu.show(event);\n this.onNodeContextMenuSelect.emit({originalEvent: event, node: node});\n }\n }\n }\n\n findIndexInSelection(node: TreeNode) {\n let index: number = -1;\n\n if (this.selectionMode && this.selection) {\n if (this.isSingleSelectionMode()) {\n let areNodesEqual = (this.selection.key && this.selection.key === node.key) || this.selection == node;\n index = areNodesEqual ? 0 : - 1;\n }\n else {\n for(let i = 0; i < this.selection.length; i++) {\n let selectedNode = this.selection[i];\n let areNodesEqual = (selectedNode.key && selectedNode.key === node.key) || selectedNode == node;\n if (areNodesEqual) {\n index = i;\n break;\n }\n }\n }\n }\n\n return index;\n }\n\n syncNodeOption(node, parentNodes, option, value?: any) {\n // to synchronize the node option between the filtered nodes and the original nodes(this.value)\n const _node = this.hasFilteredNodes() ? this.getNodeWithKey(node.key, parentNodes) : null;\n if (_node) {\n _node[option] = value||node[option];\n }\n }\n\n hasFilteredNodes() {\n return this.filter && this.filteredNodes && this.filteredNodes.length;\n }\n\n getNodeWithKey(key: string, nodes: TreeNode[]) {\n for (let node of nodes) {\n if (node.key === key) {\n return node;\n }\n\n if (node.children) {\n let matchedNode = this.getNodeWithKey(key, node.children);\n if (matchedNode) {\n return matchedNode;\n }\n }\n }\n }\n\n propagateUp(node: TreeNode, select: boolean) {\n if (node.children && node.children.length) {\n let selectedCount: number = 0;\n let childPartialSelected: boolean = false;\n for(let child of node.children) {\n if (this.isSelected(child)) {\n selectedCount++;\n }\n else if (child.partialSelected) {\n childPartialSelected = true;\n }\n }\n\n if (select && selectedCount == node.children.length) {\n this.selection = [...this.selection||[],node];\n node.partialSelected = false;\n }\n else {\n if (!select) {\n let index = this.findIndexInSelection(node);\n if (index >= 0) {\n this.selection = this.selection.filter((val,i) => i!=index);\n }\n }\n\n if (childPartialSelected || selectedCount > 0 && selectedCount != node.children.length)\n node.partialSelected = true;\n else\n node.partialSelected = false;\n }\n\n this.syncNodeOption(node, this.filteredNodes, 'partialSelected');\n }\n\n let parent = node.parent;\n if (parent) {\n this.propagateUp(parent, select);\n }\n }\n\n propagateDown(node: TreeNode, select: boolean) {\n let index = this.findIndexInSelection(node);\n\n if (select && index == -1) {\n this.selection = [...this.selection||[],node];\n }\n else if (!select && index > -1) {\n this.selection = this.selection.filter((val,i) => i!=index);\n }\n\n node.partialSelected = false;\n\n this.syncNodeOption(node, this.filteredNodes, 'partialSelected');\n\n if (node.children && node.children.length) {\n for(let child of node.children) {\n this.propagateDown(child, select);\n }\n }\n }\n\n isSelected(node: TreeNode) {\n return this.findIndexInSelection(node) != -1;\n }\n\n isSingleSelectionMode() {\n return this.selectionMode && this.selectionMode == 'single';\n }\n\n isMultipleSelectionMode() {\n return this.selectionMode && this.selectionMode == 'multiple';\n }\n\n isCheckboxSelectionMode() {\n return this.selectionMode && this.selectionMode == 'checkbox';\n }\n\n isNodeLeaf(node) {\n return node.leaf == false ? false : !(node.children && node.children.length);\n }\n\n getRootNode() {\n return this.filteredNodes ? this.filteredNodes : this.value;\n }\n\n getTemplateForNode(node: TreeNode): TemplateRef<any> {\n if (this.templateMap)\n return node.type ? this.templateMap[node.type] : this.templateMap['default'];\n else\n return null;\n }\n\n onDragOver(event) {\n if (this.droppableNodes && (!this.value || this.value.length === 0)) {\n event.dataTransfer.dropEffect = 'move';\n event.preventDefault();\n }\n }\n\n onDrop(event) {\n if (this.droppableNodes && (!this.value || this.value.length === 0)) {\n event.preventDefault();\n let dragNode = this.dragNode;\n\n if (this.allowDrop(dragNode, null, this.dragNodeScope)) {\n let dragNodeIndex = this.dragNodeIndex;\n this.value = this.value||[];\n\n if (this.validateDrop) {\n this.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: null,\n index: dragNodeIndex,\n accept: () => {\n this.processTreeDrop(dragNode, dragNodeIndex);\n }\n });\n }\n else {\n this.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: null,\n index: dragNodeIndex\n });\n \n this.processTreeDrop(dragNode, dragNodeIndex);\n }\n }\n }\n }\n\n processTreeDrop(dragNode, dragNodeIndex) {\n this.dragNodeSubNodes.splice(dragNodeIndex, 1);\n this.value.push(dragNode);\n this.dragDropService.stopDrag({\n node: dragNode\n });\n }\n\n onDragEnter() {\n if (this.droppableNodes && this.allowDrop(this.dragNode, null, this.dragNodeScope)) {\n this.dragHover = true;\n }\n }\n\n onDragLeave(event) {\n if (this.droppableNodes) {\n let rect = event.currentTarget.getBoundingClientRect();\n if (event.x > rect.left + rect.width || event.x < rect.left || event.y > rect.top + rect.height || event.y < rect.top) {\n this.dragHover = false;\n }\n }\n }\n\n allowDrop(dragNode: TreeNode, dropNode: TreeNode, dragNodeScope: any): boolean {\n if (!dragNode) {\n //prevent random html elements to be dragged\n return false;\n }\n else if (this.isValidDragScope(dragNodeScope)) {\n let allow: boolean = true;\n if (dropNode) {\n if (dragNode === dropNode) {\n allow = false;\n }\n else {\n let parent = dropNode.parent;\n while(parent != null) {\n if (parent === dragNode) {\n allow = false;\n break;\n }\n parent = parent.parent;\n }\n }\n }\n\n return allow;\n }\n else {\n return false;\n }\n }\n\n isValidDragScope(dragScope: any): boolean {\n let dropScope = this.droppableScope;\n\n if (dropScope) {\n if (typeof dropScope === 'string') {\n if (typeof dragScope === 'string')\n return dropScope === dragScope;\n else if (dragScope instanceof Array)\n return (<Array<any>>dragScope).indexOf(dropScope) != -1;\n }\n else if (dropScope instanceof Array) {\n if (typeof dragScope === 'string') {\n return (<Array<any>>dropScope).indexOf(dragScope) != -1;\n }\n else if (dragScope instanceof Array) {\n for(let s of dropScope) {\n for(let ds of dragScope) {\n if (s === ds) {\n return true;\n }\n }\n }\n }\n }\n return false;\n }\n else {\n return true;\n }\n }\n\n _filter(value) {\n let filterValue = value;\n if (filterValue === '') {\n this.filteredNodes = null;\n }\n else {\n this.filteredNodes = [];\n const searchFields: string[] = this.filterBy.split(',');\n const filterText = ObjectUtils.removeAccents(filterValue).toLocaleLowerCase(this.filterLocale);\n const isStrictMode = this.filterMode === 'strict';\n for(let node of this.value) {\n let copyNode = {...node};\n let paramsWithoutNode = {searchFields, filterText, isStrictMode};\n if ((isStrictMode && (this.findFilteredNodes(copyNode, paramsWithoutNode) || this.isFilterMatched(copyNode, paramsWithoutNode))) ||\n (!isStrictMode && (this.isFilterMatched(copyNode, paramsWithoutNode) || this.findFilteredNodes(copyNode, paramsWithoutNode)))) {\n this.filteredNodes.push(copyNode);\n }\n }\n }\n\n this.updateSerializedValue();\n this.onFilter.emit({\n filter: filterValue,\n filteredValue: this.filteredNodes\n });\n }\n\n resetFilter() {\n this.filteredNodes = null;\n\n if (this.filterViewChild && this.filterViewChild.nativeElement) {\n this.filterViewChild.nativeElement.value = '';\n }\n }\n\n findFilteredNodes(node, paramsWithoutNode) {\n if (node) {\n let matched = false;\n if (node.children) {\n let childNodes = [...node.children];\n node.children = [];\n for (let childNode of childNodes) {\n let copyChildNode = {...childNode};\n if (this.isFilterMatched(copyChildNode, paramsWithoutNode)) {\n matched = true;\n node.children.push(copyChildNode);\n }\n }\n }\n\n if (matched) {\n node.expanded = true;\n return true;\n }\n }\n }\n\n isFilterMatched(node, {searchFields, filterText, isStrictMode}) {\n let matched = false;\n for(let field of searchFields) {\n let fieldValue = ObjectUtils.removeAccents(String(ObjectUtils.resolveFieldData(node, field))).toLocaleLowerCase(this.filterLocale);\n if (fieldValue.indexOf(filterText) > -1) {\n matched = true;\n }\n }\n\n if (!matched || (isStrictMode && !this.isNodeLeaf(node))) {\n matched = this.findFilteredNodes(node, {searchFields, filterText, isStrictMode}) || matched;\n }\n\n return matched;\n }\n\n getBlockableElement(): HTMLElement {\n return this.el.nativeElement.children[0];\n }\n\n ngOnDestroy() {\n if (this.dragStartSubscription) {\n this.dragStartSubscription.unsubscribe();\n }\n\n if (this.dragStopSubscription) {\n this.dragStopSubscription.unsubscribe();\n }\n }\n}\n@NgModule({\n imports: [CommonModule,ScrollingModule,RippleModule],\n exports: [Tree,SharedModule,ScrollingModule],\n declarations: [Tree,UITreeNode]\n})\nexport class TreeModule { }\n"]}
|
@@ -299,18 +299,21 @@
|
|
299
299
|
function __importDefault(mod) {
|
300
300
|
return (mod && mod.__esModule) ? mod : { default: mod };
|
301
301
|
}
|
302
|
-
function __classPrivateFieldGet(receiver,
|
303
|
-
if (!
|
304
|
-
throw new TypeError("
|
305
|
-
|
306
|
-
|
302
|
+
function __classPrivateFieldGet(receiver, state, kind, f) {
|
303
|
+
if (kind === "a" && !f)
|
304
|
+
throw new TypeError("Private accessor was defined without a getter");
|
305
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
|
306
|
+
throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
307
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
307
308
|
}
|
308
|
-
function __classPrivateFieldSet(receiver,
|
309
|
-
if (
|
310
|
-
throw new TypeError("
|
311
|
-
|
312
|
-
|
313
|
-
|
309
|
+
function __classPrivateFieldSet(receiver, state, value, kind, f) {
|
310
|
+
if (kind === "m")
|
311
|
+
throw new TypeError("Private method is not writable");
|
312
|
+
if (kind === "a" && !f)
|
313
|
+
throw new TypeError("Private accessor was defined without a setter");
|
314
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
|
315
|
+
throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
316
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
314
317
|
}
|
315
318
|
|
316
319
|
var TreeTableService = /** @class */ (function () {
|
@@ -1613,6 +1616,8 @@
|
|
1613
1616
|
dom.DomHandler.removeClass(_this.editingCell, 'p-cell-editing');
|
1614
1617
|
_this.editingCell = null;
|
1615
1618
|
_this.onEditComplete.emit({ field: _this.editingCellField, data: _this.editingCellData });
|
1619
|
+
_this.editingCellField = null;
|
1620
|
+
_this.editingCellData = null;
|
1616
1621
|
_this.unbindDocumentEditListener();
|
1617
1622
|
}
|
1618
1623
|
_this.editingCellClick = false;
|
@@ -1629,6 +1634,8 @@
|
|
1629
1634
|
TreeTable.prototype.ngOnDestroy = function () {
|
1630
1635
|
this.unbindDocumentEditListener();
|
1631
1636
|
this.editingCell = null;
|
1637
|
+
this.editingCellField = null;
|
1638
|
+
this.editingCellData = null;
|
1632
1639
|
this.initialized = null;
|
1633
1640
|
};
|
1634
1641
|
return TreeTable;
|