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,"file":"primeng-autocomplete.js","sources":["../../src/app/components/autocomplete/autocomplete.ts","../../src/app/components/autocomplete/primeng-autocomplete.ts"],"sourcesContent":["import {NgModule,Component,ViewChild,ElementRef,AfterViewChecked,AfterContentInit,OnDestroy,Input,Output,EventEmitter,ContentChildren,QueryList,TemplateRef,Renderer2,forwardRef,ChangeDetectorRef,IterableDiffers,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {trigger,style,transition,animate,AnimationEvent} from '@angular/animations';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {ButtonModule} from 'primeng/button';\nimport {RippleModule} from 'primeng/ripple';\nimport {SharedModule,PrimeTemplate} from 'primeng/api';\nimport {DomHandler, ConnectedOverlayScrollHandler} from 'primeng/dom';\nimport {ObjectUtils, UniqueComponentId} from 'primeng/utils';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms';\n\nexport const AUTOCOMPLETE_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AutoComplete),\n multi: true\n};\n\n@Component({\n selector: 'p-autoComplete',\n template: `\n <span #container [ngClass]=\"{'p-autocomplete p-component':true,'p-autocomplete-dd':dropdown,'p-autocomplete-multiple':multiple}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n <input *ngIf=\"!multiple\" #in [attr.type]=\"type\" [attr.id]=\"inputId\" [ngStyle]=\"inputStyle\" [class]=\"inputStyleClass\" [autocomplete]=\"autocomplete\" [attr.required]=\"required\" [attr.name]=\"name\"\n class=\"p-autocomplete-input p-inputtext p-component\" [ngClass]=\"{'p-autocomplete-dd-input':dropdown,'p-disabled': disabled}\" [value]=\"inputFieldValue\" aria-autocomplete=\"list\" [attr.aria-controls]=\"listId\" role=\"searchbox\" [attr.aria-expanded]=\"overlayVisible\" aria-haspopup=\"true\" [attr.aria-activedescendant]=\"'p-highlighted-option'\"\n (click)=\"onInputClick($event)\" (input)=\"onInput($event)\" (keydown)=\"onKeydown($event)\" (keyup)=\"onKeyup($event)\" [attr.autofocus]=\"autofocus\" (focus)=\"onInputFocus($event)\" (blur)=\"onInputBlur($event)\" (change)=\"onInputChange($event)\" (paste)=\"onInputPaste($event)\"\n [attr.placeholder]=\"placeholder\" [attr.size]=\"size\" [attr.maxlength]=\"maxlength\" [attr.tabindex]=\"tabindex\" [readonly]=\"readonly\" [disabled]=\"disabled\" [attr.aria-label]=\"ariaLabel\" [attr.aria-labelledby]=\"ariaLabelledBy\" [attr.aria-required]=\"required\"\n ><ul *ngIf=\"multiple\" #multiContainer class=\"p-autocomplete-multiple-container p-component p-inputtext\" [ngClass]=\"{'p-disabled':disabled,'p-focus':focus}\" (click)=\"multiIn.focus()\">\n <li #token *ngFor=\"let val of value\" class=\"p-autocomplete-token\">\n <ng-container *ngTemplateOutlet=\"selectedItemTemplate; context: {$implicit: val}\"></ng-container>\n <span *ngIf=\"!selectedItemTemplate\" class=\"p-autocomplete-token-label\">{{resolveFieldData(val)}}</span>\n <span class=\"p-autocomplete-token-icon pi pi-times-circle\" (click)=\"removeItem(token)\" *ngIf=\"!disabled && !readonly\"></span>\n </li>\n <li class=\"p-autocomplete-input-token\">\n <input #multiIn [attr.type]=\"type\" [attr.id]=\"inputId\" [disabled]=\"disabled\" [attr.placeholder]=\"(value&&value.length ? null : placeholder)\" [attr.tabindex]=\"tabindex\" [attr.maxlength]=\"maxlength\" (input)=\"onInput($event)\" (click)=\"onInputClick($event)\"\n (keydown)=\"onKeydown($event)\" [readonly]=\"readonly\" (keyup)=\"onKeyup($event)\" [attr.autofocus]=\"autofocus\" (focus)=\"onInputFocus($event)\" (blur)=\"onInputBlur($event)\" (change)=\"onInputChange($event)\" (paste)=\"onInputPaste($event)\" [autocomplete]=\"autocomplete\"\n [ngStyle]=\"inputStyle\" [class]=\"inputStyleClass\" [attr.aria-label]=\"ariaLabel\" [attr.aria-labelledby]=\"ariaLabelledBy\" [attr.aria-required]=\"required\"\n aria-autocomplete=\"list\" [attr.aria-controls]=\"listId\" role=\"searchbox\" [attr.aria-expanded]=\"overlayVisible\" aria-haspopup=\"true\" [attr.aria-activedescendant]=\"'p-highlighted-option'\">\n </li>\n </ul>\n <i *ngIf=\"loading\" class=\"p-autocomplete-loader pi pi-spinner pi-spin\"></i><button #ddBtn type=\"button\" pButton [icon]=\"dropdownIcon\" class=\"p-autocomplete-dropdown\" [disabled]=\"disabled\" pRipple\n (click)=\"handleDropdownClick($event)\" *ngIf=\"dropdown\" [attr.tabindex]=\"tabindex\"></button>\n <div #panel *ngIf=\"overlayVisible\" [ngClass]=\"['p-autocomplete-panel p-component']\" [style.max-height]=\"scrollHeight\" [ngStyle]=\"panelStyle\" [class]=\"panelStyleClass\"\n [@overlayAnimation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\">\n <ul role=\"listbox\" [attr.id]=\"listId\" class=\"p-autocomplete-items\">\n <ng-container *ngIf=\"group\">\n <ng-template ngFor let-optgroup [ngForOf]=\"suggestions\">\n <li class=\"p-autocomplete-item-group\">\n <span *ngIf=\"!groupTemplate\">{{getOptionGroupLabel(optgroup)||'empty'}}</span>\n <ng-container *ngTemplateOutlet=\"groupTemplate; context: {$implicit: optgroup}\"></ng-container>\n </li>\n <ng-container *ngTemplateOutlet=\"itemslist; context: {$implicit: getOptionGroupChildren(optgroup)}\"></ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"!group\">\n <ng-container *ngTemplateOutlet=\"itemslist; context: {$implicit: suggestions}\"></ng-container>\n </ng-container>\n <ng-template #itemslist let-suggestionsToDisplay>\n <li role=\"option\" *ngFor=\"let option of suggestionsToDisplay; let idx = index\" class=\"p-autocomplete-item\" pRipple [ngClass]=\"{'p-highlight': (option === highlightOption)}\" [id]=\"highlightOption == option ? 'p-highlighted-option':''\" (click)=\"selectItem(option)\">\n <span *ngIf=\"!itemTemplate\">{{resolveFieldData(option)}}</span>\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: option, index: idx}\"></ng-container>\n </li>\n <li *ngIf=\"noResults && emptyMessage\" class=\"p-autocomplete-emptymessage p-autocomplete-item\">{{emptyMessage}}</li>\n </ng-template>\n </ul>\n </div>\n </span>\n `,\n animations: [\n trigger('overlayAnimation', [\n transition(':enter', [\n style({opacity: 0, transform: 'scaleY(0.8)'}),\n animate('{{showTransitionParams}}')\n ]),\n transition(':leave', [\n animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n ])\n ])\n ],\n host: {\n '[class.p-inputwrapper-filled]': 'filled',\n '[class.p-inputwrapper-focus]': '(focus && !disabled) || overlayVisible'\n },\n providers: [AUTOCOMPLETE_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./autocomplete.css']\n})\nexport class AutoComplete implements AfterViewChecked,AfterContentInit,OnDestroy,ControlValueAccessor {\n\n @Input() minLength: number = 1;\n\n @Input() delay: number = 300;\n\n @Input() style: any;\n\n @Input() panelStyle: any;\n\n @Input() styleClass: string;\n\n @Input() panelStyleClass: string;\n\n @Input() inputStyle: any;\n\n @Input() inputId: string;\n\n @Input() inputStyleClass: string;\n\n @Input() placeholder: string;\n\n @Input() readonly: boolean;\n\n @Input() disabled: boolean;\n\n @Input() maxlength: number;\n\n @Input() name: string;\n\n @Input() required: boolean;\n\n @Input() size: number;\n\n @Input() appendTo: any;\n\n @Input() autoHighlight: boolean;\n\n @Input() forceSelection: boolean;\n\n @Input() type: string = 'text';\n\n @Input() autoZIndex: boolean = true;\n\n @Input() baseZIndex: number = 0;\n\n @Input() ariaLabel: string;\n\n @Input() ariaLabelledBy: string;\n\n @Input() dropdownIcon: string = \"pi pi-chevron-down\";\n\n @Input() unique: boolean = true;\n\n @Input() group: boolean;\n\n @Input() completeOnFocus: boolean = false;\n\n @Output() completeMethod: EventEmitter<any> = new EventEmitter();\n\n @Output() onSelect: EventEmitter<any> = new EventEmitter();\n\n @Output() onUnselect: EventEmitter<any> = new EventEmitter();\n\n @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n @Output() onDropdownClick: EventEmitter<any> = new EventEmitter();\n\n\t@Output() onClear: EventEmitter<any> = new EventEmitter();\n\n @Output() onKeyUp: EventEmitter<any> = new EventEmitter();\n\n @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n @Input() field: string;\n\n @Input() scrollHeight: string = '200px';\n\n @Input() dropdown: boolean;\n\n @Input() dropdownMode: string = 'blank';\n\n @Input() multiple: boolean;\n\n @Input() tabindex: number;\n\n @Input() dataKey: string;\n\n @Input() emptyMessage: string;\n\n @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n @Input() hideTransitionOptions: string = '.1s linear';\n\n @Input() autofocus: boolean;\n\n @Input() autocomplete: string = 'off';\n\n @Input() optionGroupChildren: string;\n\n @Input() optionGroupLabel: string;\n\n @ViewChild('container') containerEL: ElementRef;\n\n @ViewChild('in') inputEL: ElementRef;\n\n @ViewChild('multiIn') multiInputEL: ElementRef;\n\n @ViewChild('multiContainer') multiContainerEL: ElementRef;\n\n @ViewChild('ddBtn') dropdownButton: ElementRef;\n\n @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n overlay: HTMLDivElement;\n\n itemTemplate: TemplateRef<any>;\n\n selectedItemTemplate: TemplateRef<any>;\n \n groupTemplate: TemplateRef<any>;\n\n value: any;\n\n _suggestions: any[];\n\n onModelChange: Function = () => {};\n\n onModelTouched: Function = () => {};\n\n timeout: any;\n\n overlayVisible: boolean = false;\n\n documentClickListener: any;\n\n suggestionsUpdated: boolean;\n\n highlightOption: any;\n\n highlightOptionChanged: boolean;\n\n focus: boolean = false;\n\n filled: boolean;\n\n inputClick: boolean;\n\n inputKeyDown: boolean;\n\n noResults: boolean;\n\n differ: any;\n\n inputFieldValue: string = null;\n\n loading: boolean;\n\n scrollHandler: any;\n\n documentResizeListener: any;\n\n forceSelectionUpdateModelTimeout: any;\n\n listId: string;\n\n itemClicked: boolean;\n\n constructor(public el: ElementRef, public renderer: Renderer2, public cd: ChangeDetectorRef, public differs: IterableDiffers) {\n this.differ = differs.find([]).create(null);\n this.listId = UniqueComponentId() + '_list';\n }\n\n @Input() get suggestions(): any[] {\n return this._suggestions;\n }\n\n set suggestions(val:any[]) {\n this._suggestions = val;\n this.handleSuggestionsChange();\n }\n\n ngAfterViewChecked() {\n //Use timeouts as since Angular 4.2, AfterViewChecked is broken and not called after panel is updated\n if (this.suggestionsUpdated && this.overlay && this.overlay.offsetParent) {\n setTimeout(() => {\n if (this.overlay) {\n this.alignOverlay();\n }\n }, 1);\n this.suggestionsUpdated = false;\n }\n\n if (this.highlightOptionChanged) {\n setTimeout(() => {\n if (this.overlay) {\n let listItem = DomHandler.findSingle(this.overlay, 'li.p-highlight');\n if (listItem) {\n DomHandler.scrollInView(this.overlay, listItem);\n }\n }\n }, 1);\n this.highlightOptionChanged = false;\n }\n }\n\n handleSuggestionsChange() {\n if (this._suggestions != null && this.loading) {\n this.highlightOption = null;\n if (this._suggestions.length) {\n this.noResults = false;\n this.show();\n this.suggestionsUpdated = true;\n\n if (this.autoHighlight) {\n this.highlightOption = this._suggestions[0];\n }\n }\n else {\n this.noResults = true;\n\n if (this.emptyMessage) {\n this.show();\n this.suggestionsUpdated = true;\n }\n else {\n this.hide();\n }\n }\n\n this.loading = false;\n }\n }\n\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch(item.getType()) {\n case 'item':\n this.itemTemplate = item.template;\n break;\n\n case 'group':\n this.groupTemplate = item.template;\n break;\n\n case 'selectedItem':\n this.selectedItemTemplate = item.template;\n break;\n\n default:\n this.itemTemplate = item.template;\n break;\n }\n });\n }\n\n writeValue(value: any) : void {\n this.value = value;\n this.filled = this.value && this.value != '';\n this.updateInputField();\n this.cd.markForCheck();\n }\n\n getOptionGroupChildren(optionGroup: any) {\n return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;\n }\n\n getOptionGroupLabel(optionGroup: any) {\n return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : (optionGroup.label != undefined ? optionGroup.label : optionGroup);\n }\n\n registerOnChange(fn: Function): void {\n this.onModelChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this.onModelTouched = fn;\n }\n\n setDisabledState(val: boolean): void {\n this.disabled = val;\n this.cd.markForCheck();\n }\n\n onInput(event: Event) {\n // When an input element with a placeholder is clicked, the onInput event is invoked in IE.\n if (!this.inputKeyDown && DomHandler.isIE()) {\n return;\n }\n\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n\n let value = (<HTMLInputElement> event.target).value;\n if (!this.multiple && !this.forceSelection) {\n this.onModelChange(value);\n }\n\n if (value.length === 0 && !this.multiple) {\n this.hide();\n this.onClear.emit(event);\n\t this.onModelChange(value);\n }\n\n if (value.length >= this.minLength) {\n this.timeout = setTimeout(() => {\n this.search(event, value);\n }, this.delay);\n }\n else {\n this.hide();\n }\n this.updateFilledState();\n this.inputKeyDown = false;\n }\n\n onInputClick(event: MouseEvent) {\n if (this.documentClickListener) {\n this.inputClick = true;\n }\n }\n\n search(event: any, query: string) {\n //allow empty string but not undefined or null\n if (query === undefined || query === null) {\n return;\n }\n\n this.loading = true;\n\n this.completeMethod.emit({\n originalEvent: event,\n query: query\n });\n }\n\n selectItem(option: any, focus: boolean = true) {\n if (this.forceSelectionUpdateModelTimeout) {\n clearTimeout(this.forceSelectionUpdateModelTimeout);\n this.forceSelectionUpdateModelTimeout = null;\n }\n\n if (this.multiple) {\n this.multiInputEL.nativeElement.value = '';\n this.value = this.value||[];\n if (!this.isSelected(option) || !this.unique) {\n this.value = [...this.value,option];\n this.onModelChange(this.value);\n }\n }\n else {\n this.inputEL.nativeElement.value = this.field ? this.getFieldData(option) : option;\n this.value = option;\n this.onModelChange(this.value);\n }\n\n this.onSelect.emit(option);\n this.updateFilledState();\n\n if (focus) {\n this.itemClicked = true;\n this.focusInput();\n }\n }\n\n show() {\n if (this.multiInputEL || this.inputEL) {\n let hasFocus = this.multiple ?\n this.multiInputEL.nativeElement.ownerDocument.activeElement == this.multiInputEL.nativeElement :\n this.inputEL.nativeElement.ownerDocument.activeElement == this.inputEL.nativeElement;\n\n if (!this.overlayVisible && hasFocus) {\n this.overlayVisible = true;\n }\n }\n }\n\n onOverlayAnimationStart(event: AnimationEvent) {\n switch (event.toState) {\n case 'visible':\n this.overlay = event.element;\n this.appendOverlay();\n if (this.autoZIndex) {\n this.overlay.style.zIndex = String(this.baseZIndex + (++DomHandler.zindex));\n }\n this.alignOverlay();\n this.bindDocumentClickListener();\n this.bindDocumentResizeListener();\n this.bindScrollListener();\n this.onShow.emit(event);\n break;\n\n case 'void':\n this.onOverlayHide();\n break;\n }\n }\n\n appendOverlay() {\n if (this.appendTo) {\n if (this.appendTo === 'body')\n document.body.appendChild(this.overlay);\n else\n DomHandler.appendChild(this.overlay, this.appendTo);\n\n if (!this.overlay.style.minWidth) {\n this.overlay.style.minWidth = DomHandler.getWidth(this.el.nativeElement.children[0]) + 'px';\n }\n }\n }\n\n resolveFieldData(value) {\n return this.field ? ObjectUtils.resolveFieldData(value, this.field): value;\n }\n\n getFieldData(option) {\n let data = ObjectUtils.resolveFieldData(option, this.field);\n return data !== null ? data : '';\n }\n\n restoreOverlayAppend() {\n if (this.overlay && this.appendTo) {\n this.el.nativeElement.appendChild(this.overlay);\n }\n }\n\n alignOverlay() {\n if (this.appendTo)\n DomHandler.absolutePosition(this.overlay, (this.multiple ? this.multiContainerEL.nativeElement : this.inputEL.nativeElement));\n else\n DomHandler.relativePosition(this.overlay, (this.multiple ? this.multiContainerEL.nativeElement : this.inputEL.nativeElement));\n }\n\n hide() {\n this.overlayVisible = false;\n this.cd.markForCheck();\n }\n\n handleDropdownClick(event) {\n if (!this.overlayVisible) {\n this.focusInput();\n let queryValue = this.multiple ? this.multiInputEL.nativeElement.value : this.inputEL.nativeElement.value;\n\n if (this.dropdownMode === 'blank')\n this.search(event, '');\n else if (this.dropdownMode === 'current')\n this.search(event, queryValue);\n\n this.onDropdownClick.emit({\n originalEvent: event,\n query: queryValue\n });\n }\n else {\n this.hide();\n }\n }\n\n focusInput() {\n if (this.multiple)\n this.multiInputEL.nativeElement.focus();\n else\n this.inputEL.nativeElement.focus();\n }\n\n removeItem(item: any) {\n let itemIndex = DomHandler.index(item);\n let removedValue = this.value[itemIndex];\n this.value = this.value.filter((val, i) => i!=itemIndex);\n this.onModelChange(this.value);\n this.updateFilledState();\n this.onUnselect.emit(removedValue);\n }\n\n onKeydown(event) {\n if (this.overlayVisible) {\n switch(event.which) {\n //down\n case 40:\n if (this.group) {\n let highlightItemIndex = this.findOptionGroupIndex(this.highlightOption, this.suggestions);\n\n if (highlightItemIndex !== -1) {\n let nextItemIndex = highlightItemIndex.itemIndex + 1;\n if (nextItemIndex < (this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex]).length)) {\n this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex])[nextItemIndex];\n this.highlightOptionChanged = true;\n }\n else if (this.suggestions[highlightItemIndex.groupIndex + 1]) {\n this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex + 1])[0];\n this.highlightOptionChanged = true;\n }\n }\n else {\n this.highlightOption = this.getOptionGroupChildren(this.suggestions[0])[0];\n }\n }\n else {\n let highlightItemIndex = this.findOptionIndex(this.highlightOption, this.suggestions);\n\n if (highlightItemIndex != -1) {\n var nextItemIndex = highlightItemIndex + 1;\n if (nextItemIndex != (this.suggestions.length)) {\n this.highlightOption = this.suggestions[nextItemIndex];\n this.highlightOptionChanged = true;\n }\n }\n else {\n this.highlightOption = this.suggestions[0];\n }\n }\n\n event.preventDefault();\n break;\n\n //up\n case 38:\n if (this.group) {\n let highlightItemIndex = this.findOptionGroupIndex(this.highlightOption, this.suggestions);\n if (highlightItemIndex !== -1) {\n let prevItemIndex = highlightItemIndex.itemIndex - 1;\n if (prevItemIndex >= 0) {\n this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex])[prevItemIndex];\n this.highlightOptionChanged = true;\n }\n else if (prevItemIndex < 0) {\n let prevGroup = this.suggestions[highlightItemIndex.groupIndex - 1];\n if (prevGroup) {\n this.highlightOption = this.getOptionGroupChildren(prevGroup)[this.getOptionGroupChildren(prevGroup).length - 1];\n this.highlightOptionChanged = true;\n }\n }\n }\n }\n else {\n let highlightItemIndex = this.findOptionIndex(this.highlightOption, this.suggestions);\n\n if (highlightItemIndex > 0) {\n let prevItemIndex = highlightItemIndex - 1;\n this.highlightOption = this.suggestions[prevItemIndex];\n this.highlightOptionChanged = true;\n }\n }\n\n event.preventDefault();\n break;\n\n //enter\n case 13:\n if (this.highlightOption) {\n this.selectItem(this.highlightOption);\n this.hide();\n }\n event.preventDefault();\n break;\n\n //escape\n case 27:\n this.hide();\n event.preventDefault();\n break;\n\n\n //tab\n case 9:\n if (this.highlightOption) {\n this.selectItem(this.highlightOption);\n }\n this.hide();\n break;\n }\n } else {\n if (event.which === 40 && this.suggestions) {\n this.search(event,event.target.value);\n }\n }\n\n if (this.multiple) {\n switch(event.which) {\n //backspace\n case 8:\n if (this.value && this.value.length && !this.multiInputEL.nativeElement.value) {\n this.value = [...this.value];\n const removedValue = this.value.pop();\n this.onModelChange(this.value);\n this.updateFilledState();\n this.onUnselect.emit(removedValue);\n }\n break;\n }\n }\n\n this.inputKeyDown = true;\n }\n\n onKeyup(event) {\n this.onKeyUp.emit(event);\n }\n\n onInputFocus(event) {\n if (!this.itemClicked && this.completeOnFocus ) {\n let queryValue = this.multiple ? this.multiInputEL.nativeElement.value : this.inputEL.nativeElement.value;\n this.search(event, queryValue);\n }\n\n this.focus = true;\n this.onFocus.emit(event);\n this.itemClicked = false;\n }\n\n onInputBlur(event) {\n this.focus = false;\n this.onModelTouched();\n this.onBlur.emit(event);\n }\n\n onInputChange(event) {\n if (this.forceSelection) {\n let valid = false;\n let inputValue = event.target.value.trim();\n\n if (this.suggestions) {\n for (let suggestion of this.suggestions) {\n let itemValue = this.field ? ObjectUtils.resolveFieldData(suggestion, this.field) : suggestion;\n if (itemValue && inputValue === itemValue.trim()) {\n valid = true;\n this.forceSelectionUpdateModelTimeout = setTimeout(() => {\n this.selectItem(suggestion, false);\n }, 250);\n break;\n }\n }\n }\n\n if (!valid) {\n if (this.multiple) {\n this.multiInputEL.nativeElement.value = '';\n }\n else {\n this.value = null;\n this.inputEL.nativeElement.value = '';\n }\n\n this.onClear.emit(event);\n this.onModelChange(this.value);\n this.updateFilledState();\n }\n }\n }\n\n onInputPaste(event: ClipboardEvent) {\n this.onKeydown(event);\n }\n\n isSelected(val: any): boolean {\n let selected: boolean = false;\n if (this.value && this.value.length) {\n for (let i = 0; i < this.value.length; i++) {\n if (ObjectUtils.equals(this.value[i], val, this.dataKey)) {\n selected = true;\n break;\n }\n }\n }\n return selected;\n }\n\n findOptionIndex(option, suggestions): number {\n let index: number = -1;\n if (suggestions) {\n for (let i = 0; i < suggestions.length; i++) {\n if (ObjectUtils.equals(option, suggestions[i])) {\n index = i;\n break;\n }\n }\n }\n\n return index;\n }\n\n findOptionGroupIndex(val: any, opts: any[]): any {\n let groupIndex, itemIndex;\n\n if (opts) {\n for (let i = 0; i < opts.length; i++) {\n groupIndex = i;\n itemIndex = this.findOptionIndex(val, this.getOptionGroupChildren(opts[i]));\n\n if (itemIndex !== -1) {\n break;\n }\n }\n }\n\n if (itemIndex !== -1) {\n return {groupIndex: groupIndex, itemIndex: itemIndex};\n }\n else {\n return -1;\n }\n }\n\n updateFilledState() {\n if (this.multiple)\n this.filled = (this.value && this.value.length) || (this.multiInputEL && this.multiInputEL.nativeElement && this.multiInputEL.nativeElement.value != '');\n else\n this.filled = (this.inputFieldValue && this.inputFieldValue != '') || (this.inputEL && this.inputEL.nativeElement && this.inputEL.nativeElement.value != '');;\n }\n\n updateInputField() {\n let formattedValue = this.value ? (this.field ? ObjectUtils.resolveFieldData(this.value, this.field)||'' : this.value) : '';\n this.inputFieldValue = formattedValue;\n\n if (this.inputEL && this.inputEL.nativeElement) {\n this.inputEL.nativeElement.value = formattedValue;\n }\n\n this.updateFilledState();\n }\n\n bindDocumentClickListener() {\n if (!this.documentClickListener) {\n const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {\n if (event.which === 3) {\n return;\n }\n\n if (!this.inputClick && !this.isDropdownClick(event)) {\n this.hide();\n }\n\n this.inputClick = false;\n this.cd.markForCheck();\n });\n }\n }\n\n isDropdownClick(event) {\n if (this.dropdown) {\n let target = event.target;\n return (target === this.dropdownButton.nativeElement || target.parentNode === this.dropdownButton.nativeElement);\n }\n else {\n return false;\n }\n }\n\n unbindDocumentClickListener() {\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n }\n }\n\n bindDocumentResizeListener() {\n this.documentResizeListener = this.onWindowResize.bind(this);\n window.addEventListener('resize', this.documentResizeListener);\n }\n\n unbindDocumentResizeListener() {\n if (this.documentResizeListener) {\n window.removeEventListener('resize', this.documentResizeListener);\n this.documentResizeListener = null;\n }\n }\n\n onWindowResize() {\n this.hide();\n }\n\n bindScrollListener() {\n if (!this.scrollHandler) {\n this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerEL.nativeElement, () => {\n if (this.overlayVisible) {\n this.hide();\n }\n });\n }\n\n this.scrollHandler.bindScrollListener();\n }\n\n unbindScrollListener() {\n if (this.scrollHandler) {\n this.scrollHandler.unbindScrollListener();\n }\n }\n\n onOverlayHide() {\n this.unbindDocumentClickListener();\n this.unbindDocumentResizeListener();\n this.unbindScrollListener();\n this.overlay = null;\n this.onHide.emit();\n }\n\n ngOnDestroy() {\n if (this.forceSelectionUpdateModelTimeout) {\n clearTimeout(this.forceSelectionUpdateModelTimeout);\n this.forceSelectionUpdateModelTimeout = null;\n }\n\n if (this.scrollHandler) {\n this.scrollHandler.destroy();\n this.scrollHandler = null;\n }\n this.restoreOverlayAppend();\n this.onOverlayHide();\n }\n}\n\n@NgModule({\n imports: [CommonModule,InputTextModule,ButtonModule,SharedModule,RippleModule],\n exports: [AutoComplete,SharedModule],\n declarations: [AutoComplete]\n})\nexport class AutoCompleteModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"primeng-autocomplete.js","sources":["../../src/app/components/autocomplete/autocomplete.ts","../../src/app/components/autocomplete/primeng-autocomplete.ts"],"sourcesContent":["import {NgModule,Component,ViewChild,ElementRef,AfterViewChecked,AfterContentInit,OnDestroy,Input,Output,EventEmitter,ContentChildren,QueryList,TemplateRef,Renderer2,forwardRef,ChangeDetectorRef,IterableDiffers,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {trigger,style,transition,animate,AnimationEvent} from '@angular/animations';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {ButtonModule} from 'primeng/button';\nimport {RippleModule} from 'primeng/ripple';\nimport {SharedModule,PrimeTemplate, TranslationKeys, PrimeNGConfig} from 'primeng/api';\nimport {DomHandler, ConnectedOverlayScrollHandler} from 'primeng/dom';\nimport {ObjectUtils, UniqueComponentId} from 'primeng/utils';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms';\nimport {CdkVirtualScrollViewport, ScrollingModule} from '@angular/cdk/scrolling';\n\nexport const AUTOCOMPLETE_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AutoComplete),\n multi: true\n};\n\n@Component({\n selector: 'p-autoComplete',\n template: `\n <span #container [ngClass]=\"{'p-autocomplete p-component':true,'p-autocomplete-dd':dropdown,'p-autocomplete-multiple':multiple}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n <input *ngIf=\"!multiple\" #in [attr.type]=\"type\" [attr.id]=\"inputId\" [ngStyle]=\"inputStyle\" [class]=\"inputStyleClass\" [autocomplete]=\"autocomplete\" [attr.required]=\"required\" [attr.name]=\"name\"\n class=\"p-autocomplete-input p-inputtext p-component\" [ngClass]=\"{'p-autocomplete-dd-input':dropdown,'p-disabled': disabled}\" [value]=\"inputFieldValue\" aria-autocomplete=\"list\" [attr.aria-controls]=\"listId\" role=\"searchbox\" [attr.aria-expanded]=\"overlayVisible\" aria-haspopup=\"true\" [attr.aria-activedescendant]=\"'p-highlighted-option'\"\n (click)=\"onInputClick($event)\" (input)=\"onInput($event)\" (keydown)=\"onKeydown($event)\" (keyup)=\"onKeyup($event)\" [attr.autofocus]=\"autofocus\" (focus)=\"onInputFocus($event)\" (blur)=\"onInputBlur($event)\" (change)=\"onInputChange($event)\" (paste)=\"onInputPaste($event)\"\n [attr.placeholder]=\"placeholder\" [attr.size]=\"size\" [attr.maxlength]=\"maxlength\" [attr.tabindex]=\"tabindex\" [readonly]=\"readonly\" [disabled]=\"disabled\" [attr.aria-label]=\"ariaLabel\" [attr.aria-labelledby]=\"ariaLabelledBy\" [attr.aria-required]=\"required\"\n ><ul *ngIf=\"multiple\" #multiContainer class=\"p-autocomplete-multiple-container p-component p-inputtext\" [ngClass]=\"{'p-disabled':disabled,'p-focus':focus}\" (click)=\"multiIn.focus()\">\n <li #token *ngFor=\"let val of value\" class=\"p-autocomplete-token\">\n <ng-container *ngTemplateOutlet=\"selectedItemTemplate; context: {$implicit: val}\"></ng-container>\n <span *ngIf=\"!selectedItemTemplate\" class=\"p-autocomplete-token-label\">{{resolveFieldData(val)}}</span>\n <span class=\"p-autocomplete-token-icon pi pi-times-circle\" (click)=\"removeItem(token)\" *ngIf=\"!disabled && !readonly\"></span>\n </li>\n <li class=\"p-autocomplete-input-token\">\n <input #multiIn [attr.type]=\"type\" [attr.id]=\"inputId\" [disabled]=\"disabled\" [attr.placeholder]=\"(value&&value.length ? null : placeholder)\" [attr.tabindex]=\"tabindex\" [attr.maxlength]=\"maxlength\" (input)=\"onInput($event)\" (click)=\"onInputClick($event)\"\n (keydown)=\"onKeydown($event)\" [readonly]=\"readonly\" (keyup)=\"onKeyup($event)\" [attr.autofocus]=\"autofocus\" (focus)=\"onInputFocus($event)\" (blur)=\"onInputBlur($event)\" (change)=\"onInputChange($event)\" (paste)=\"onInputPaste($event)\" [autocomplete]=\"autocomplete\"\n [ngStyle]=\"inputStyle\" [class]=\"inputStyleClass\" [attr.aria-label]=\"ariaLabel\" [attr.aria-labelledby]=\"ariaLabelledBy\" [attr.aria-required]=\"required\"\n aria-autocomplete=\"list\" [attr.aria-controls]=\"listId\" role=\"searchbox\" [attr.aria-expanded]=\"overlayVisible\" aria-haspopup=\"true\" [attr.aria-activedescendant]=\"'p-highlighted-option'\">\n </li>\n </ul>\n <i *ngIf=\"loading\" class=\"p-autocomplete-loader pi pi-spinner pi-spin\"></i><button #ddBtn type=\"button\" pButton [icon]=\"dropdownIcon\" class=\"p-autocomplete-dropdown\" [disabled]=\"disabled\" pRipple\n (click)=\"handleDropdownClick($event)\" *ngIf=\"dropdown\" [attr.tabindex]=\"tabindex\"></button>\n <div #panel *ngIf=\"overlayVisible\" [ngClass]=\"['p-autocomplete-panel p-component']\" [style.max-height]=\"virtualScroll ? 'auto' : scrollHeight\" [ngStyle]=\"panelStyle\" [class]=\"panelStyleClass\"\n [@overlayAnimation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n <ul role=\"listbox\" [attr.id]=\"listId\" class=\"p-autocomplete-items\" [ngClass]=\"{'p-autocomplete-virtualscroll': virtualScroll}\">\n <ng-container *ngIf=\"group\">\n <ng-template ngFor let-optgroup [ngForOf]=\"suggestions\">\n <li class=\"p-autocomplete-item-group\">\n <span *ngIf=\"!groupTemplate\">{{getOptionGroupLabel(optgroup)||'empty'}}</span>\n <ng-container *ngTemplateOutlet=\"groupTemplate; context: {$implicit: optgroup}\"></ng-container>\n </li>\n <ng-container *ngTemplateOutlet=\"itemslist; context: {$implicit: getOptionGroupChildren(optgroup)}\"></ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"!group\">\n <ng-container *ngTemplateOutlet=\"itemslist; context: {$implicit: suggestions}\"></ng-container>\n </ng-container>\n <ng-template #itemslist let-suggestionsToDisplay>\n <ng-container *ngIf=\"!virtualScroll; else virtualScrollList\">\n <li role=\"option\" *ngFor=\"let option of suggestionsToDisplay; let idx = index\" class=\"p-autocomplete-item\" pRipple [ngClass]=\"{'p-highlight': (option === highlightOption)}\" [id]=\"highlightOption == option ? 'p-highlighted-option':''\" (click)=\"selectItem(option)\">\n <span *ngIf=\"!itemTemplate\">{{resolveFieldData(option)}}</span>\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: option, index: idx}\"></ng-container>\n </li>\n </ng-container>\n <ng-template #virtualScrollList>\n <cdk-virtual-scroll-viewport [ngStyle]=\"{'height': scrollHeight}\" [itemSize]=\"itemSize\" *ngIf=\"virtualScroll && !noResults\">\n <ng-container *cdkVirtualFor=\"let option of suggestionsToDisplay; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd\">\n <li role=\"option\" class=\"p-autocomplete-item\" pRipple [ngClass]=\"{'p-highlight': (option === highlightOption)}\" [ngStyle]=\"{'height': itemSize + 'px'}\" [id]=\"highlightOption == option ? 'p-highlighted-option':''\" (click)=\"selectItem(option)\">\n <span *ngIf=\"!itemTemplate\">{{resolveFieldData(option)}}</span>\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: option, index: i}\"></ng-container>\n </li>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n </ng-template>\n <li *ngIf=\"noResults && showEmptyMessage\" class=\"p-autocomplete-empty-message\">\n <ng-container *ngIf=\"!emptyTemplate; else empty\">\n {{emptyMessageLabel}}\n </ng-container>\n <ng-container #empty *ngTemplateOutlet=\"emptyTemplate\"></ng-container>\n </li>\n </ng-template>\n </ul>\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n </span>\n `,\n animations: [\n trigger('overlayAnimation', [\n transition(':enter', [\n style({opacity: 0, transform: 'scaleY(0.8)'}),\n animate('{{showTransitionParams}}')\n ]),\n transition(':leave', [\n animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n ])\n ])\n ],\n host: {\n '[class.p-inputwrapper-filled]': 'filled',\n '[class.p-inputwrapper-focus]': '(focus && !disabled) || overlayVisible'\n },\n providers: [AUTOCOMPLETE_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./autocomplete.css']\n})\nexport class AutoComplete implements AfterViewChecked,AfterContentInit,OnDestroy,ControlValueAccessor {\n\n @Input() minLength: number = 1;\n\n @Input() delay: number = 300;\n\n @Input() style: any;\n\n @Input() panelStyle: any;\n\n @Input() styleClass: string;\n\n @Input() panelStyleClass: string;\n\n @Input() inputStyle: any;\n\n @Input() inputId: string;\n\n @Input() inputStyleClass: string;\n\n @Input() placeholder: string;\n\n @Input() readonly: boolean;\n\n @Input() disabled: boolean;\n\n @Input() virtualScroll: boolean;\n\n @Input() itemSize: number;\n\n @Input() maxlength: number;\n\n @Input() name: string;\n\n @Input() required: boolean;\n\n @Input() size: number;\n\n @Input() appendTo: any;\n\n @Input() autoHighlight: boolean;\n\n @Input() forceSelection: boolean;\n\n @Input() type: string = 'text';\n\n @Input() autoZIndex: boolean = true;\n\n @Input() baseZIndex: number = 0;\n\n @Input() ariaLabel: string;\n\n @Input() ariaLabelledBy: string;\n\n @Input() dropdownIcon: string = \"pi pi-chevron-down\";\n\n @Input() unique: boolean = true;\n\n @Input() group: boolean;\n\n @Input() completeOnFocus: boolean = false;\n\n @Output() completeMethod: EventEmitter<any> = new EventEmitter();\n\n @Output() onSelect: EventEmitter<any> = new EventEmitter();\n\n @Output() onUnselect: EventEmitter<any> = new EventEmitter();\n\n @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n @Output() onDropdownClick: EventEmitter<any> = new EventEmitter();\n\n\t@Output() onClear: EventEmitter<any> = new EventEmitter();\n\n @Output() onKeyUp: EventEmitter<any> = new EventEmitter();\n\n @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n @Input() field: string;\n\n @Input() scrollHeight: string = '200px';\n\n @Input() dropdown: boolean;\n\n @Input() showEmptyMessage: boolean;\n\n @Input() dropdownMode: string = 'blank';\n\n @Input() multiple: boolean;\n\n @Input() tabindex: number;\n\n @Input() dataKey: string;\n\n @Input() emptyMessage: string;\n\n @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n @Input() hideTransitionOptions: string = '.1s linear';\n\n @Input() autofocus: boolean;\n\n @Input() autocomplete: string = 'off';\n\n @Input() optionGroupChildren: string;\n\n @Input() optionGroupLabel: string;\n\n @ViewChild('container') containerEL: ElementRef;\n\n @ViewChild('in') inputEL: ElementRef;\n\n @ViewChild('multiIn') multiInputEL: ElementRef;\n\n @ViewChild('multiContainer') multiContainerEL: ElementRef;\n\n @ViewChild('ddBtn') dropdownButton: ElementRef;\n\n @ViewChild(CdkVirtualScrollViewport) viewPort: CdkVirtualScrollViewport;\n\n @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n overlay: HTMLDivElement;\n\n itemsWrapper: HTMLDivElement;\n\n itemTemplate: TemplateRef<any>;\n\n emptyTemplate: TemplateRef<any>;\n\n headerTemplate: TemplateRef<any>;\n\n footerTemplate: TemplateRef<any>;\n\n selectedItemTemplate: TemplateRef<any>;\n \n groupTemplate: TemplateRef<any>;\n\n value: any;\n\n _suggestions: any[];\n\n onModelChange: Function = () => {};\n\n onModelTouched: Function = () => {};\n\n timeout: any;\n\n overlayVisible: boolean = false;\n\n documentClickListener: any;\n\n suggestionsUpdated: boolean;\n\n highlightOption: any;\n\n highlightOptionChanged: boolean;\n\n focus: boolean = false;\n\n filled: boolean;\n\n inputClick: boolean;\n\n inputKeyDown: boolean;\n\n noResults: boolean;\n\n differ: any;\n\n inputFieldValue: string = null;\n\n loading: boolean;\n\n scrollHandler: any;\n\n documentResizeListener: any;\n\n forceSelectionUpdateModelTimeout: any;\n\n listId: string;\n\n itemClicked: boolean;\n\n virtualScrollSelectedIndex: number;\n\n constructor(public el: ElementRef, public renderer: Renderer2, public cd: ChangeDetectorRef, public differs: IterableDiffers, public config: PrimeNGConfig) {\n this.differ = differs.find([]).create(null);\n this.listId = UniqueComponentId() + '_list';\n }\n\n @Input() get suggestions(): any[] {\n return this._suggestions;\n }\n\n set suggestions(val:any[]) {\n this._suggestions = val;\n this.handleSuggestionsChange();\n }\n\n ngAfterViewChecked() {\n //Use timeouts as since Angular 4.2, AfterViewChecked is broken and not called after panel is updated\n if (this.suggestionsUpdated && this.overlay && this.overlay.offsetParent) {\n setTimeout(() => {\n if (this.overlay) {\n this.alignOverlay();\n }\n }, 1);\n this.suggestionsUpdated = false;\n }\n\n if (this.highlightOptionChanged) {\n setTimeout(() => {\n if (this.overlay && this.itemsWrapper) {\n let listItem = DomHandler.findSingle(this.overlay, 'li.p-highlight');\n\n if (listItem) {\n DomHandler.scrollInView(this.itemsWrapper, listItem);\n }\n\n if (this.virtualScroll && this.viewPort) {\n let range = this.viewPort.getRenderedRange();\n this.updateVirtualScrollSelectedIndex();\n \n if (range.start > this.virtualScrollSelectedIndex || range.end < this.virtualScrollSelectedIndex) {\n this.viewPort.scrollToIndex(this.virtualScrollSelectedIndex);\n }\n }\n }\n }, 1);\n this.highlightOptionChanged = false;\n }\n }\n\n handleSuggestionsChange() {\n if (this._suggestions != null && this.loading) {\n this.highlightOption = null;\n if (this._suggestions.length) {\n this.noResults = false;\n this.show();\n this.suggestionsUpdated = true;\n\n if (this.autoHighlight) {\n this.highlightOption = this._suggestions[0];\n }\n }\n else {\n this.noResults = true;\n\n if (this.showEmptyMessage) {\n this.show();\n this.suggestionsUpdated = true;\n }\n else {\n this.hide();\n }\n }\n\n this.loading = false;\n }\n }\n\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch(item.getType()) {\n case 'item':\n this.itemTemplate = item.template;\n break;\n\n case 'group':\n this.groupTemplate = item.template;\n break;\n\n case 'selectedItem':\n this.selectedItemTemplate = item.template;\n break;\n\n case 'header':\n this.headerTemplate = item.template;\n break;\n\n case 'empty':\n this.emptyTemplate = item.template;\n break;\n\n case 'footer':\n this.footerTemplate = item.template;\n break;\n\n default:\n this.itemTemplate = item.template;\n break;\n }\n });\n }\n\n updateVirtualScrollSelectedIndex() {\n if (this.highlightOption && this.suggestions && this.suggestions.length) {\n this.virtualScrollSelectedIndex = this.findOptionIndex(this.highlightOption, this.suggestions);\n }\n }\n\n writeValue(value: any) : void {\n this.value = value;\n this.filled = this.value && this.value != '';\n this.updateInputField();\n this.cd.markForCheck();\n }\n\n getOptionGroupChildren(optionGroup: any) {\n return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;\n }\n\n getOptionGroupLabel(optionGroup: any) {\n return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : (optionGroup.label != undefined ? optionGroup.label : optionGroup);\n }\n\n registerOnChange(fn: Function): void {\n this.onModelChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this.onModelTouched = fn;\n }\n\n setDisabledState(val: boolean): void {\n this.disabled = val;\n this.cd.markForCheck();\n }\n\n onInput(event: Event) {\n // When an input element with a placeholder is clicked, the onInput event is invoked in IE.\n if (!this.inputKeyDown && DomHandler.isIE()) {\n return;\n }\n\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n\n let value = (<HTMLInputElement> event.target).value;\n if (!this.multiple && !this.forceSelection) {\n this.onModelChange(value);\n }\n\n if (value.length === 0 && !this.multiple) {\n this.hide();\n this.onClear.emit(event);\n\t this.onModelChange(value);\n }\n\n if (value.length >= this.minLength) {\n this.timeout = setTimeout(() => {\n this.search(event, value);\n }, this.delay);\n }\n else {\n this.hide();\n }\n this.updateFilledState();\n this.inputKeyDown = false;\n }\n\n onInputClick(event: MouseEvent) {\n if (this.documentClickListener) {\n this.inputClick = true;\n }\n }\n\n search(event: any, query: string) {\n //allow empty string but not undefined or null\n if (query === undefined || query === null) {\n return;\n }\n\n this.loading = true;\n\n this.completeMethod.emit({\n originalEvent: event,\n query: query\n });\n }\n\n selectItem(option: any, focus: boolean = true) {\n if (this.forceSelectionUpdateModelTimeout) {\n clearTimeout(this.forceSelectionUpdateModelTimeout);\n this.forceSelectionUpdateModelTimeout = null;\n }\n\n if (this.multiple) {\n this.multiInputEL.nativeElement.value = '';\n this.value = this.value||[];\n if (!this.isSelected(option) || !this.unique) {\n this.value = [...this.value,option];\n this.onModelChange(this.value);\n }\n }\n else {\n this.inputEL.nativeElement.value = this.resolveFieldData(option);\n this.value = option;\n this.onModelChange(this.value);\n }\n\n this.onSelect.emit(option);\n this.updateFilledState();\n\n if (focus) {\n this.itemClicked = true;\n this.focusInput();\n }\n }\n\n show() {\n if (this.multiInputEL || this.inputEL) {\n let hasFocus = this.multiple ?\n this.multiInputEL.nativeElement.ownerDocument.activeElement == this.multiInputEL.nativeElement :\n this.inputEL.nativeElement.ownerDocument.activeElement == this.inputEL.nativeElement;\n\n if (!this.overlayVisible && hasFocus) {\n this.overlayVisible = true;\n }\n }\n }\n\n onOverlayAnimationStart(event: AnimationEvent) {\n switch (event.toState) {\n case 'visible':\n this.overlay = event.element;\n this.itemsWrapper = this.virtualScroll ? DomHandler.findSingle(this.overlay, '.cdk-virtual-scroll-viewport') : this.overlay;\n this.appendOverlay();\n if (this.autoZIndex) {\n this.overlay.style.zIndex = String(this.baseZIndex + (++DomHandler.zindex));\n }\n this.alignOverlay();\n this.bindDocumentClickListener();\n this.bindDocumentResizeListener();\n this.bindScrollListener();\n this.onShow.emit(event);\n break;\n\n case 'void':\n this.onOverlayHide();\n break;\n }\n }\n\n appendOverlay() {\n if (this.appendTo) {\n if (this.appendTo === 'body')\n document.body.appendChild(this.overlay);\n else\n DomHandler.appendChild(this.overlay, this.appendTo);\n\n if (!this.overlay.style.minWidth) {\n this.overlay.style.minWidth = DomHandler.getWidth(this.el.nativeElement.children[0]) + 'px';\n }\n }\n }\n\n resolveFieldData(value) {\n let data = this.field ? ObjectUtils.resolveFieldData(value, this.field) : value;\n return data !== (null || undefined) ? data : '';\n }\n\n restoreOverlayAppend() {\n if (this.overlay && this.appendTo) {\n this.el.nativeElement.appendChild(this.overlay);\n }\n }\n\n alignOverlay() {\n if (this.appendTo)\n DomHandler.absolutePosition(this.overlay, (this.multiple ? this.multiContainerEL.nativeElement : this.inputEL.nativeElement));\n else\n DomHandler.relativePosition(this.overlay, (this.multiple ? this.multiContainerEL.nativeElement : this.inputEL.nativeElement));\n }\n\n hide() {\n this.overlayVisible = false;\n this.cd.markForCheck();\n }\n\n handleDropdownClick(event) {\n if (!this.overlayVisible) {\n this.focusInput();\n let queryValue = this.multiple ? this.multiInputEL.nativeElement.value : this.inputEL.nativeElement.value;\n\n if (this.dropdownMode === 'blank')\n this.search(event, '');\n else if (this.dropdownMode === 'current')\n this.search(event, queryValue);\n\n this.onDropdownClick.emit({\n originalEvent: event,\n query: queryValue\n });\n }\n else {\n this.hide();\n }\n }\n\n focusInput() {\n if (this.multiple)\n this.multiInputEL.nativeElement.focus();\n else\n this.inputEL.nativeElement.focus();\n }\n\n get emptyMessageLabel(): string {\n return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);\n }\n\n removeItem(item: any) {\n let itemIndex = DomHandler.index(item);\n let removedValue = this.value[itemIndex];\n this.value = this.value.filter((val, i) => i!=itemIndex);\n this.onModelChange(this.value);\n this.updateFilledState();\n this.onUnselect.emit(removedValue);\n }\n\n onKeydown(event) {\n if (this.overlayVisible) {\n switch(event.which) {\n //down\n case 40:\n if (this.group) {\n let highlightItemIndex = this.findOptionGroupIndex(this.highlightOption, this.suggestions);\n\n if (highlightItemIndex !== -1) {\n let nextItemIndex = highlightItemIndex.itemIndex + 1;\n if (nextItemIndex < (this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex]).length)) {\n this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex])[nextItemIndex];\n this.highlightOptionChanged = true;\n }\n else if (this.suggestions[highlightItemIndex.groupIndex + 1]) {\n this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex + 1])[0];\n this.highlightOptionChanged = true;\n }\n }\n else {\n this.highlightOption = this.getOptionGroupChildren(this.suggestions[0])[0];\n }\n }\n else {\n let highlightItemIndex = this.findOptionIndex(this.highlightOption, this.suggestions);\n\n if (highlightItemIndex != -1) {\n var nextItemIndex = highlightItemIndex + 1;\n if (nextItemIndex != (this.suggestions.length)) {\n this.highlightOption = this.suggestions[nextItemIndex];\n this.highlightOptionChanged = true;\n }\n }\n else {\n this.highlightOption = this.suggestions[0];\n }\n }\n\n event.preventDefault();\n break;\n\n //up\n case 38:\n if (this.group) {\n let highlightItemIndex = this.findOptionGroupIndex(this.highlightOption, this.suggestions);\n if (highlightItemIndex !== -1) {\n let prevItemIndex = highlightItemIndex.itemIndex - 1;\n if (prevItemIndex >= 0) {\n this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex])[prevItemIndex];\n this.highlightOptionChanged = true;\n }\n else if (prevItemIndex < 0) {\n let prevGroup = this.suggestions[highlightItemIndex.groupIndex - 1];\n if (prevGroup) {\n this.highlightOption = this.getOptionGroupChildren(prevGroup)[this.getOptionGroupChildren(prevGroup).length - 1];\n this.highlightOptionChanged = true;\n }\n }\n }\n }\n else {\n let highlightItemIndex = this.findOptionIndex(this.highlightOption, this.suggestions);\n\n if (highlightItemIndex > 0) {\n let prevItemIndex = highlightItemIndex - 1;\n this.highlightOption = this.suggestions[prevItemIndex];\n this.highlightOptionChanged = true;\n }\n }\n\n event.preventDefault();\n break;\n\n //enter\n case 13:\n if (this.highlightOption) {\n this.selectItem(this.highlightOption);\n this.hide();\n }\n event.preventDefault();\n break;\n\n //escape\n case 27:\n this.hide();\n event.preventDefault();\n break;\n\n\n //tab\n case 9:\n if (this.highlightOption) {\n this.selectItem(this.highlightOption);\n }\n this.hide();\n break;\n }\n } else {\n if (event.which === 40 && this.suggestions) {\n this.search(event,event.target.value);\n }\n }\n\n if (this.multiple) {\n switch(event.which) {\n //backspace\n case 8:\n if (this.value && this.value.length && !this.multiInputEL.nativeElement.value) {\n this.value = [...this.value];\n const removedValue = this.value.pop();\n this.onModelChange(this.value);\n this.updateFilledState();\n this.onUnselect.emit(removedValue);\n }\n break;\n }\n }\n\n this.inputKeyDown = true;\n }\n\n onKeyup(event) {\n this.onKeyUp.emit(event);\n }\n\n onInputFocus(event) {\n if (!this.itemClicked && this.completeOnFocus ) {\n let queryValue = this.multiple ? this.multiInputEL.nativeElement.value : this.inputEL.nativeElement.value;\n this.search(event, queryValue);\n }\n\n this.focus = true;\n this.onFocus.emit(event);\n this.itemClicked = false;\n }\n\n onInputBlur(event) {\n this.focus = false;\n this.onModelTouched();\n this.onBlur.emit(event);\n }\n\n onInputChange(event) {\n if (this.forceSelection) {\n let valid = false;\n let inputValue = event.target.value.trim();\n\n if (this.suggestions) {\n for (let suggestion of this.suggestions) {\n let itemValue = this.field ? ObjectUtils.resolveFieldData(suggestion, this.field) : suggestion;\n if (itemValue && inputValue === itemValue.trim()) {\n valid = true;\n this.forceSelectionUpdateModelTimeout = setTimeout(() => {\n this.selectItem(suggestion, false);\n }, 250);\n break;\n }\n }\n }\n\n if (!valid) {\n if (this.multiple) {\n this.multiInputEL.nativeElement.value = '';\n }\n else {\n this.value = null;\n this.inputEL.nativeElement.value = '';\n }\n\n this.onClear.emit(event);\n this.onModelChange(this.value);\n this.updateFilledState();\n }\n }\n }\n\n onInputPaste(event: ClipboardEvent) {\n this.onKeydown(event);\n }\n\n isSelected(val: any): boolean {\n let selected: boolean = false;\n if (this.value && this.value.length) {\n for (let i = 0; i < this.value.length; i++) {\n if (ObjectUtils.equals(this.value[i], val, this.dataKey)) {\n selected = true;\n break;\n }\n }\n }\n return selected;\n }\n\n findOptionIndex(option, suggestions): number {\n let index: number = -1;\n if (suggestions) {\n for (let i = 0; i < suggestions.length; i++) {\n if (ObjectUtils.equals(option, suggestions[i])) {\n index = i;\n break;\n }\n }\n }\n\n return index;\n }\n\n findOptionGroupIndex(val: any, opts: any[]): any {\n let groupIndex, itemIndex;\n\n if (opts) {\n for (let i = 0; i < opts.length; i++) {\n groupIndex = i;\n itemIndex = this.findOptionIndex(val, this.getOptionGroupChildren(opts[i]));\n\n if (itemIndex !== -1) {\n break;\n }\n }\n }\n\n if (itemIndex !== -1) {\n return {groupIndex: groupIndex, itemIndex: itemIndex};\n }\n else {\n return -1;\n }\n }\n\n updateFilledState() {\n if (this.multiple)\n this.filled = (this.value && this.value.length) || (this.multiInputEL && this.multiInputEL.nativeElement && this.multiInputEL.nativeElement.value != '');\n else\n this.filled = (this.inputFieldValue && this.inputFieldValue != '') || (this.inputEL && this.inputEL.nativeElement && this.inputEL.nativeElement.value != '');;\n }\n\n updateInputField() {\n let formattedValue = this.resolveFieldData(this.value);\n this.inputFieldValue = formattedValue;\n\n if (this.inputEL && this.inputEL.nativeElement) {\n this.inputEL.nativeElement.value = formattedValue;\n }\n\n this.updateFilledState();\n }\n\n bindDocumentClickListener() {\n if (!this.documentClickListener) {\n const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {\n if (event.which === 3) {\n return;\n }\n\n if (!this.inputClick && !this.isDropdownClick(event)) {\n this.hide();\n }\n\n this.inputClick = false;\n this.cd.markForCheck();\n });\n }\n }\n\n isDropdownClick(event) {\n if (this.dropdown) {\n let target = event.target;\n return (target === this.dropdownButton.nativeElement || target.parentNode === this.dropdownButton.nativeElement);\n }\n else {\n return false;\n }\n }\n\n unbindDocumentClickListener() {\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n }\n }\n\n bindDocumentResizeListener() {\n this.documentResizeListener = this.onWindowResize.bind(this);\n window.addEventListener('resize', this.documentResizeListener);\n }\n\n unbindDocumentResizeListener() {\n if (this.documentResizeListener) {\n window.removeEventListener('resize', this.documentResizeListener);\n this.documentResizeListener = null;\n }\n }\n\n onWindowResize() {\n this.hide();\n }\n\n bindScrollListener() {\n if (!this.scrollHandler) {\n this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerEL.nativeElement, () => {\n if (this.overlayVisible) {\n this.hide();\n }\n });\n }\n\n this.scrollHandler.bindScrollListener();\n }\n\n unbindScrollListener() {\n if (this.scrollHandler) {\n this.scrollHandler.unbindScrollListener();\n }\n }\n\n onOverlayHide() {\n this.unbindDocumentClickListener();\n this.unbindDocumentResizeListener();\n this.unbindScrollListener();\n this.overlay = null;\n this.onHide.emit();\n }\n\n ngOnDestroy() {\n if (this.forceSelectionUpdateModelTimeout) {\n clearTimeout(this.forceSelectionUpdateModelTimeout);\n this.forceSelectionUpdateModelTimeout = null;\n }\n\n if (this.scrollHandler) {\n this.scrollHandler.destroy();\n this.scrollHandler = null;\n }\n this.restoreOverlayAppend();\n this.onOverlayHide();\n }\n}\n\n@NgModule({\n imports: [CommonModule,InputTextModule,ButtonModule,SharedModule,RippleModule,ScrollingModule],\n exports: [AutoComplete,SharedModule,ScrollingModule],\n declarations: [AutoComplete]\n})\nexport class AutoCompleteModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
@@ -8,27 +8,24 @@ class ButtonDirective {
|
|
8
8
|
constructor(el) {
|
9
9
|
this.el = el;
|
10
10
|
this.iconPos = 'left';
|
11
|
+
this.loadingIcon = "pi pi-spinner pi-spin";
|
12
|
+
this._loading = false;
|
11
13
|
}
|
12
14
|
ngAfterViewInit() {
|
13
15
|
this._initialStyleClass = this.el.nativeElement.className;
|
14
16
|
DomHandler.addMultipleClasses(this.el.nativeElement, this.getStyleClass());
|
15
17
|
if (this.icon) {
|
16
|
-
|
17
|
-
iconElement.className = 'p-button-icon';
|
18
|
-
iconElement.setAttribute("aria-hidden", "true");
|
19
|
-
let iconPosClass = this.label ? 'p-button-icon-' + this.iconPos : null;
|
20
|
-
if (iconPosClass) {
|
21
|
-
DomHandler.addClass(iconElement, iconPosClass);
|
22
|
-
}
|
23
|
-
DomHandler.addMultipleClasses(iconElement, this.icon);
|
24
|
-
this.el.nativeElement.appendChild(iconElement);
|
18
|
+
this.createIconEl();
|
25
19
|
}
|
26
20
|
let labelElement = document.createElement("span");
|
27
21
|
if (this.icon && !this.label) {
|
28
22
|
labelElement.setAttribute('aria-hidden', 'true');
|
29
23
|
}
|
30
24
|
labelElement.className = 'p-button-label';
|
31
|
-
|
25
|
+
if (this.label)
|
26
|
+
labelElement.appendChild(document.createTextNode(this.label));
|
27
|
+
else
|
28
|
+
labelElement.innerHTML = ' ';
|
32
29
|
this.el.nativeElement.appendChild(labelElement);
|
33
30
|
this.initialized = true;
|
34
31
|
}
|
@@ -37,12 +34,51 @@ class ButtonDirective {
|
|
37
34
|
if (this.icon && !this.label) {
|
38
35
|
styleClass = styleClass + ' p-button-icon-only';
|
39
36
|
}
|
37
|
+
if (this.loading) {
|
38
|
+
styleClass = styleClass + ' p-disabled p-button-loading';
|
39
|
+
if (!this.icon && this.label)
|
40
|
+
styleClass = styleClass + ' p-button-loading-label-only';
|
41
|
+
}
|
40
42
|
return styleClass;
|
41
43
|
}
|
42
44
|
setStyleClass() {
|
43
45
|
let styleClass = this.getStyleClass();
|
44
46
|
this.el.nativeElement.className = styleClass + ' ' + this._initialStyleClass;
|
45
47
|
}
|
48
|
+
createIconEl() {
|
49
|
+
let iconElement = document.createElement("span");
|
50
|
+
iconElement.className = 'p-button-icon';
|
51
|
+
iconElement.setAttribute("aria-hidden", "true");
|
52
|
+
let iconPosClass = this.label ? 'p-button-icon-' + this.iconPos : null;
|
53
|
+
if (iconPosClass) {
|
54
|
+
DomHandler.addClass(iconElement, iconPosClass);
|
55
|
+
}
|
56
|
+
DomHandler.addMultipleClasses(iconElement, this.getIconClass());
|
57
|
+
let labelEl = DomHandler.findSingle(this.el.nativeElement, '.p-button-label');
|
58
|
+
if (labelEl)
|
59
|
+
this.el.nativeElement.insertBefore(iconElement, labelEl);
|
60
|
+
else
|
61
|
+
this.el.nativeElement.appendChild(iconElement);
|
62
|
+
}
|
63
|
+
getIconClass() {
|
64
|
+
return this.loading ? 'p-button-loading-icon ' + this.loadingIcon : this._icon;
|
65
|
+
}
|
66
|
+
setIconClass() {
|
67
|
+
let iconElement = DomHandler.findSingle(this.el.nativeElement, '.p-button-icon');
|
68
|
+
if (iconElement) {
|
69
|
+
if (this.iconPos)
|
70
|
+
iconElement.className = 'p-button-icon p-button-icon-' + this.iconPos + ' ' + this.getIconClass();
|
71
|
+
else
|
72
|
+
iconElement.className = 'p-button-icon ' + this.getIconClass();
|
73
|
+
}
|
74
|
+
else {
|
75
|
+
this.createIconEl();
|
76
|
+
}
|
77
|
+
}
|
78
|
+
removeIconElement() {
|
79
|
+
let iconElement = DomHandler.findSingle(this.el.nativeElement, '.p-button-icon');
|
80
|
+
this.el.nativeElement.removeChild(iconElement);
|
81
|
+
}
|
46
82
|
get label() {
|
47
83
|
return this._label;
|
48
84
|
}
|
@@ -59,10 +95,20 @@ class ButtonDirective {
|
|
59
95
|
set icon(val) {
|
60
96
|
this._icon = val;
|
61
97
|
if (this.initialized) {
|
62
|
-
|
63
|
-
|
98
|
+
this.setIconClass();
|
99
|
+
this.setStyleClass();
|
100
|
+
}
|
101
|
+
}
|
102
|
+
get loading() {
|
103
|
+
return this._loading;
|
104
|
+
}
|
105
|
+
set loading(val) {
|
106
|
+
this._loading = val;
|
107
|
+
if (this.initialized) {
|
108
|
+
if (this.loading || this.icon)
|
109
|
+
this.setIconClass();
|
64
110
|
else
|
65
|
-
|
111
|
+
this.removeIconElement();
|
66
112
|
this.setStyleClass();
|
67
113
|
}
|
68
114
|
}
|
@@ -80,13 +126,17 @@ ButtonDirective.ctorParameters = () => [
|
|
80
126
|
];
|
81
127
|
ButtonDirective.propDecorators = {
|
82
128
|
iconPos: [{ type: Input }],
|
129
|
+
loadingIcon: [{ type: Input }],
|
83
130
|
label: [{ type: Input }],
|
84
|
-
icon: [{ type: Input }]
|
131
|
+
icon: [{ type: Input }],
|
132
|
+
loading: [{ type: Input }]
|
85
133
|
};
|
86
134
|
class Button {
|
87
135
|
constructor() {
|
88
136
|
this.type = "button";
|
89
137
|
this.iconPos = 'left';
|
138
|
+
this.loading = false;
|
139
|
+
this.loadingIcon = "pi pi-spinner pi-spin";
|
90
140
|
this.onClick = new EventEmitter();
|
91
141
|
this.onFocus = new EventEmitter();
|
92
142
|
this.onBlur = new EventEmitter();
|
@@ -114,10 +164,13 @@ Button.decorators = [
|
|
114
164
|
{ type: Component, args: [{
|
115
165
|
selector: 'p-button',
|
116
166
|
template: `
|
117
|
-
<button [attr.type]="type" [class]="styleClass" [ngStyle]="style" [disabled]="disabled"
|
167
|
+
<button [attr.type]="type" [class]="styleClass" [ngStyle]="style" [disabled]="disabled || loading"
|
118
168
|
[ngClass]="{'p-button p-component':true,
|
119
169
|
'p-button-icon-only': (icon && !label),
|
120
|
-
'p-button-vertical': (iconPos === 'top' || iconPos === 'bottom') && label
|
170
|
+
'p-button-vertical': (iconPos === 'top' || iconPos === 'bottom') && label,
|
171
|
+
'p-disabled': this.disabled || this.loading,
|
172
|
+
'p-button-loading': this.loading,
|
173
|
+
'p-button-loading-label-only': this.loading && !this.icon && this.label}"
|
121
174
|
(click)="onClick.emit($event)" (focus)="onFocus.emit($event)" (blur)="onBlur.emit($event)" pRipple>
|
122
175
|
<ng-content></ng-content>
|
123
176
|
<ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
|
@@ -126,9 +179,9 @@ Button.decorators = [
|
|
126
179
|
'p-button-icon-right': iconPos === 'right' && label,
|
127
180
|
'p-button-icon-top': iconPos === 'top' && label,
|
128
181
|
'p-button-icon-bottom': iconPos === 'bottom' && label}"
|
129
|
-
[class]="icon" *ngIf="icon" [attr.aria-hidden]="true"></span>
|
130
|
-
<span class="p-button-label" [attr.aria-hidden]="icon && !label">{{label||' '}}</span>
|
131
|
-
<span [ngClass]="badgeStyleClass()"
|
182
|
+
[class]="loading ? 'p-button-loading-icon ' + loadingIcon : icon" *ngIf="!contentTemplate && (icon||loading)" [attr.aria-hidden]="true"></span>
|
183
|
+
<span class="p-button-label" [attr.aria-hidden]="icon && !label" *ngIf="!contentTemplate">{{label||' '}}</span>
|
184
|
+
<span [ngClass]="badgeStyleClass()" [class]="badgeClass" *ngIf="!contentTemplate && badge">{{badge}}</span>
|
132
185
|
</button>
|
133
186
|
`,
|
134
187
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
@@ -142,6 +195,8 @@ Button.propDecorators = {
|
|
142
195
|
badge: [{ type: Input }],
|
143
196
|
label: [{ type: Input }],
|
144
197
|
disabled: [{ type: Input }],
|
198
|
+
loading: [{ type: Input }],
|
199
|
+
loadingIcon: [{ type: Input }],
|
145
200
|
style: [{ type: Input }],
|
146
201
|
styleClass: [{ type: Input }],
|
147
202
|
badgeClass: [{ type: Input }],
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"primeng-button.js","sources":["../../src/app/components/button/button.ts","../../src/app/components/button/primeng-button.ts"],"sourcesContent":["import {NgModule,Directive,Component,ElementRef,EventEmitter,AfterViewInit,Output,OnDestroy,Input,ChangeDetectionStrategy, ViewEncapsulation, ContentChildren, AfterContentInit, TemplateRef, QueryList} from '@angular/core';\nimport {DomHandler} from 'primeng/dom';\nimport {CommonModule} from '@angular/common';\nimport {RippleModule} from 'primeng/ripple'; \nimport {PrimeTemplate} from 'primeng/api'; \n\n@Directive({\n selector: '[pButton]'\n})\nexport class ButtonDirective implements AfterViewInit, OnDestroy {\n\n @Input() iconPos: 'left' | 'right' | 'top' | 'bottom' = 'left';\n \n public _label: string;\n \n public _icon: string;\n \n public initialized: boolean;\n \n public _initialStyleClass: string;\n\n constructor(public el: ElementRef) {}\n \n ngAfterViewInit() {\n this._initialStyleClass = this.el.nativeElement.className;\n DomHandler.addMultipleClasses(this.el.nativeElement, this.getStyleClass());\n\n if (this.icon) {\n let iconElement = document.createElement(\"span\");\n iconElement.className = 'p-button-icon';\n iconElement.setAttribute(\"aria-hidden\", \"true\");\n let iconPosClass = this.label ? 'p-button-icon-' + this.iconPos : null;\n if (iconPosClass) {\n DomHandler.addClass(iconElement, iconPosClass);\n }\n DomHandler.addMultipleClasses(iconElement, this.icon);\n this.el.nativeElement.appendChild(iconElement);\n }\n \n let labelElement = document.createElement(\"span\");\n if (this.icon && !this.label) {\n labelElement.setAttribute('aria-hidden', 'true');\n }\n labelElement.className = 'p-button-label';\n labelElement.appendChild(document.createTextNode(this.label||' '));\n this.el.nativeElement.appendChild(labelElement);\n this.initialized = true;\n }\n \n getStyleClass(): string {\n let styleClass = 'p-button p-component';\n if (this.icon && !this.label) {\n styleClass = styleClass + ' p-button-icon-only';\n }\n \n return styleClass;\n }\n\n setStyleClass() {\n let styleClass = this.getStyleClass();\n this.el.nativeElement.className = styleClass + ' ' + this._initialStyleClass;\n }\n \n @Input() get label(): string {\n return this._label;\n }\n\n set label(val: string) {\n this._label = val;\n \n if (this.initialized) {\n DomHandler.findSingle(this.el.nativeElement, '.p-button-label').textContent = this._label || ' ';\n this.setStyleClass();\n }\n }\n \n @Input() get icon(): string {\n return this._icon;\n }\n\n set icon(val: string) {\n this._icon = val;\n \n if (this.initialized) {\n if (this.iconPos)\n DomHandler.findSingle(this.el.nativeElement, '.p-button-icon').className = 'p-button-icon p-button-icon-' + this.iconPos + ' ' + this._icon;\n else\n DomHandler.findSingle(this.el.nativeElement, '.p-button-icon').className = 'p-button-icon ' + this._icon;\n\n this.setStyleClass();\n }\n }\n \n ngOnDestroy() {\n this.initialized = false;\n }\n}\n\n@Component({\n selector: 'p-button',\n template: `\n <button [attr.type]=\"type\" [class]=\"styleClass\" [ngStyle]=\"style\" [disabled]=\"disabled\"\n [ngClass]=\"{'p-button p-component':true,\n 'p-button-icon-only': (icon && !label),\n 'p-button-vertical': (iconPos === 'top' || iconPos === 'bottom') && label}\"\n (click)=\"onClick.emit($event)\" (focus)=\"onFocus.emit($event)\" (blur)=\"onBlur.emit($event)\" pRipple>\n <ng-content></ng-content>\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n <span [ngClass]=\"{'p-button-icon': true,\n 'p-button-icon-left': iconPos === 'left' && label,\n 'p-button-icon-right': iconPos === 'right' && label,\n 'p-button-icon-top': iconPos === 'top' && label,\n 'p-button-icon-bottom': iconPos === 'bottom' && label}\"\n [class]=\"icon\" *ngIf=\"icon\" [attr.aria-hidden]=\"true\"></span>\n <span class=\"p-button-label\" [attr.aria-hidden]=\"icon && !label\">{{label||' '}}</span>\n <span [ngClass]=\"badgeStyleClass()\" *ngIf=\"badge\" [class]=\"badgeClass\">{{badge}}</span>\n </button>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class Button implements AfterContentInit {\n\n @Input() type: string = \"button\";\n\n @Input() iconPos: string = 'left';\n\n @Input() icon: string;\n\n @Input() badge: string;\n\n @Input() label: string;\n\n @Input() disabled: boolean;\n\n @Input() style: any;\n\n @Input() styleClass: string;\n\n @Input() badgeClass: string;\n\n contentTemplate: TemplateRef<any>;\n\n @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n @Output() onClick: EventEmitter<any> = new EventEmitter();\n\n @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch(item.getType()) {\n case 'content':\n this.contentTemplate = item.template;\n break;\n \n default:\n this.contentTemplate = item.template;\n break;\n }\n });\n }\n\n badgeStyleClass() {\n return {\n 'p-badge p-component': true,\n 'p-badge-no-gutter': this.badge && String(this.badge).length === 1\n }\n }\n}\n\n@NgModule({\n imports: [CommonModule,RippleModule],\n exports: [ButtonDirective,Button],\n declarations: [ButtonDirective,Button]\n})\nexport class ButtonModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"primeng-button.js","sources":["../../src/app/components/button/button.ts","../../src/app/components/button/primeng-button.ts"],"sourcesContent":["import {NgModule,Directive,Component,ElementRef,EventEmitter,AfterViewInit,Output,OnDestroy,Input,ChangeDetectionStrategy, ViewEncapsulation, ContentChildren, AfterContentInit, TemplateRef, QueryList} from '@angular/core';\nimport {DomHandler} from 'primeng/dom';\nimport {CommonModule} from '@angular/common';\nimport {RippleModule} from 'primeng/ripple'; \nimport {PrimeTemplate} from 'primeng/api'; \n\n@Directive({\n selector: '[pButton]'\n})\nexport class ButtonDirective implements AfterViewInit, OnDestroy {\n\n @Input() iconPos: 'left' | 'right' | 'top' | 'bottom' = 'left';\n \n @Input() loadingIcon: string = \"pi pi-spinner pi-spin\";\n\n public _label: string;\n \n public _icon: string;\n\n public _loading: boolean = false;\n \n public initialized: boolean;\n \n public _initialStyleClass: string;\n\n constructor(public el: ElementRef) {}\n \n ngAfterViewInit() {\n this._initialStyleClass = this.el.nativeElement.className;\n DomHandler.addMultipleClasses(this.el.nativeElement, this.getStyleClass());\n\n if (this.icon) {\n this.createIconEl();\n }\n \n let labelElement = document.createElement(\"span\");\n if (this.icon && !this.label) {\n labelElement.setAttribute('aria-hidden', 'true');\n }\n labelElement.className = 'p-button-label';\n\n if (this.label)\n labelElement.appendChild(document.createTextNode(this.label));\n else \n labelElement.innerHTML = ' ';\n \n this.el.nativeElement.appendChild(labelElement);\n this.initialized = true;\n }\n \n getStyleClass(): string {\n let styleClass = 'p-button p-component';\n if (this.icon && !this.label) {\n styleClass = styleClass + ' p-button-icon-only';\n }\n\n if (this.loading) {\n styleClass = styleClass + ' p-disabled p-button-loading';\n if (!this.icon && this.label)\n styleClass = styleClass + ' p-button-loading-label-only';\n }\n \n return styleClass;\n }\n\n setStyleClass() {\n let styleClass = this.getStyleClass();\n this.el.nativeElement.className = styleClass + ' ' + this._initialStyleClass;\n }\n\n createIconEl() {\n let iconElement = document.createElement(\"span\");\n iconElement.className = 'p-button-icon';\n iconElement.setAttribute(\"aria-hidden\", \"true\");\n let iconPosClass = this.label ? 'p-button-icon-' + this.iconPos : null;\n \n if (iconPosClass) {\n DomHandler.addClass(iconElement, iconPosClass);\n }\n\n DomHandler.addMultipleClasses(iconElement, this.getIconClass());\n let labelEl = DomHandler.findSingle(this.el.nativeElement, '.p-button-label')\n\n if (labelEl)\n this.el.nativeElement.insertBefore(iconElement, labelEl);\n else\n this.el.nativeElement.appendChild(iconElement)\n }\n\n getIconClass() {\n return this.loading ? 'p-button-loading-icon ' + this.loadingIcon : this._icon;\n }\n\n setIconClass() {\n let iconElement = DomHandler.findSingle(this.el.nativeElement, '.p-button-icon');\n if (iconElement) {\n if (this.iconPos) \n iconElement.className = 'p-button-icon p-button-icon-' + this.iconPos + ' ' + this.getIconClass();\n else \n iconElement.className = 'p-button-icon ' + this.getIconClass();\n }\n else {\n this.createIconEl();\n }\n }\n\n removeIconElement() {\n let iconElement = DomHandler.findSingle(this.el.nativeElement, '.p-button-icon');\n this.el.nativeElement.removeChild(iconElement)\n }\n \n @Input() get label(): string {\n return this._label;\n }\n\n set label(val: string) {\n this._label = val;\n \n if (this.initialized) {\n DomHandler.findSingle(this.el.nativeElement, '.p-button-label').textContent = this._label || ' ';\n this.setStyleClass();\n }\n }\n \n @Input() get icon(): string {\n return this._icon;\n }\n\n set icon(val: string) {\n this._icon = val;\n \n if (this.initialized) {\n this.setIconClass();\n this.setStyleClass();\n }\n }\n\n @Input() get loading(): boolean {\n return this._loading;\n }\n\n set loading(val: boolean) {\n this._loading = val;\n \n if (this.initialized) {\n if (this.loading || this.icon)\n this.setIconClass();\n else \n this.removeIconElement();\n \n this.setStyleClass();\n }\n }\n \n ngOnDestroy() {\n this.initialized = false;\n }\n}\n\n@Component({\n selector: 'p-button',\n template: `\n <button [attr.type]=\"type\" [class]=\"styleClass\" [ngStyle]=\"style\" [disabled]=\"disabled || loading\"\n [ngClass]=\"{'p-button p-component':true,\n 'p-button-icon-only': (icon && !label),\n 'p-button-vertical': (iconPos === 'top' || iconPos === 'bottom') && label,\n 'p-disabled': this.disabled || this.loading,\n 'p-button-loading': this.loading,\n 'p-button-loading-label-only': this.loading && !this.icon && this.label}\"\n (click)=\"onClick.emit($event)\" (focus)=\"onFocus.emit($event)\" (blur)=\"onBlur.emit($event)\" pRipple>\n <ng-content></ng-content>\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n <span [ngClass]=\"{'p-button-icon': true,\n 'p-button-icon-left': iconPos === 'left' && label,\n 'p-button-icon-right': iconPos === 'right' && label,\n 'p-button-icon-top': iconPos === 'top' && label,\n 'p-button-icon-bottom': iconPos === 'bottom' && label}\"\n [class]=\"loading ? 'p-button-loading-icon ' + loadingIcon : icon\" *ngIf=\"!contentTemplate && (icon||loading)\" [attr.aria-hidden]=\"true\"></span>\n <span class=\"p-button-label\" [attr.aria-hidden]=\"icon && !label\" *ngIf=\"!contentTemplate\">{{label||' '}}</span>\n <span [ngClass]=\"badgeStyleClass()\" [class]=\"badgeClass\" *ngIf=\"!contentTemplate && badge\">{{badge}}</span>\n </button>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class Button implements AfterContentInit {\n\n @Input() type: string = \"button\";\n\n @Input() iconPos: string = 'left';\n\n @Input() icon: string;\n\n @Input() badge: string;\n\n @Input() label: string;\n\n @Input() disabled: boolean;\n\n @Input() loading: boolean = false;\n\n @Input() loadingIcon: string = \"pi pi-spinner pi-spin\";\n\n @Input() style: any;\n\n @Input() styleClass: string;\n\n @Input() badgeClass: string;\n\n contentTemplate: TemplateRef<any>;\n\n @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n @Output() onClick: EventEmitter<any> = new EventEmitter();\n\n @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch(item.getType()) {\n case 'content':\n this.contentTemplate = item.template;\n break;\n \n default:\n this.contentTemplate = item.template;\n break;\n }\n });\n }\n\n badgeStyleClass() {\n return {\n 'p-badge p-component': true,\n 'p-badge-no-gutter': this.badge && String(this.badge).length === 1\n }\n }\n}\n\n@NgModule({\n imports: [CommonModule,RippleModule],\n exports: [ButtonDirective,Button],\n declarations: [ButtonDirective,Button]\n})\nexport class ButtonModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
@@ -179,6 +179,9 @@ class Calendar {
|
|
179
179
|
else if (this.view === 'month') {
|
180
180
|
this.createMonthPickerValues();
|
181
181
|
}
|
182
|
+
this.translationSubscription = this.config.translationObserver.subscribe(() => {
|
183
|
+
this.createWeekDays();
|
184
|
+
});
|
182
185
|
this.initialized = true;
|
183
186
|
}
|
184
187
|
ngAfterContentInit() {
|
@@ -1174,7 +1177,7 @@ class Calendar {
|
|
1174
1177
|
this.updateTime();
|
1175
1178
|
}
|
1176
1179
|
}
|
1177
|
-
|
1180
|
+
onTimePickerElementMouseLeave() {
|
1178
1181
|
if (!this.disabled && this.timePickerTimer) {
|
1179
1182
|
this.clearTimePickerTimer();
|
1180
1183
|
this.updateTime();
|
@@ -1212,6 +1215,7 @@ class Calendar {
|
|
1212
1215
|
clearTimePickerTimer() {
|
1213
1216
|
if (this.timePickerTimer) {
|
1214
1217
|
clearTimeout(this.timePickerTimer);
|
1218
|
+
this.timePickerTimer = null;
|
1215
1219
|
}
|
1216
1220
|
}
|
1217
1221
|
decrementHour(event) {
|
@@ -1918,6 +1922,9 @@ class Calendar {
|
|
1918
1922
|
this.scrollHandler.destroy();
|
1919
1923
|
this.scrollHandler = null;
|
1920
1924
|
}
|
1925
|
+
if (this.translationSubscription) {
|
1926
|
+
this.translationSubscription.unsubscribe();
|
1927
|
+
}
|
1921
1928
|
this.clearTimePickerTimer();
|
1922
1929
|
this.restoreOverlayAppend();
|
1923
1930
|
this.onOverlayHide();
|
@@ -1927,7 +1934,7 @@ Calendar.decorators = [
|
|
1927
1934
|
{ type: Component, args: [{
|
1928
1935
|
selector: 'p-calendar',
|
1929
1936
|
template: `
|
1930
|
-
<span #container [ngClass]="{'p-calendar':true, 'p-calendar-w-btn': showIcon, 'p-calendar-timeonly': timeOnly, 'p-focus': focus}" [ngStyle]="style" [class]="styleClass">
|
1937
|
+
<span #container [ngClass]="{'p-calendar':true, 'p-calendar-w-btn': showIcon, 'p-calendar-timeonly': timeOnly, 'p-calendar-disabled':disabled, 'p-focus': focus}" [ngStyle]="style" [class]="styleClass">
|
1931
1938
|
<ng-template [ngIf]="!inline">
|
1932
1939
|
<input #inputfield type="text" [attr.id]="inputId" [attr.name]="name" [attr.required]="required" [attr.aria-required]="required" [value]="inputFieldValue" (focus)="onInputFocus($event)" (keydown)="onInputKeydown($event)" (click)="onInputClick()" (blur)="onInputBlur($event)"
|
1933
1940
|
[readonly]="readonlyInput" (input)="onUserInput($event)" [ngStyle]="inputStyle" [class]="inputStyleClass" [placeholder]="placeholder||''" [disabled]="disabled" [attr.tabindex]="tabindex" [attr.inputmode]="touchUI ? 'off' : null"
|
@@ -1970,7 +1977,7 @@ Calendar.decorators = [
|
|
1970
1977
|
<th *ngIf="showWeek" class="p-datepicker-weekheader p-disabled">
|
1971
1978
|
<span>{{getTranslation('weekHeader')}}</span>
|
1972
1979
|
</th>
|
1973
|
-
<th scope="col" *ngFor="let weekDay of
|
1980
|
+
<th scope="col" *ngFor="let weekDay of weekDays;let begin = first; let end = last">
|
1974
1981
|
<span>{{weekDay}}</span>
|
1975
1982
|
</th>
|
1976
1983
|
</tr>
|
@@ -2005,11 +2012,11 @@ Calendar.decorators = [
|
|
2005
2012
|
</ng-container>
|
2006
2013
|
<div class="p-timepicker" *ngIf="showTime||timeOnly">
|
2007
2014
|
<div class="p-hour-picker">
|
2008
|
-
<button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="incrementHour($event)" (mousedown)="onTimePickerElementMouseDown($event, 0, 1)" (mouseup)="onTimePickerElementMouseUp($event)" (
|
2015
|
+
<button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="incrementHour($event)" (mousedown)="onTimePickerElementMouseDown($event, 0, 1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
|
2009
2016
|
<span class="pi pi-chevron-up"></span>
|
2010
2017
|
</button>
|
2011
2018
|
<span><ng-container *ngIf="currentHour < 10">0</ng-container>{{currentHour}}</span>
|
2012
|
-
<button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="decrementHour($event)" (mousedown)="onTimePickerElementMouseDown($event, 0, -1)" (mouseup)="onTimePickerElementMouseUp($event)" (
|
2019
|
+
<button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="decrementHour($event)" (mousedown)="onTimePickerElementMouseDown($event, 0, -1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
|
2013
2020
|
<span class="pi pi-chevron-down"></span>
|
2014
2021
|
</button>
|
2015
2022
|
</div>
|
@@ -2017,11 +2024,11 @@ Calendar.decorators = [
|
|
2017
2024
|
<span>{{timeSeparator}}</span>
|
2018
2025
|
</div>
|
2019
2026
|
<div class="p-minute-picker">
|
2020
|
-
<button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="incrementMinute($event)" (mousedown)="onTimePickerElementMouseDown($event, 1, 1)" (mouseup)="onTimePickerElementMouseUp($event)" (
|
2027
|
+
<button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="incrementMinute($event)" (mousedown)="onTimePickerElementMouseDown($event, 1, 1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
|
2021
2028
|
<span class="pi pi-chevron-up"></span>
|
2022
2029
|
</button>
|
2023
2030
|
<span><ng-container *ngIf="currentMinute < 10">0</ng-container>{{currentMinute}}</span>
|
2024
|
-
<button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="decrementMinute($event)" (mousedown)="onTimePickerElementMouseDown($event, 1, -1)" (mouseup)="onTimePickerElementMouseUp($event)" (
|
2031
|
+
<button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="decrementMinute($event)" (mousedown)="onTimePickerElementMouseDown($event, 1, -1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
|
2025
2032
|
<span class="pi pi-chevron-down"></span>
|
2026
2033
|
</button>
|
2027
2034
|
</div>
|
@@ -2029,11 +2036,11 @@ Calendar.decorators = [
|
|
2029
2036
|
<span>{{timeSeparator}}</span>
|
2030
2037
|
</div>
|
2031
2038
|
<div class="p-second-picker" *ngIf="showSeconds">
|
2032
|
-
<button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="incrementSecond($event)" (mousedown)="onTimePickerElementMouseDown($event, 2, 1)" (mouseup)="onTimePickerElementMouseUp($event)" (
|
2039
|
+
<button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="incrementSecond($event)" (mousedown)="onTimePickerElementMouseDown($event, 2, 1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
|
2033
2040
|
<span class="pi pi-chevron-up"></span>
|
2034
2041
|
</button>
|
2035
2042
|
<span><ng-container *ngIf="currentSecond < 10">0</ng-container>{{currentSecond}}</span>
|
2036
|
-
<button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="decrementSecond($event)" (mousedown)="onTimePickerElementMouseDown($event, 2, -1)" (mouseup)="onTimePickerElementMouseUp($event)" (
|
2043
|
+
<button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="decrementSecond($event)" (mousedown)="onTimePickerElementMouseDown($event, 2, -1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
|
2037
2044
|
<span class="pi pi-chevron-down"></span>
|
2038
2045
|
</button>
|
2039
2046
|
</div>
|
@@ -2088,7 +2095,7 @@ Calendar.decorators = [
|
|
2088
2095
|
providers: [CALENDAR_VALUE_ACCESSOR],
|
2089
2096
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
2090
2097
|
encapsulation: ViewEncapsulation.None,
|
2091
|
-
styles: [".p-calendar{display:inline-flex;position:relative}.p-calendar .p-inputtext{flex:1 1 auto;width:1%}.p-calendar-w-btn .p-inputtext{border-bottom-right-radius:0;border-top-right-radius:0}.p-calendar-w-btn .p-datepicker-trigger{border-bottom-left-radius:0;border-top-left-radius:0}.p-fluid .p-calendar{display:flex}.p-fluid .p-calendar .p-inputtext{width:1%}.p-calendar .p-datepicker{min-width:100%}.p-datepicker{position:absolute;width:auto}.p-datepicker-inline{
|
2098
|
+
styles: [".p-calendar{display:inline-flex;position:relative}.p-calendar .p-inputtext{flex:1 1 auto;width:1%}.p-calendar-w-btn .p-inputtext{border-bottom-right-radius:0;border-top-right-radius:0}.p-calendar-w-btn .p-datepicker-trigger{border-bottom-left-radius:0;border-top-left-radius:0}.p-fluid .p-calendar{display:flex}.p-fluid .p-calendar .p-inputtext{width:1%}.p-calendar .p-datepicker{min-width:100%}.p-datepicker{position:absolute;width:auto}.p-datepicker-inline{position:static}.p-datepicker-header{align-items:center;display:flex;justify-content:space-between}.p-datepicker-header .p-datepicker-title{margin:0 auto}.p-datepicker-next,.p-datepicker-prev{align-items:center;cursor:pointer;display:inline-flex;justify-content:center;overflow:hidden;position:relative}.p-datepicker-multiple-month .p-datepicker-group-container{display:flex}.p-datepicker table{border-collapse:collapse;width:100%}.p-datepicker td>span{display:flex;margin:0 auto}.p-datepicker td>span,.p-monthpicker-month{align-items:center;cursor:pointer;justify-content:center;overflow:hidden;position:relative}.p-monthpicker-month{display:inline-flex;width:33.3%}.p-datepicker-buttonbar{align-items:center;display:flex;justify-content:space-between}.p-timepicker,.p-timepicker button{align-items:center;display:flex;justify-content:center}.p-timepicker button{cursor:pointer;overflow:hidden;position:relative}.p-timepicker>div{align-items:center;display:flex;flex-direction:column}.p-calendar .p-datepicker-touch-ui,.p-datepicker-touch-ui{left:50%;min-width:80vw;position:fixed;top:50%;transform:translate(-50%,-50%)}"]
|
2092
2099
|
},] }
|
2093
2100
|
];
|
2094
2101
|
Calendar.ctorParameters = () => [
|