From a10d6f70fbd84059de7034f65eba34db380b6849 Mon Sep 17 00:00:00 2001 From: wartana Date: Sun, 18 Jan 2026 14:22:18 +0800 Subject: [PATCH] Initial commit --- .gitignore | 15 + admin/datang/add_datang.php | 100 + admin/datang/data_datang.php | 74 + admin/datang/del_datang.php | 24 + admin/datang/edit_datang.php | 128 + admin/kartu/add_kartu.php | 100 + admin/kartu/anggota.php | 165 + admin/kartu/data_kartu.php | 74 + admin/kartu/del_anggota.php | 26 + admin/kartu/del_kartu.php | 24 + admin/kartu/edit_kartu.php | 127 + admin/lahir/add_lahir.php | 92 + admin/lahir/data_lahir.php | 71 + admin/lahir/del_lahir.php | 24 + admin/lahir/edit_lahir.php | 118 + admin/mendu/add_mendu.php | 86 + admin/mendu/data_mendu.php | 70 + admin/mendu/del_mendu.php | 24 + admin/mendu/edit_mendu.php | 83 + admin/pend/add_pend.php | 131 + admin/pend/data_pend.php | 84 + admin/pend/del_pend.php | 24 + admin/pend/edit_pend.php | 171 + admin/pend/view_pend.php | 97 + admin/pengguna/add_pengguna.php | 76 + admin/pengguna/data_pengguna.php | 65 + admin/pengguna/del_pengguna.php | 24 + admin/pengguna/edit_pengguna.php | 118 + admin/pindah/add_pindah.php | 86 + admin/pindah/data_pindah.php | 70 + admin/pindah/del_pindah.php | 24 + admin/pindah/edit_pindah.php | 83 + build/config/postcss.config.js | 14 + build/config/rollup.config.js | 29 + build/js/.jscsrc | 44 + build/js/AdminLTE.js | 23 + build/js/CardRefresh.js | 164 + build/js/CardWidget.js | 251 + build/js/ControlSidebar.js | 292 + build/js/DirectChat.js | 92 + build/js/Dropdown.js | 112 + build/js/Layout.js | 218 + build/js/PushMenu.js | 223 + build/js/SiteSearch.js | 127 + build/js/Toasts.js | 229 + build/js/TodoList.js | 122 + build/js/Treeview.js | 185 + build/npm/DocsPlugins.js | 46 + build/npm/DocsPublish.js | 43 + build/npm/Plugins.js | 399 + build/npm/Publish.js | 47 + build/scss/.csslintrc | 23 + build/scss/AdminLTE-components.scss | 20 + build/scss/AdminLTE-core.scss | 20 + build/scss/AdminLTE-extra-components.scss | 20 + build/scss/AdminLTE-pages.scss | 20 + build/scss/AdminLTE-plugins.scss | 20 + build/scss/AdminLTE-raw.scss | 27 + build/scss/AdminLTE.scss | 24 + build/scss/_alerts.scss | 36 + build/scss/_bootstrap-variables.scss | 910 + build/scss/_brand.scss | 76 + build/scss/_buttons.scss | 108 + build/scss/_callout.scss | 51 + build/scss/_cards.scss | 420 + build/scss/_carousel.scss | 24 + build/scss/_colors.scss | 91 + build/scss/_control-sidebar.scss | 178 + build/scss/_direct-chat.scss | 224 + build/scss/_dropdown.scss | 272 + build/scss/_elevation.scss | 14 + build/scss/_forms.scss | 277 + build/scss/_info-box.scss | 140 + build/scss/_layout.scss | 612 + build/scss/_main-header.scss | 138 + build/scss/_main-sidebar.scss | 840 + build/scss/_miscellaneous.scss | 459 + build/scss/_mixins.scss | 13 + build/scss/_modals.scss | 40 + build/scss/_navs.scss | 100 + build/scss/_print.scss | 52 + build/scss/_products.scss | 54 + build/scss/_progress-bars.scss | 66 + build/scss/_sidebar-mini.scss | 172 + build/scss/_small-box.scss | 152 + build/scss/_social-widgets.scss | 93 + build/scss/_table.scss | 74 + build/scss/_text.scss | 37 + build/scss/_timeline.scss | 127 + build/scss/_toasts.scss | 56 + build/scss/_users-list.scss | 45 + build/scss/_variables.scss | 237 + build/scss/mixins/_accent.scss | 68 + build/scss/mixins/_backgrounds.scss | 64 + build/scss/mixins/_cards.scss | 82 + build/scss/mixins/_custom-forms.scss | 81 + build/scss/mixins/_direct-chat.scss | 17 + build/scss/mixins/_miscellaneous.scss | 35 + build/scss/mixins/_navbar.scss | 34 + build/scss/mixins/_sidebar.scss | 171 + build/scss/mixins/_toasts.scss | 23 + build/scss/pages/_404_500_errors.scss | 43 + build/scss/pages/_e_commerce.scss | 45 + build/scss/pages/_invoice.scss | 13 + build/scss/pages/_lockscreen.scss | 78 + build/scss/pages/_login_and_register.scss | 97 + build/scss/pages/_mailbox.scss | 99 + build/scss/pages/_profile.scss | 37 + build/scss/pages/_projects.scss | 26 + build/scss/parts/_components.scss | 14 + build/scss/parts/_core.scss | 12 + build/scss/parts/_extra-components.scss | 11 + build/scss/parts/_miscellaneous.scss | 9 + build/scss/parts/_pages.scss | 12 + build/scss/parts/_plugins.scss | 16 + build/scss/plugins/_bootstrap-slider.scss | 35 + build/scss/plugins/_bootstrap-switch.scss | 175 + build/scss/plugins/_fullcalendar.scss | 110 + build/scss/plugins/_icheck-bootstrap.scss | 41 + build/scss/plugins/_jqvmap.scss | 21 + build/scss/plugins/_mapael.scss | 70 + build/scss/plugins/_miscellaneous.scss | 39 + build/scss/plugins/_mixins.scss | 62 + build/scss/plugins/_pace.scss | 211 + build/scss/plugins/_select2.scss | 222 + build/scss/plugins/_sweetalert2.scss | 40 + build/scss/plugins/_toastr.scss | 54 + data_penduduk.sql | 302 + dist/css/adminlte.css | 30013 ++++++++++++++++ dist/css/adminlte.css.map | 1 + dist/css/adminlte.min.css | 12 + dist/css/adminlte.min.css.map | 1 + dist/css/alt/adminlte.components.css | 5168 +++ dist/css/alt/adminlte.components.css.map | 126 + dist/css/alt/adminlte.components.min.css | 8 + dist/css/alt/adminlte.components.min.css.map | 1 + dist/css/alt/adminlte.core.css | 16543 +++++++++ dist/css/alt/adminlte.core.css.map | 242 + dist/css/alt/adminlte.core.min.css | 13 + dist/css/alt/adminlte.core.min.css.map | 1 + dist/css/alt/adminlte.extra-components.css | 1059 + .../css/alt/adminlte.extra-components.css.map | 120 + .../css/alt/adminlte.extra-components.min.css | 8 + .../alt/adminlte.extra-components.min.css.map | 1 + dist/css/alt/adminlte.pages.css | 445 + dist/css/alt/adminlte.pages.css.map | 124 + dist/css/alt/adminlte.pages.min.css | 8 + dist/css/alt/adminlte.pages.min.css.map | 1 + dist/css/alt/adminlte.plugins.css | 6187 ++++ dist/css/alt/adminlte.plugins.css.map | 130 + dist/css/alt/adminlte.plugins.min.css | 8 + dist/css/alt/adminlte.plugins.min.css.map | 1 + dist/img/admin.ico | Bin 0 -> 219048 bytes dist/img/izin.png | Bin 0 -> 17892 bytes dist/js/adminlte.js | 1839 + dist/js/adminlte.js.map | 1 + dist/js/adminlte.min.js | 7 + dist/js/adminlte.min.js.map | 1 + dist/js/demo.js | 419 + dist/lookup.js | 4 + home/admin.php | 198 + home/kaur.php | 198 + inc/koneksi.php | 2 + index.php | 704 + login.php | 128 + logout.php | 4 + plugins/alert.js | 2 + plugins/bootstrap/js/bootstrap.bundle.js | 7013 ++++ plugins/bootstrap/js/bootstrap.bundle.js.map | 1 + plugins/bootstrap/js/bootstrap.bundle.min.js | 7 + .../bootstrap/js/bootstrap.bundle.min.js.map | 1 + plugins/bootstrap/js/bootstrap.js | 4435 +++ plugins/bootstrap/js/bootstrap.js.map | 1 + plugins/bootstrap/js/bootstrap.min.js | 7 + plugins/bootstrap/js/bootstrap.min.js.map | 1 + .../css/dataTables.bootstrap4.css | 206 + .../css/dataTables.bootstrap4.min.css | 1 + .../js/dataTables.bootstrap4.js | 184 + .../js/dataTables.bootstrap4.min.js | 8 + plugins/datatables/jquery.dataTables.js | 15334 ++++++++ plugins/datatables/jquery.dataTables.min.js | 166 + plugins/fontawesome-free/css/all.css | 4423 +++ plugins/fontawesome-free/css/all.min.css | 5 + plugins/fontawesome-free/css/brands.css | 14 + plugins/fontawesome-free/css/brands.min.css | 5 + plugins/fontawesome-free/css/fontawesome.css | 4390 +++ .../fontawesome-free/css/fontawesome.min.css | 5 + plugins/fontawesome-free/css/regular.css | 15 + plugins/fontawesome-free/css/regular.min.css | 5 + plugins/fontawesome-free/css/solid.css | 16 + plugins/fontawesome-free/css/solid.min.css | 5 + plugins/fontawesome-free/css/svg-with-js.css | 371 + .../fontawesome-free/css/svg-with-js.min.css | 5 + plugins/fontawesome-free/css/v4-shims.css | 2166 ++ plugins/fontawesome-free/css/v4-shims.min.css | 5 + .../webfonts/fa-brands-400.eot | Bin 0 -> 130906 bytes .../webfonts/fa-brands-400.svg | 3496 ++ .../webfonts/fa-brands-400.ttf | Bin 0 -> 130600 bytes .../webfonts/fa-brands-400.woff | Bin 0 -> 88428 bytes .../webfonts/fa-brands-400.woff2 | Bin 0 -> 75336 bytes .../webfonts/fa-regular-400.eot | Bin 0 -> 34394 bytes .../webfonts/fa-regular-400.svg | 803 + .../webfonts/fa-regular-400.ttf | Bin 0 -> 34096 bytes .../webfonts/fa-regular-400.woff | Bin 0 -> 16804 bytes .../webfonts/fa-regular-400.woff2 | Bin 0 -> 13584 bytes .../webfonts/fa-solid-900.eot | Bin 0 -> 192758 bytes .../webfonts/fa-solid-900.svg | 4667 +++ .../webfonts/fa-solid-900.ttf | Bin 0 -> 192472 bytes .../webfonts/fa-solid-900.woff | Bin 0 -> 98384 bytes .../webfonts/fa-solid-900.woff2 | Bin 0 -> 75728 bytes .../extensions/export/buttons.flash.min.js | 29 + .../extensions/export/buttons.html5.min.js | 26 + .../extensions/export/buttons.print.min.js | 4 + .../export/dataTables.buttons.min.js | 35 + .../extensions/export/jszip.min.js | 14 + .../extensions/export/pdfmake.min.js | 22 + .../extensions/export/vfs_fonts.js | 1 + plugins/jquery-datatable/jquery.dataTables.js | 15277 ++++++++ .../bootstrap/css/dataTables.bootstrap.css | 161 + .../css/dataTables.bootstrap.min.css | 1 + .../skin/bootstrap/images/Sorting icons.psd | Bin 0 -> 27490 bytes .../skin/bootstrap/images/favicon.ico | Bin 0 -> 894 bytes .../skin/bootstrap/images/sort_asc.png | Bin 0 -> 160 bytes .../bootstrap/images/sort_asc_disabled.png | Bin 0 -> 148 bytes .../skin/bootstrap/images/sort_both.png | Bin 0 -> 201 bytes .../skin/bootstrap/images/sort_desc.png | Bin 0 -> 158 bytes .../bootstrap/images/sort_desc_disabled.png | Bin 0 -> 146 bytes .../skin/bootstrap/js/dataTables.bootstrap.js | 206 + .../bootstrap/js/dataTables.bootstrap.min.js | 8 + plugins/jquery/core.js | 399 + plugins/jquery/jquery.js | 10598 ++++++ plugins/jquery/jquery.min.js | 2 + plugins/jquery/jquery.min.map | 1 + plugins/jquery/jquery.slim.js | 8495 +++++ plugins/jquery/jquery.slim.min.js | 2 + plugins/jquery/jquery.slim.min.map | 1 + plugins/proses-ajax.php | 16 + .../select2-bootstrap4.css | 163 + .../select2-bootstrap4.min.css | 1 + plugins/select2/css/select2.css | 481 + plugins/select2/css/select2.min.css | 1 + plugins/select2/js/i18n/af.js | 3 + plugins/select2/js/i18n/ar.js | 3 + plugins/select2/js/i18n/az.js | 3 + plugins/select2/js/i18n/bg.js | 3 + plugins/select2/js/i18n/bn.js | 3 + plugins/select2/js/i18n/bs.js | 3 + plugins/select2/js/i18n/build.txt | 236 + plugins/select2/js/i18n/ca.js | 3 + plugins/select2/js/i18n/cs.js | 3 + plugins/select2/js/i18n/da.js | 3 + plugins/select2/js/i18n/de.js | 3 + plugins/select2/js/i18n/dsb.js | 3 + plugins/select2/js/i18n/el.js | 3 + plugins/select2/js/i18n/en.js | 3 + plugins/select2/js/i18n/es.js | 3 + plugins/select2/js/i18n/et.js | 3 + plugins/select2/js/i18n/eu.js | 3 + plugins/select2/js/i18n/fa.js | 3 + plugins/select2/js/i18n/fi.js | 3 + plugins/select2/js/i18n/fr.js | 3 + plugins/select2/js/i18n/gl.js | 3 + plugins/select2/js/i18n/he.js | 3 + plugins/select2/js/i18n/hi.js | 3 + plugins/select2/js/i18n/hr.js | 3 + plugins/select2/js/i18n/hsb.js | 3 + plugins/select2/js/i18n/hu.js | 3 + plugins/select2/js/i18n/hy.js | 3 + plugins/select2/js/i18n/id.js | 3 + plugins/select2/js/i18n/is.js | 3 + plugins/select2/js/i18n/it.js | 3 + plugins/select2/js/i18n/ja.js | 3 + plugins/select2/js/i18n/ka.js | 3 + plugins/select2/js/i18n/km.js | 3 + plugins/select2/js/i18n/ko.js | 3 + plugins/select2/js/i18n/lt.js | 3 + plugins/select2/js/i18n/lv.js | 3 + plugins/select2/js/i18n/mk.js | 3 + plugins/select2/js/i18n/ms.js | 3 + plugins/select2/js/i18n/nb.js | 3 + plugins/select2/js/i18n/ne.js | 3 + plugins/select2/js/i18n/nl.js | 3 + plugins/select2/js/i18n/pl.js | 3 + plugins/select2/js/i18n/ps.js | 3 + plugins/select2/js/i18n/pt-BR.js | 3 + plugins/select2/js/i18n/pt.js | 3 + plugins/select2/js/i18n/ro.js | 3 + plugins/select2/js/i18n/ru.js | 3 + plugins/select2/js/i18n/sk.js | 3 + plugins/select2/js/i18n/sl.js | 3 + plugins/select2/js/i18n/sq.js | 3 + plugins/select2/js/i18n/sr-Cyrl.js | 3 + plugins/select2/js/i18n/sr.js | 3 + plugins/select2/js/i18n/sv.js | 3 + plugins/select2/js/i18n/th.js | 3 + plugins/select2/js/i18n/tk.js | 3 + plugins/select2/js/i18n/tr.js | 3 + plugins/select2/js/i18n/uk.js | 3 + plugins/select2/js/i18n/vi.js | 3 + plugins/select2/js/i18n/zh-CN.js | 3 + plugins/select2/js/i18n/zh-TW.js | 3 + plugins/select2/js/select2.full.js | 6759 ++++ plugins/select2/js/select2.full.min.js | 2 + plugins/select2/js/select2.js | 6047 ++++ plugins/select2/js/select2.min.js | 2 + report/cetak_datang.php | 109 + report/cetak_domisili.php | 103 + report/cetak_lahir.php | 100 + report/cetak_mati.php | 111 + report/cetak_pindah.php | 103 + surat/suket_datang.php | 38 + surat/suket_domisili.php | 37 + surat/suket_lahir.php | 36 + surat/suket_mati.php | 39 + surat/suket_pindah.php | 38 + 315 files changed, 175339 insertions(+) create mode 100644 .gitignore create mode 100644 admin/datang/add_datang.php create mode 100644 admin/datang/data_datang.php create mode 100644 admin/datang/del_datang.php create mode 100644 admin/datang/edit_datang.php create mode 100644 admin/kartu/add_kartu.php create mode 100644 admin/kartu/anggota.php create mode 100644 admin/kartu/data_kartu.php create mode 100644 admin/kartu/del_anggota.php create mode 100644 admin/kartu/del_kartu.php create mode 100644 admin/kartu/edit_kartu.php create mode 100644 admin/lahir/add_lahir.php create mode 100644 admin/lahir/data_lahir.php create mode 100644 admin/lahir/del_lahir.php create mode 100644 admin/lahir/edit_lahir.php create mode 100644 admin/mendu/add_mendu.php create mode 100644 admin/mendu/data_mendu.php create mode 100644 admin/mendu/del_mendu.php create mode 100644 admin/mendu/edit_mendu.php create mode 100644 admin/pend/add_pend.php create mode 100644 admin/pend/data_pend.php create mode 100644 admin/pend/del_pend.php create mode 100644 admin/pend/edit_pend.php create mode 100644 admin/pend/view_pend.php create mode 100644 admin/pengguna/add_pengguna.php create mode 100644 admin/pengguna/data_pengguna.php create mode 100644 admin/pengguna/del_pengguna.php create mode 100644 admin/pengguna/edit_pengguna.php create mode 100644 admin/pindah/add_pindah.php create mode 100644 admin/pindah/data_pindah.php create mode 100644 admin/pindah/del_pindah.php create mode 100644 admin/pindah/edit_pindah.php create mode 100644 build/config/postcss.config.js create mode 100644 build/config/rollup.config.js create mode 100644 build/js/.jscsrc create mode 100644 build/js/AdminLTE.js create mode 100644 build/js/CardRefresh.js create mode 100644 build/js/CardWidget.js create mode 100644 build/js/ControlSidebar.js create mode 100644 build/js/DirectChat.js create mode 100644 build/js/Dropdown.js create mode 100644 build/js/Layout.js create mode 100644 build/js/PushMenu.js create mode 100644 build/js/SiteSearch.js create mode 100644 build/js/Toasts.js create mode 100644 build/js/TodoList.js create mode 100644 build/js/Treeview.js create mode 100644 build/npm/DocsPlugins.js create mode 100644 build/npm/DocsPublish.js create mode 100644 build/npm/Plugins.js create mode 100644 build/npm/Publish.js create mode 100644 build/scss/.csslintrc create mode 100644 build/scss/AdminLTE-components.scss create mode 100644 build/scss/AdminLTE-core.scss create mode 100644 build/scss/AdminLTE-extra-components.scss create mode 100644 build/scss/AdminLTE-pages.scss create mode 100644 build/scss/AdminLTE-plugins.scss create mode 100644 build/scss/AdminLTE-raw.scss create mode 100644 build/scss/AdminLTE.scss create mode 100644 build/scss/_alerts.scss create mode 100644 build/scss/_bootstrap-variables.scss create mode 100644 build/scss/_brand.scss create mode 100644 build/scss/_buttons.scss create mode 100644 build/scss/_callout.scss create mode 100644 build/scss/_cards.scss create mode 100644 build/scss/_carousel.scss create mode 100644 build/scss/_colors.scss create mode 100644 build/scss/_control-sidebar.scss create mode 100644 build/scss/_direct-chat.scss create mode 100644 build/scss/_dropdown.scss create mode 100644 build/scss/_elevation.scss create mode 100644 build/scss/_forms.scss create mode 100644 build/scss/_info-box.scss create mode 100644 build/scss/_layout.scss create mode 100644 build/scss/_main-header.scss create mode 100644 build/scss/_main-sidebar.scss create mode 100644 build/scss/_miscellaneous.scss create mode 100644 build/scss/_mixins.scss create mode 100644 build/scss/_modals.scss create mode 100644 build/scss/_navs.scss create mode 100644 build/scss/_print.scss create mode 100644 build/scss/_products.scss create mode 100644 build/scss/_progress-bars.scss create mode 100644 build/scss/_sidebar-mini.scss create mode 100644 build/scss/_small-box.scss create mode 100644 build/scss/_social-widgets.scss create mode 100644 build/scss/_table.scss create mode 100644 build/scss/_text.scss create mode 100644 build/scss/_timeline.scss create mode 100644 build/scss/_toasts.scss create mode 100644 build/scss/_users-list.scss create mode 100644 build/scss/_variables.scss create mode 100644 build/scss/mixins/_accent.scss create mode 100644 build/scss/mixins/_backgrounds.scss create mode 100644 build/scss/mixins/_cards.scss create mode 100644 build/scss/mixins/_custom-forms.scss create mode 100644 build/scss/mixins/_direct-chat.scss create mode 100644 build/scss/mixins/_miscellaneous.scss create mode 100644 build/scss/mixins/_navbar.scss create mode 100644 build/scss/mixins/_sidebar.scss create mode 100644 build/scss/mixins/_toasts.scss create mode 100644 build/scss/pages/_404_500_errors.scss create mode 100644 build/scss/pages/_e_commerce.scss create mode 100644 build/scss/pages/_invoice.scss create mode 100644 build/scss/pages/_lockscreen.scss create mode 100644 build/scss/pages/_login_and_register.scss create mode 100644 build/scss/pages/_mailbox.scss create mode 100644 build/scss/pages/_profile.scss create mode 100644 build/scss/pages/_projects.scss create mode 100644 build/scss/parts/_components.scss create mode 100644 build/scss/parts/_core.scss create mode 100644 build/scss/parts/_extra-components.scss create mode 100644 build/scss/parts/_miscellaneous.scss create mode 100644 build/scss/parts/_pages.scss create mode 100644 build/scss/parts/_plugins.scss create mode 100644 build/scss/plugins/_bootstrap-slider.scss create mode 100644 build/scss/plugins/_bootstrap-switch.scss create mode 100644 build/scss/plugins/_fullcalendar.scss create mode 100644 build/scss/plugins/_icheck-bootstrap.scss create mode 100644 build/scss/plugins/_jqvmap.scss create mode 100644 build/scss/plugins/_mapael.scss create mode 100644 build/scss/plugins/_miscellaneous.scss create mode 100644 build/scss/plugins/_mixins.scss create mode 100644 build/scss/plugins/_pace.scss create mode 100644 build/scss/plugins/_select2.scss create mode 100644 build/scss/plugins/_sweetalert2.scss create mode 100644 build/scss/plugins/_toastr.scss create mode 100644 data_penduduk.sql create mode 100644 dist/css/adminlte.css create mode 100644 dist/css/adminlte.css.map create mode 100644 dist/css/adminlte.min.css create mode 100644 dist/css/adminlte.min.css.map create mode 100644 dist/css/alt/adminlte.components.css create mode 100644 dist/css/alt/adminlte.components.css.map create mode 100644 dist/css/alt/adminlte.components.min.css create mode 100644 dist/css/alt/adminlte.components.min.css.map create mode 100644 dist/css/alt/adminlte.core.css create mode 100644 dist/css/alt/adminlte.core.css.map create mode 100644 dist/css/alt/adminlte.core.min.css create mode 100644 dist/css/alt/adminlte.core.min.css.map create mode 100644 dist/css/alt/adminlte.extra-components.css create mode 100644 dist/css/alt/adminlte.extra-components.css.map create mode 100644 dist/css/alt/adminlte.extra-components.min.css create mode 100644 dist/css/alt/adminlte.extra-components.min.css.map create mode 100644 dist/css/alt/adminlte.pages.css create mode 100644 dist/css/alt/adminlte.pages.css.map create mode 100644 dist/css/alt/adminlte.pages.min.css create mode 100644 dist/css/alt/adminlte.pages.min.css.map create mode 100644 dist/css/alt/adminlte.plugins.css create mode 100644 dist/css/alt/adminlte.plugins.css.map create mode 100644 dist/css/alt/adminlte.plugins.min.css create mode 100644 dist/css/alt/adminlte.plugins.min.css.map create mode 100644 dist/img/admin.ico create mode 100644 dist/img/izin.png create mode 100644 dist/js/adminlte.js create mode 100644 dist/js/adminlte.js.map create mode 100644 dist/js/adminlte.min.js create mode 100644 dist/js/adminlte.min.js.map create mode 100644 dist/js/demo.js create mode 100644 dist/lookup.js create mode 100644 home/admin.php create mode 100644 home/kaur.php create mode 100644 inc/koneksi.php create mode 100644 index.php create mode 100644 login.php create mode 100644 logout.php create mode 100644 plugins/alert.js create mode 100644 plugins/bootstrap/js/bootstrap.bundle.js create mode 100644 plugins/bootstrap/js/bootstrap.bundle.js.map create mode 100644 plugins/bootstrap/js/bootstrap.bundle.min.js create mode 100644 plugins/bootstrap/js/bootstrap.bundle.min.js.map create mode 100644 plugins/bootstrap/js/bootstrap.js create mode 100644 plugins/bootstrap/js/bootstrap.js.map create mode 100644 plugins/bootstrap/js/bootstrap.min.js create mode 100644 plugins/bootstrap/js/bootstrap.min.js.map create mode 100644 plugins/datatables-bs4/css/dataTables.bootstrap4.css create mode 100644 plugins/datatables-bs4/css/dataTables.bootstrap4.min.css create mode 100644 plugins/datatables-bs4/js/dataTables.bootstrap4.js create mode 100644 plugins/datatables-bs4/js/dataTables.bootstrap4.min.js create mode 100644 plugins/datatables/jquery.dataTables.js create mode 100644 plugins/datatables/jquery.dataTables.min.js create mode 100644 plugins/fontawesome-free/css/all.css create mode 100644 plugins/fontawesome-free/css/all.min.css create mode 100644 plugins/fontawesome-free/css/brands.css create mode 100644 plugins/fontawesome-free/css/brands.min.css create mode 100644 plugins/fontawesome-free/css/fontawesome.css create mode 100644 plugins/fontawesome-free/css/fontawesome.min.css create mode 100644 plugins/fontawesome-free/css/regular.css create mode 100644 plugins/fontawesome-free/css/regular.min.css create mode 100644 plugins/fontawesome-free/css/solid.css create mode 100644 plugins/fontawesome-free/css/solid.min.css create mode 100644 plugins/fontawesome-free/css/svg-with-js.css create mode 100644 plugins/fontawesome-free/css/svg-with-js.min.css create mode 100644 plugins/fontawesome-free/css/v4-shims.css create mode 100644 plugins/fontawesome-free/css/v4-shims.min.css create mode 100644 plugins/fontawesome-free/webfonts/fa-brands-400.eot create mode 100644 plugins/fontawesome-free/webfonts/fa-brands-400.svg create mode 100644 plugins/fontawesome-free/webfonts/fa-brands-400.ttf create mode 100644 plugins/fontawesome-free/webfonts/fa-brands-400.woff create mode 100644 plugins/fontawesome-free/webfonts/fa-brands-400.woff2 create mode 100644 plugins/fontawesome-free/webfonts/fa-regular-400.eot create mode 100644 plugins/fontawesome-free/webfonts/fa-regular-400.svg create mode 100644 plugins/fontawesome-free/webfonts/fa-regular-400.ttf create mode 100644 plugins/fontawesome-free/webfonts/fa-regular-400.woff create mode 100644 plugins/fontawesome-free/webfonts/fa-regular-400.woff2 create mode 100644 plugins/fontawesome-free/webfonts/fa-solid-900.eot create mode 100644 plugins/fontawesome-free/webfonts/fa-solid-900.svg create mode 100644 plugins/fontawesome-free/webfonts/fa-solid-900.ttf create mode 100644 plugins/fontawesome-free/webfonts/fa-solid-900.woff create mode 100644 plugins/fontawesome-free/webfonts/fa-solid-900.woff2 create mode 100644 plugins/jquery-datatable/extensions/export/buttons.flash.min.js create mode 100644 plugins/jquery-datatable/extensions/export/buttons.html5.min.js create mode 100644 plugins/jquery-datatable/extensions/export/buttons.print.min.js create mode 100644 plugins/jquery-datatable/extensions/export/dataTables.buttons.min.js create mode 100644 plugins/jquery-datatable/extensions/export/jszip.min.js create mode 100644 plugins/jquery-datatable/extensions/export/pdfmake.min.js create mode 100644 plugins/jquery-datatable/extensions/export/vfs_fonts.js create mode 100644 plugins/jquery-datatable/jquery.dataTables.js create mode 100644 plugins/jquery-datatable/skin/bootstrap/css/dataTables.bootstrap.css create mode 100644 plugins/jquery-datatable/skin/bootstrap/css/dataTables.bootstrap.min.css create mode 100644 plugins/jquery-datatable/skin/bootstrap/images/Sorting icons.psd create mode 100644 plugins/jquery-datatable/skin/bootstrap/images/favicon.ico create mode 100644 plugins/jquery-datatable/skin/bootstrap/images/sort_asc.png create mode 100644 plugins/jquery-datatable/skin/bootstrap/images/sort_asc_disabled.png create mode 100644 plugins/jquery-datatable/skin/bootstrap/images/sort_both.png create mode 100644 plugins/jquery-datatable/skin/bootstrap/images/sort_desc.png create mode 100644 plugins/jquery-datatable/skin/bootstrap/images/sort_desc_disabled.png create mode 100644 plugins/jquery-datatable/skin/bootstrap/js/dataTables.bootstrap.js create mode 100644 plugins/jquery-datatable/skin/bootstrap/js/dataTables.bootstrap.min.js create mode 100644 plugins/jquery/core.js create mode 100644 plugins/jquery/jquery.js create mode 100644 plugins/jquery/jquery.min.js create mode 100644 plugins/jquery/jquery.min.map create mode 100644 plugins/jquery/jquery.slim.js create mode 100644 plugins/jquery/jquery.slim.min.js create mode 100644 plugins/jquery/jquery.slim.min.map create mode 100644 plugins/proses-ajax.php create mode 100644 plugins/select2-bootstrap4-theme/select2-bootstrap4.css create mode 100644 plugins/select2-bootstrap4-theme/select2-bootstrap4.min.css create mode 100644 plugins/select2/css/select2.css create mode 100644 plugins/select2/css/select2.min.css create mode 100644 plugins/select2/js/i18n/af.js create mode 100644 plugins/select2/js/i18n/ar.js create mode 100644 plugins/select2/js/i18n/az.js create mode 100644 plugins/select2/js/i18n/bg.js create mode 100644 plugins/select2/js/i18n/bn.js create mode 100644 plugins/select2/js/i18n/bs.js create mode 100644 plugins/select2/js/i18n/build.txt create mode 100644 plugins/select2/js/i18n/ca.js create mode 100644 plugins/select2/js/i18n/cs.js create mode 100644 plugins/select2/js/i18n/da.js create mode 100644 plugins/select2/js/i18n/de.js create mode 100644 plugins/select2/js/i18n/dsb.js create mode 100644 plugins/select2/js/i18n/el.js create mode 100644 plugins/select2/js/i18n/en.js create mode 100644 plugins/select2/js/i18n/es.js create mode 100644 plugins/select2/js/i18n/et.js create mode 100644 plugins/select2/js/i18n/eu.js create mode 100644 plugins/select2/js/i18n/fa.js create mode 100644 plugins/select2/js/i18n/fi.js create mode 100644 plugins/select2/js/i18n/fr.js create mode 100644 plugins/select2/js/i18n/gl.js create mode 100644 plugins/select2/js/i18n/he.js create mode 100644 plugins/select2/js/i18n/hi.js create mode 100644 plugins/select2/js/i18n/hr.js create mode 100644 plugins/select2/js/i18n/hsb.js create mode 100644 plugins/select2/js/i18n/hu.js create mode 100644 plugins/select2/js/i18n/hy.js create mode 100644 plugins/select2/js/i18n/id.js create mode 100644 plugins/select2/js/i18n/is.js create mode 100644 plugins/select2/js/i18n/it.js create mode 100644 plugins/select2/js/i18n/ja.js create mode 100644 plugins/select2/js/i18n/ka.js create mode 100644 plugins/select2/js/i18n/km.js create mode 100644 plugins/select2/js/i18n/ko.js create mode 100644 plugins/select2/js/i18n/lt.js create mode 100644 plugins/select2/js/i18n/lv.js create mode 100644 plugins/select2/js/i18n/mk.js create mode 100644 plugins/select2/js/i18n/ms.js create mode 100644 plugins/select2/js/i18n/nb.js create mode 100644 plugins/select2/js/i18n/ne.js create mode 100644 plugins/select2/js/i18n/nl.js create mode 100644 plugins/select2/js/i18n/pl.js create mode 100644 plugins/select2/js/i18n/ps.js create mode 100644 plugins/select2/js/i18n/pt-BR.js create mode 100644 plugins/select2/js/i18n/pt.js create mode 100644 plugins/select2/js/i18n/ro.js create mode 100644 plugins/select2/js/i18n/ru.js create mode 100644 plugins/select2/js/i18n/sk.js create mode 100644 plugins/select2/js/i18n/sl.js create mode 100644 plugins/select2/js/i18n/sq.js create mode 100644 plugins/select2/js/i18n/sr-Cyrl.js create mode 100644 plugins/select2/js/i18n/sr.js create mode 100644 plugins/select2/js/i18n/sv.js create mode 100644 plugins/select2/js/i18n/th.js create mode 100644 plugins/select2/js/i18n/tk.js create mode 100644 plugins/select2/js/i18n/tr.js create mode 100644 plugins/select2/js/i18n/uk.js create mode 100644 plugins/select2/js/i18n/vi.js create mode 100644 plugins/select2/js/i18n/zh-CN.js create mode 100644 plugins/select2/js/i18n/zh-TW.js create mode 100644 plugins/select2/js/select2.full.js create mode 100644 plugins/select2/js/select2.full.min.js create mode 100644 plugins/select2/js/select2.js create mode 100644 plugins/select2/js/select2.min.js create mode 100644 report/cetak_datang.php create mode 100644 report/cetak_domisili.php create mode 100644 report/cetak_lahir.php create mode 100644 report/cetak_mati.php create mode 100644 report/cetak_pindah.php create mode 100644 surat/suket_datang.php create mode 100644 surat/suket_domisili.php create mode 100644 surat/suket_lahir.php create mode 100644 surat/suket_mati.php create mode 100644 surat/suket_pindah.php diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e507c0d --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +# Archives +*.zip +*.tar.gz +*.rar + +# Logs +*.log + +# System +.DS_Store +Thumbs.db + +# Dependencies (if any in future) +node_modules/ +vendor/ diff --git a/admin/datang/add_datang.php b/admin/datang/add_datang.php new file mode 100644 index 0000000..0b5d410 --- /dev/null +++ b/admin/datang/add_datang.php @@ -0,0 +1,100 @@ +
+
+

+ Tambah Data

+
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+
+ + + Swal.fire({title: 'Tambah Data Berhasil',text: '',icon: 'success',confirmButtonText: 'OK' + }).then((result) => {if (result.value){ + window.location = 'index.php?page=data-datang'; + } + })"; + }else{ + echo ""; + }} + //selesai proses simpan data diff --git a/admin/datang/data_datang.php b/admin/datang/data_datang.php new file mode 100644 index 0000000..65d1079 --- /dev/null +++ b/admin/datang/data_datang.php @@ -0,0 +1,74 @@ +
+
+

+ Data Pendatang

+
+ +
+
+
+ + Tambah Data +
+
+ + + + + + + + + + + + + + + query("SELECT d.id_datang, d.nik, d.nama_datang, d.jekel, d.tgl_datang, p.nama from + tb_datang d inner join tb_pdd p on d.pelapor=p.id_pend"); + while ($data= $sql->fetch_assoc()) { + ?> + + + + + + + + + + + + + + +
NoNIKNamaJekelTanggalPelaporAksi
+ + + + + + + + + + + + + + + + + + +
+
+
+ \ No newline at end of file diff --git a/admin/datang/del_datang.php b/admin/datang/del_datang.php new file mode 100644 index 0000000..8412deb --- /dev/null +++ b/admin/datang/del_datang.php @@ -0,0 +1,24 @@ + + Swal.fire({title: 'Hapus Data Berhasil',text: '',icon: 'success',confirmButtonText: 'OK' + }).then((result) => { + if (result.value) { + window.location = 'index.php?page=data-datang'; + } + })"; + }else{ + echo ""; + } + } + diff --git a/admin/datang/edit_datang.php b/admin/datang/edit_datang.php new file mode 100644 index 0000000..2f6ef2a --- /dev/null +++ b/admin/datang/edit_datang.php @@ -0,0 +1,128 @@ + + +
+
+

+ Ubah Data

+
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ + +
+ +
+
+ + + Swal.fire({title: 'Ubah Data Berhasil',text: '',icon: 'success',confirmButtonText: 'OK' + }).then((result) => {if (result.value) + {window.location = 'index.php?page=data-datang'; + } + })"; + }else{ + echo ""; + }} diff --git a/admin/kartu/add_kartu.php b/admin/kartu/add_kartu.php new file mode 100644 index 0000000..7b093bc --- /dev/null +++ b/admin/kartu/add_kartu.php @@ -0,0 +1,100 @@ +
+
+

+ Tambah Data

+
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+
+ + + Swal.fire({title: 'Tambah Data Berhasil',text: '',icon: 'success',confirmButtonText: 'OK' + }).then((result) => {if (result.value){ + window.location = 'index.php?page=data-kartu'; + } + })"; + }else{ + echo ""; + }} + //selesai proses simpan data diff --git a/admin/kartu/anggota.php b/admin/kartu/anggota.php new file mode 100644 index 0000000..5d0051f --- /dev/null +++ b/admin/kartu/anggota.php @@ -0,0 +1,165 @@ + + + +
+
+

+ Anggota KK

+
+
+
+ + + + +
+ +
+ +
+
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ + + + + + + + + + + + + query("SELECT p.nik, p.nama, p.jekel, a.hubungan, a.id_anggota + from tb_pdd p inner join tb_anggota a on p.id_pend=a.id_pend where status='Ada' and id_kk=$karkel"); + while ($data= $sql->fetch_assoc()) { + ?> + + + + + + + + + + + + +
NIKNamaJekelHub KeluargaAksi
+ + + + + + + + + + + +
+
+
+
+ +
+
+ + + Swal.fire({title: 'Tambah Data Berhasil',text: '',icon: 'success',confirmButtonText: 'OK' + }).then((result) => {if (result.value){ + window.location = 'index.php?page=anggota&kode=".$_POST['id_kk']."'; + } + })"; + }else{ + echo ""; + }} + //selesai proses simpan data diff --git a/admin/kartu/data_kartu.php b/admin/kartu/data_kartu.php new file mode 100644 index 0000000..5bc0d70 --- /dev/null +++ b/admin/kartu/data_kartu.php @@ -0,0 +1,74 @@ +
+
+

+ Data KK

+
+ +
+
+ +
+ + + + + + + + + + + + + + query("select * from tb_kk"); + while ($data= $sql->fetch_assoc()) { + ?> + + + + + + + + + + + + + +
NoNO KKKepala KeluargaAlamatAnggota KKAksi
+ + + + + + + + RT + / RW + . + + + + + + + + + + + +
+
+
+ \ No newline at end of file diff --git a/admin/kartu/del_anggota.php b/admin/kartu/del_anggota.php new file mode 100644 index 0000000..367189d --- /dev/null +++ b/admin/kartu/del_anggota.php @@ -0,0 +1,26 @@ + + Swal.fire({title: 'Hapus Data Berhasil',text: '',icon: 'success',confirmButtonText: 'OK' + }).then((result) => { + if (result.value) { + window.location = 'index.php?page=data-kartu'; + } + })"; + }else{ + echo ""; + } + } + diff --git a/admin/kartu/del_kartu.php b/admin/kartu/del_kartu.php new file mode 100644 index 0000000..0335786 --- /dev/null +++ b/admin/kartu/del_kartu.php @@ -0,0 +1,24 @@ + + Swal.fire({title: 'Hapus Data Berhasil',text: '',icon: 'success',confirmButtonText: 'OK' + }).then((result) => { + if (result.value) { + window.location = 'index.php?page=data-kartu'; + } + })"; + }else{ + echo ""; + } + } + diff --git a/admin/kartu/edit_kartu.php b/admin/kartu/edit_kartu.php new file mode 100644 index 0000000..07303ce --- /dev/null +++ b/admin/kartu/edit_kartu.php @@ -0,0 +1,127 @@ + + +
+
+

+ Ubah Data

+
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ + +
+ +
+
+ + + + + Swal.fire({title: 'Ubah Data Berhasil',text: '',icon: 'success',confirmButtonText: 'OK' + }).then((result) => {if (result.value) + {window.location = 'index.php?page=data-kartu'; + } + })"; + }else{ + echo ""; + }} diff --git a/admin/lahir/add_lahir.php b/admin/lahir/add_lahir.php new file mode 100644 index 0000000..a1d121d --- /dev/null +++ b/admin/lahir/add_lahir.php @@ -0,0 +1,92 @@ +
+
+

+ Tambah Data

+
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+ + +
+ + +
+ + + Swal.fire({title: 'Tambah Data Berhasil',text: '',icon: 'success',confirmButtonText: 'OK' + }).then((result) => {if (result.value){ + window.location = 'index.php?page=data-lahir'; + } + })"; + }else{ + echo ""; + }} + //selesai proses simpan data diff --git a/admin/lahir/data_lahir.php b/admin/lahir/data_lahir.php new file mode 100644 index 0000000..cf9b69e --- /dev/null +++ b/admin/lahir/data_lahir.php @@ -0,0 +1,71 @@ +
+
+

+ Data Kelahiran

+
+ +
+
+ +
+ + + + + + + + + + + + + + query("SELECT l.id_lahir, l.nama, l.tgl_lh, l.jekel, k.no_kk, k.kepala from + tb_lahir l inner join tb_kk k on k.id_kk=l.id_kk"); + while ($data= $sql->fetch_assoc()) { + ?> + + + + + + + + + + + + + +
NoNamaTgl LahirJekelKeluargaAksi
+ + + + + + + + + - + + + + + + + + +
+
+
+ \ No newline at end of file diff --git a/admin/lahir/del_lahir.php b/admin/lahir/del_lahir.php new file mode 100644 index 0000000..738636f --- /dev/null +++ b/admin/lahir/del_lahir.php @@ -0,0 +1,24 @@ + + Swal.fire({title: 'Hapus Data Berhasil',text: '',icon: 'success',confirmButtonText: 'OK' + }).then((result) => { + if (result.value) { + window.location = 'index.php?page=data-lahir'; + } + })"; + }else{ + echo ""; + } + } + diff --git a/admin/lahir/edit_lahir.php b/admin/lahir/edit_lahir.php new file mode 100644 index 0000000..e2b8ddc --- /dev/null +++ b/admin/lahir/edit_lahir.php @@ -0,0 +1,118 @@ + + +
+
+

+ Ubah Data

+
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+
+ + + Swal.fire({title: 'Ubah Data Berhasil',text: '',icon: 'success',confirmButtonText: 'OK' + }).then((result) => {if (result.value) + {window.location = 'index.php?page=data-lahir'; + } + })"; + }else{ + echo ""; + }} diff --git a/admin/mendu/add_mendu.php b/admin/mendu/add_mendu.php new file mode 100644 index 0000000..0e203a6 --- /dev/null +++ b/admin/mendu/add_mendu.php @@ -0,0 +1,86 @@ +
+
+

+ Tambah Data

+
+
+
+ +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+
+ + + Swal.fire({title: 'Tambah Data Berhasil',text: '',icon: 'success',confirmButtonText: 'OK' + }).then((result) => {if (result.value){ + window.location = 'index.php?page=data-mendu'; + } + })"; + }else{ + echo ""; + }} + //selesai proses simpan data diff --git a/admin/mendu/data_mendu.php b/admin/mendu/data_mendu.php new file mode 100644 index 0000000..bca0beb --- /dev/null +++ b/admin/mendu/data_mendu.php @@ -0,0 +1,70 @@ +
+
+

+ Data Kematian

+
+ +
+
+ +
+ + + + + + + + + + + + + + query("SELECT p.id_pend, p.nik, p.nama, m.tgl_mendu, m.sebab, m.id_mendu from + tb_mendu m inner join tb_pdd p on p.id_pend=m.id_pdd"); + while ($data= $sql->fetch_assoc()) { + ?> + + + + + + + + + + + + + +
NoNIKNamaTanggalSebabAksi
+ + + + + + + + + + + + + + + + +
+
+
+ \ No newline at end of file diff --git a/admin/mendu/del_mendu.php b/admin/mendu/del_mendu.php new file mode 100644 index 0000000..72f8005 --- /dev/null +++ b/admin/mendu/del_mendu.php @@ -0,0 +1,24 @@ + + Swal.fire({title: 'Hapus Data Berhasil',text: '',icon: 'success',confirmButtonText: 'OK' + }).then((result) => { + if (result.value) { + window.location = 'index.php?page=data-mendu'; + } + })"; + }else{ + echo ""; + } + } + diff --git a/admin/mendu/edit_mendu.php b/admin/mendu/edit_mendu.php new file mode 100644 index 0000000..fb64ca2 --- /dev/null +++ b/admin/mendu/edit_mendu.php @@ -0,0 +1,83 @@ + + +
+
+

+ Ubah Data

+
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+
+ + + Swal.fire({title: 'Ubah Data Berhasil',text: '',icon: 'success',confirmButtonText: 'OK' + }).then((result) => {if (result.value) + {window.location = 'index.php?page=data-mendu'; + } + })"; + }else{ + echo ""; + }} diff --git a/admin/pend/add_pend.php b/admin/pend/add_pend.php new file mode 100644 index 0000000..384b815 --- /dev/null +++ b/admin/pend/add_pend.php @@ -0,0 +1,131 @@ +
+
+

+ Tambah Data

+
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+
+ + + Swal.fire({title: 'Tambah Data Berhasil',text: '',icon: 'success',confirmButtonText: 'OK' + }).then((result) => {if (result.value){ + window.location = 'index.php?page=data-pend'; + } + })"; + }else{ + echo ""; + }} + //selesai proses simpan data diff --git a/admin/pend/data_pend.php b/admin/pend/data_pend.php new file mode 100644 index 0000000..d422bf3 --- /dev/null +++ b/admin/pend/data_pend.php @@ -0,0 +1,84 @@ +
+
+

+ Data Penduduk

+
+ +
+
+ +
+ + + + + + + + + + + + + + + query("SELECT p.id_pend, p.nik, p.nama, p.jekel, p.desa, p.rt, p.rw, a.id_kk, k.no_kk, k.kepala from + tb_pdd p left join tb_anggota a on p.id_pend=a.id_pend + left join tb_kk k on a.id_kk=k.id_kk where status='Ada'"); + while ($data= $sql->fetch_assoc()) { + ?> + + + + + + + + + + + + + + + +
NoNIKNamaJKAlamatNo KKAksi
+ + + + + + + + + + RT + / RW + . + + - + + + + + + + + + + + +
+
+
+ \ No newline at end of file diff --git a/admin/pend/del_pend.php b/admin/pend/del_pend.php new file mode 100644 index 0000000..eb9f45c --- /dev/null +++ b/admin/pend/del_pend.php @@ -0,0 +1,24 @@ + + Swal.fire({title: 'Hapus Data Berhasil',text: '',icon: 'success',confirmButtonText: 'OK' + }).then((result) => { + if (result.value) { + window.location = 'index.php?page=data-pend'; + } + })"; + }else{ + echo ""; + } + } + diff --git a/admin/pend/edit_pend.php b/admin/pend/edit_pend.php new file mode 100644 index 0000000..150f7e1 --- /dev/null +++ b/admin/pend/edit_pend.php @@ -0,0 +1,171 @@ + + +
+
+

+ Ubah Data

+
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+
+ + + Swal.fire({title: 'Ubah Data Berhasil',text: '',icon: 'success',confirmButtonText: 'OK' + }).then((result) => {if (result.value) + {window.location = 'index.php?page=data-pend'; + } + })"; + }else{ + echo ""; + }} diff --git a/admin/pend/view_pend.php b/admin/pend/view_pend.php new file mode 100644 index 0000000..d1880b3 --- /dev/null +++ b/admin/pend/view_pend.php @@ -0,0 +1,97 @@ + + +
+
+

+ Detail Penduduk

+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ NIK + : + +
+ Nama + : + +
+ TTL + : + + / + +
+ Jenis Kelamin + : + +
+ Alamat + : + , RT + / RW + +
+ Agama + : + +
+ Status Kawin + : + +
+ Pekerjaan + : + +
+ +
+
\ No newline at end of file diff --git a/admin/pengguna/add_pengguna.php b/admin/pengguna/add_pengguna.php new file mode 100644 index 0000000..f5f258d --- /dev/null +++ b/admin/pengguna/add_pengguna.php @@ -0,0 +1,76 @@ +
+
+

+ Tambah Data

+
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+
+ + + Swal.fire({title: 'Tambah Data Berhasil',text: '',icon: 'success',confirmButtonText: 'OK' + }).then((result) => {if (result.value){ + window.location = 'index.php?page=data-pengguna'; + } + })"; + }else{ + echo ""; + }} + //selesai proses simpan data diff --git a/admin/pengguna/data_pengguna.php b/admin/pengguna/data_pengguna.php new file mode 100644 index 0000000..cfe431b --- /dev/null +++ b/admin/pengguna/data_pengguna.php @@ -0,0 +1,65 @@ +
+
+

+ Data User

+
+ +
+
+ +
+ + + + + + + + + + + + + query("select * from tb_pengguna"); + while ($data= $sql->fetch_assoc()) { + ?> + + + + + + + + + + + + +
NoNama UserUsernameLevelAksi
+ + + + + + + + + + + + + + +
+
+
+ \ No newline at end of file diff --git a/admin/pengguna/del_pengguna.php b/admin/pengguna/del_pengguna.php new file mode 100644 index 0000000..c8cc182 --- /dev/null +++ b/admin/pengguna/del_pengguna.php @@ -0,0 +1,24 @@ + + Swal.fire({title: 'Hapus Data Berhasil',text: '',icon: 'success',confirmButtonText: 'OK' + }).then((result) => { + if (result.value) { + window.location = 'index.php?page=data-pengguna'; + } + })"; + }else{ + echo ""; + } + } + diff --git a/admin/pengguna/edit_pengguna.php b/admin/pengguna/edit_pengguna.php new file mode 100644 index 0000000..bde11f3 --- /dev/null +++ b/admin/pengguna/edit_pengguna.php @@ -0,0 +1,118 @@ + + +
+
+

+ Ubah Data

+
+
+
+ + + +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ + Lihat Password +
+
+ +
+ +
+ +
+
+ +
+ +
+
+ + + + + Swal.fire({title: 'Ubah Data Berhasil',text: '',icon: 'success',confirmButtonText: 'OK' + }).then((result) => {if (result.value) + {window.location = 'index.php?page=data-pengguna'; + } + })"; + }else{ + echo ""; + }} +?> + + \ No newline at end of file diff --git a/admin/pindah/add_pindah.php b/admin/pindah/add_pindah.php new file mode 100644 index 0000000..c9cd9b3 --- /dev/null +++ b/admin/pindah/add_pindah.php @@ -0,0 +1,86 @@ +
+
+

+ Tambah Data

+
+
+
+ +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+
+ + + Swal.fire({title: 'Tambah Data Berhasil',text: '',icon: 'success',confirmButtonText: 'OK' + }).then((result) => {if (result.value){ + window.location = 'index.php?page=data-pindah'; + } + })"; + }else{ + echo ""; + }} + //selesai proses simpan data diff --git a/admin/pindah/data_pindah.php b/admin/pindah/data_pindah.php new file mode 100644 index 0000000..85fe22e --- /dev/null +++ b/admin/pindah/data_pindah.php @@ -0,0 +1,70 @@ +
+
+

+ Data Pindah

+
+ +
+
+ +
+ + + + + + + + + + + + + + query("SELECT p.id_pend, p.nik, p.nama, d.tgl_pindah, d.alasan, d.id_pindah from + tb_pindah d inner join tb_pdd p on p.id_pend=d.id_pdd"); + while ($data= $sql->fetch_assoc()) { + ?> + + + + + + + + + + + + + +
NoNIKNamaTanggalAlasanAksi
+ + + + + + + + + + + + + + + + +
+
+
+ \ No newline at end of file diff --git a/admin/pindah/del_pindah.php b/admin/pindah/del_pindah.php new file mode 100644 index 0000000..2c068dc --- /dev/null +++ b/admin/pindah/del_pindah.php @@ -0,0 +1,24 @@ + + Swal.fire({title: 'Hapus Data Berhasil',text: '',icon: 'success',confirmButtonText: 'OK' + }).then((result) => { + if (result.value) { + window.location = 'index.php?page=data-pindah'; + } + })"; + }else{ + echo ""; + } + } + diff --git a/admin/pindah/edit_pindah.php b/admin/pindah/edit_pindah.php new file mode 100644 index 0000000..2a17a5c --- /dev/null +++ b/admin/pindah/edit_pindah.php @@ -0,0 +1,83 @@ + + +
+
+

+ Ubah Data

+
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+
+ + + Swal.fire({title: 'Ubah Data Berhasil',text: '',icon: 'success',confirmButtonText: 'OK' + }).then((result) => {if (result.value) + {window.location = 'index.php?page=data-pindah'; + } + })"; + }else{ + echo ""; + }} diff --git a/build/config/postcss.config.js b/build/config/postcss.config.js new file mode 100644 index 0000000..157291f --- /dev/null +++ b/build/config/postcss.config.js @@ -0,0 +1,14 @@ +'use strict' + +module.exports = (ctx) => ({ + map: ctx.file.dirname.includes('examples') ? false : { + inline: false, + annotation: true, + sourcesContent: true + }, + plugins: { + autoprefixer: { + cascade: false + } + } +}) diff --git a/build/config/rollup.config.js b/build/config/rollup.config.js new file mode 100644 index 0000000..1f08394 --- /dev/null +++ b/build/config/rollup.config.js @@ -0,0 +1,29 @@ +import babel from 'rollup-plugin-babel' + +const pkg = require('../../package') +const year = new Date().getFullYear() + +const globals = { + jquery: 'jQuery' +} + +export default { + input : 'build/js/AdminLTE.js', + output : { + banner: `/*! + * AdminLTE v${pkg.version} (${pkg.homepage}) + * Copyright 2014-${year} ${pkg.author} + * Licensed under MIT (https://github.com/ColorlibHQ/AdminLTE/blob/master/LICENSE) + */`, + file : 'dist/js/adminlte.js', + format: 'umd', + globals, + name : 'adminlte' + }, + plugins: [ + babel({ + exclude: 'node_modules/**', + externalHelpers: true + }) + ] +} diff --git a/build/js/.jscsrc b/build/js/.jscsrc new file mode 100644 index 0000000..a2ec95b --- /dev/null +++ b/build/js/.jscsrc @@ -0,0 +1,44 @@ +{ + "esnext": true, + "verbose": true, + "disallowEmptyBlocks": true, + "disallowKeywords": ["with"], + "disallowMixedSpacesAndTabs": true, + "disallowMultipleLineStrings": true, + "disallowMultipleVarDecl": true, + "disallowQuotedKeysInObjects": "allButReserved", + "disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"], + "disallowSpaceBeforeBinaryOperators": [","], + "disallowSpaceBeforePostfixUnaryOperators": ["++", "--"], + "disallowSpacesInFunctionDeclaration": { "beforeOpeningRoundBrace": true }, + "disallowSpacesInNamedFunctionExpression": { "beforeOpeningRoundBrace": true }, + "disallowSpacesInsideArrayBrackets": true, + "disallowSpacesInsideParentheses": true, + "disallowTrailingComma": true, + "disallowTrailingWhitespace": true, + "requireCamelCaseOrUpperCaseIdentifiers": true, + "requireCapitalizedConstructors": true, + "requireCommaBeforeLineBreak": true, + "requireDollarBeforejQueryAssignment": true, + "requireDotNotation": true, + "requireLineFeedAtFileEnd": true, + "requirePaddingNewLinesAfterUseStrict": true, + "requirePaddingNewLinesBeforeExport": true, + "requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", "<", ">=", "<="], + "requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch"], + "requireSpaceAfterLineComment": true, + "requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", "<", ">=", "<="], + "requireSpaceBetweenArguments": true, + "requireSpacesInAnonymousFunctionExpression": { "beforeOpeningCurlyBrace": true, "beforeOpeningRoundBrace": true, "allExcept": ["shorthand"] }, + "requireSpacesInConditionalExpression": true, + "requireSpacesInForStatement": true, + "requireSpacesInFunctionDeclaration": { "beforeOpeningCurlyBrace": true }, + "requireSpacesInFunctionExpression": { "beforeOpeningCurlyBrace": true }, + "requireSpacesInNamedFunctionExpression": { "beforeOpeningCurlyBrace": true }, + "requireSpacesInsideObjectBrackets": "allButNested", + "validateAlignedFunctionParameters": true, + "validateIndentation": 2, + "validateLineBreaks": "LF", + "validateNewlineAfterArrayElements": true, + "validateQuoteMarks": "'" +} diff --git a/build/js/AdminLTE.js b/build/js/AdminLTE.js new file mode 100644 index 0000000..3658c13 --- /dev/null +++ b/build/js/AdminLTE.js @@ -0,0 +1,23 @@ +import ControlSidebar from './ControlSidebar' +import Layout from './Layout' +import PushMenu from './PushMenu' +import Treeview from './Treeview' +import DirectChat from './DirectChat' +import TodoList from './TodoList' +import CardWidget from './CardWidget' +import CardRefresh from './CardRefresh' +import Dropdown from './Dropdown' +import Toasts from './Toasts' + +export { + ControlSidebar, + Layout, + PushMenu, + Treeview, + DirectChat, + TodoList, + CardWidget, + CardRefresh, + Dropdown, + Toasts +} diff --git a/build/js/CardRefresh.js b/build/js/CardRefresh.js new file mode 100644 index 0000000..fb27223 --- /dev/null +++ b/build/js/CardRefresh.js @@ -0,0 +1,164 @@ +/** + * -------------------------------------------- + * AdminLTE CardRefresh.js + * License MIT + * -------------------------------------------- + */ + +const CardRefresh = (($) => { + /** + * Constants + * ==================================================== + */ + + const NAME = 'CardRefresh' + const DATA_KEY = 'lte.cardrefresh' + const EVENT_KEY = `.${DATA_KEY}` + const JQUERY_NO_CONFLICT = $.fn[NAME] + + const Event = { + LOADED: `loaded${EVENT_KEY}`, + OVERLAY_ADDED: `overlay.added${EVENT_KEY}`, + OVERLAY_REMOVED: `overlay.removed${EVENT_KEY}`, + } + + const ClassName = { + CARD: 'card', + } + + const Selector = { + CARD: `.${ClassName.CARD}`, + DATA_REFRESH: '[data-card-widget="card-refresh"]', + } + + const Default = { + source: '', + sourceSelector: '', + params: {}, + trigger: Selector.DATA_REFRESH, + content: '.card-body', + loadInContent: true, + loadOnInit: true, + responseType: '', + overlayTemplate: '
', + onLoadStart: function () { + }, + onLoadDone: function (response) { + return response; + } + } + + class CardRefresh { + constructor(element, settings) { + this._element = element + this._parent = element.parents(Selector.CARD).first() + this._settings = $.extend({}, Default, settings) + this._overlay = $(this._settings.overlayTemplate) + + if (element.hasClass(ClassName.CARD)) { + this._parent = element + } + + if (this._settings.source === '') { + throw new Error('Source url was not defined. Please specify a url in your CardRefresh source option.'); + } + + this._init(); + + if (this._settings.loadOnInit) { + this.load(); + } + } + + load() { + this._addOverlay() + this._settings.onLoadStart.call($(this)) + + $.get(this._settings.source, this._settings.params, function (response) { + if (this._settings.loadInContent) { + if (this._settings.sourceSelector != '') { + response = $(response).find(this._settings.sourceSelector).html() + } + + this._parent.find(this._settings.content).html(response) + } + + this._settings.onLoadDone.call($(this), response) + this._removeOverlay(); + }.bind(this), this._settings.responseType !== '' && this._settings.responseType) + + const loadedEvent = $.Event(Event.LOADED) + $(this._element).trigger(loadedEvent) + } + + _addOverlay() { + this._parent.append(this._overlay) + + const overlayAddedEvent = $.Event(Event.OVERLAY_ADDED) + $(this._element).trigger(overlayAddedEvent) + }; + + _removeOverlay() { + this._parent.find(this._overlay).remove() + + const overlayRemovedEvent = $.Event(Event.OVERLAY_REMOVED) + $(this._element).trigger(overlayRemovedEvent) + }; + + + // Private + + _init(card) { + $(this).find(this._settings.trigger).on('click', () => { + this.load() + }) + } + + // Static + + static _jQueryInterface(config) { + let data = $(this).data(DATA_KEY) + const _options = $.extend({}, Default, $(this).data()) + + if (!data) { + data = new CardRefresh($(this), _options) + $(this).data(DATA_KEY, typeof config === 'string' ? data: config) + } + + if (typeof config === 'string' && config.match(/load/)) { + data[config]() + } else if (typeof config === 'object') { + data._init($(this)) + } + } + } + + /** + * Data API + * ==================================================== + */ + + $(document).on('click', Selector.DATA_REFRESH, function (event) { + if (event) { + event.preventDefault() + } + + CardRefresh._jQueryInterface.call($(this), 'load') + }) + + /** + * jQuery API + * ==================================================== + */ + + $.fn[NAME] = CardRefresh._jQueryInterface + $.fn[NAME].Constructor = CardRefresh + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT + return CardRefresh._jQueryInterface + } + + return CardRefresh +})(jQuery) + +export default CardRefresh diff --git a/build/js/CardWidget.js b/build/js/CardWidget.js new file mode 100644 index 0000000..7b33683 --- /dev/null +++ b/build/js/CardWidget.js @@ -0,0 +1,251 @@ +/** + * -------------------------------------------- + * AdminLTE CardWidget.js + * License MIT + * -------------------------------------------- + */ + +const CardWidget = (($) => { + /** + * Constants + * ==================================================== + */ + + const NAME = 'CardWidget' + const DATA_KEY = 'lte.cardwidget' + const EVENT_KEY = `.${DATA_KEY}` + const JQUERY_NO_CONFLICT = $.fn[NAME] + + const Event = { + EXPANDED: `expanded${EVENT_KEY}`, + COLLAPSED: `collapsed${EVENT_KEY}`, + MAXIMIZED: `maximized${EVENT_KEY}`, + MINIMIZED: `minimized${EVENT_KEY}`, + REMOVED: `removed${EVENT_KEY}` + } + + const ClassName = { + CARD: 'card', + COLLAPSED: 'collapsed-card', + WAS_COLLAPSED: 'was-collapsed', + MAXIMIZED: 'maximized-card', + } + + const Selector = { + DATA_REMOVE: '[data-card-widget="remove"]', + DATA_COLLAPSE: '[data-card-widget="collapse"]', + DATA_MAXIMIZE: '[data-card-widget="maximize"]', + CARD: `.${ClassName.CARD}`, + CARD_HEADER: '.card-header', + CARD_BODY: '.card-body', + CARD_FOOTER: '.card-footer', + COLLAPSED: `.${ClassName.COLLAPSED}`, + } + + const Default = { + animationSpeed: 'normal', + collapseTrigger: Selector.DATA_COLLAPSE, + removeTrigger: Selector.DATA_REMOVE, + maximizeTrigger: Selector.DATA_MAXIMIZE, + collapseIcon: 'fa-minus', + expandIcon: 'fa-plus', + maximizeIcon: 'fa-expand', + minimizeIcon: 'fa-compress', + } + + class CardWidget { + constructor(element, settings) { + this._element = element + this._parent = element.parents(Selector.CARD).first() + + if (element.hasClass(ClassName.CARD)) { + this._parent = element + } + + this._settings = $.extend({}, Default, settings) + } + + collapse() { + this._parent.children(`${Selector.CARD_BODY}, ${Selector.CARD_FOOTER}`) + .slideUp(this._settings.animationSpeed, () => { + this._parent.addClass(ClassName.COLLAPSED) + }) + + this._parent.find('> ' + Selector.CARD_HEADER + ' ' + this._settings.collapseTrigger + ' .' + this._settings.collapseIcon) + .addClass(this._settings.expandIcon) + .removeClass(this._settings.collapseIcon) + + const collapsed = $.Event(Event.COLLAPSED) + + this._element.trigger(collapsed, this._parent) + } + + expand() { + this._parent.children(`${Selector.CARD_BODY}, ${Selector.CARD_FOOTER}`) + .slideDown(this._settings.animationSpeed, () => { + this._parent.removeClass(ClassName.COLLAPSED) + }) + + this._parent.find('> ' + Selector.CARD_HEADER + ' ' + this._settings.collapseTrigger + ' .' + this._settings.expandIcon) + .addClass(this._settings.collapseIcon) + .removeClass(this._settings.expandIcon) + + const expanded = $.Event(Event.EXPANDED) + + this._element.trigger(expanded, this._parent) + } + + remove() { + this._parent.slideUp() + + const removed = $.Event(Event.REMOVED) + + this._element.trigger(removed, this._parent) + } + + toggle() { + if (this._parent.hasClass(ClassName.COLLAPSED)) { + this.expand() + return + } + + this.collapse() + } + + maximize() { + this._parent.find(this._settings.maximizeTrigger + ' .' + this._settings.maximizeIcon) + .addClass(this._settings.minimizeIcon) + .removeClass(this._settings.maximizeIcon) + this._parent.css({ + 'height': this._parent.height(), + 'width': this._parent.width(), + 'transition': 'all .15s' + }).delay(150).queue(function(){ + $(this).addClass(ClassName.MAXIMIZED) + $('html').addClass(ClassName.MAXIMIZED) + if ($(this).hasClass(ClassName.COLLAPSED)) { + $(this).addClass(ClassName.WAS_COLLAPSED) + } + $(this).dequeue() + }) + + const maximized = $.Event(Event.MAXIMIZED) + + this._element.trigger(maximized, this._parent) + } + + minimize() { + this._parent.find(this._settings.maximizeTrigger + ' .' + this._settings.minimizeIcon) + .addClass(this._settings.maximizeIcon) + .removeClass(this._settings.minimizeIcon) + this._parent.css('cssText', 'height:' + this._parent[0].style.height + ' !important;' + + 'width:' + this._parent[0].style.width + ' !important; transition: all .15s;' + ).delay(10).queue(function(){ + $(this).removeClass(ClassName.MAXIMIZED) + $('html').removeClass(ClassName.MAXIMIZED) + $(this).css({ + 'height': 'inherit', + 'width': 'inherit' + }) + if ($(this).hasClass(ClassName.WAS_COLLAPSED)) { + $(this).removeClass(ClassName.WAS_COLLAPSED) + } + $(this).dequeue() + }) + + const MINIMIZED = $.Event(Event.MINIMIZED) + + this._element.trigger(MINIMIZED, this._parent) + } + + toggleMaximize() { + if (this._parent.hasClass(ClassName.MAXIMIZED)) { + this.minimize() + return + } + + this.maximize() + } + + // Private + + _init(card) { + this._parent = card + + $(this).find(this._settings.collapseTrigger).click(() => { + this.toggle() + }) + + $(this).find(this._settings.maximizeTrigger).click(() => { + this.toggleMaximize() + }) + + $(this).find(this._settings.removeTrigger).click(() => { + this.remove() + }) + } + + // Static + + static _jQueryInterface(config) { + let data = $(this).data(DATA_KEY) + const _options = $.extend({}, Default, $(this).data()) + + if (!data) { + data = new CardWidget($(this), _options) + $(this).data(DATA_KEY, typeof config === 'string' ? data: config) + } + + if (typeof config === 'string' && config.match(/collapse|expand|remove|toggle|maximize|minimize|toggleMaximize/)) { + data[config]() + } else if (typeof config === 'object') { + data._init($(this)) + } + } + } + + /** + * Data API + * ==================================================== + */ + + $(document).on('click', Selector.DATA_COLLAPSE, function (event) { + if (event) { + event.preventDefault() + } + + CardWidget._jQueryInterface.call($(this), 'toggle') + }) + + $(document).on('click', Selector.DATA_REMOVE, function (event) { + if (event) { + event.preventDefault() + } + + CardWidget._jQueryInterface.call($(this), 'remove') + }) + + $(document).on('click', Selector.DATA_MAXIMIZE, function (event) { + if (event) { + event.preventDefault() + } + + CardWidget._jQueryInterface.call($(this), 'toggleMaximize') + }) + + /** + * jQuery API + * ==================================================== + */ + + $.fn[NAME] = CardWidget._jQueryInterface + $.fn[NAME].Constructor = CardWidget + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT + return CardWidget._jQueryInterface + } + + return CardWidget +})(jQuery) + +export default CardWidget diff --git a/build/js/ControlSidebar.js b/build/js/ControlSidebar.js new file mode 100644 index 0000000..a330885 --- /dev/null +++ b/build/js/ControlSidebar.js @@ -0,0 +1,292 @@ +/** + * -------------------------------------------- + * AdminLTE ControlSidebar.js + * License MIT + * -------------------------------------------- + */ + +const ControlSidebar = (($) => { + /** + * Constants + * ==================================================== + */ + + const NAME = 'ControlSidebar' + const DATA_KEY = 'lte.controlsidebar' + const EVENT_KEY = `.${DATA_KEY}` + const JQUERY_NO_CONFLICT = $.fn[NAME] + const DATA_API_KEY = '.data-api' + + const Event = { + COLLAPSED: `collapsed${EVENT_KEY}`, + EXPANDED: `expanded${EVENT_KEY}`, + } + + const Selector = { + CONTROL_SIDEBAR: '.control-sidebar', + CONTROL_SIDEBAR_CONTENT: '.control-sidebar-content', + DATA_TOGGLE: '[data-widget="control-sidebar"]', + CONTENT: '.content-wrapper', + HEADER: '.main-header', + FOOTER: '.main-footer', + } + + const ClassName = { + CONTROL_SIDEBAR_ANIMATE: 'control-sidebar-animate', + CONTROL_SIDEBAR_OPEN: 'control-sidebar-open', + CONTROL_SIDEBAR_SLIDE: 'control-sidebar-slide-open', + LAYOUT_FIXED: 'layout-fixed', + NAVBAR_FIXED: 'layout-navbar-fixed', + NAVBAR_SM_FIXED: 'layout-sm-navbar-fixed', + NAVBAR_MD_FIXED: 'layout-md-navbar-fixed', + NAVBAR_LG_FIXED: 'layout-lg-navbar-fixed', + NAVBAR_XL_FIXED: 'layout-xl-navbar-fixed', + FOOTER_FIXED: 'layout-footer-fixed', + FOOTER_SM_FIXED: 'layout-sm-footer-fixed', + FOOTER_MD_FIXED: 'layout-md-footer-fixed', + FOOTER_LG_FIXED: 'layout-lg-footer-fixed', + FOOTER_XL_FIXED: 'layout-xl-footer-fixed', + } + + const Default = { + controlsidebarSlide: true, + scrollbarTheme : 'os-theme-light', + scrollbarAutoHide: 'l', + } + + /** + * Class Definition + * ==================================================== + */ + + class ControlSidebar { + constructor(element, config) { + this._element = element + this._config = config + + this._init() + } + + // Public + + collapse() { + // Show the control sidebar + if (this._config.controlsidebarSlide) { + $('html').addClass(ClassName.CONTROL_SIDEBAR_ANIMATE) + $('body').removeClass(ClassName.CONTROL_SIDEBAR_SLIDE).delay(300).queue(function(){ + $(Selector.CONTROL_SIDEBAR).hide() + $('html').removeClass(ClassName.CONTROL_SIDEBAR_ANIMATE) + $(this).dequeue() + }) + } else { + $('body').removeClass(ClassName.CONTROL_SIDEBAR_OPEN) + } + + const collapsedEvent = $.Event(Event.COLLAPSED) + $(this._element).trigger(collapsedEvent) + } + + show() { + // Collapse the control sidebar + if (this._config.controlsidebarSlide) { + $('html').addClass(ClassName.CONTROL_SIDEBAR_ANIMATE) + $(Selector.CONTROL_SIDEBAR).show().delay(10).queue(function(){ + $('body').addClass(ClassName.CONTROL_SIDEBAR_SLIDE).delay(300).queue(function(){ + $('html').removeClass(ClassName.CONTROL_SIDEBAR_ANIMATE) + $(this).dequeue() + }) + $(this).dequeue() + }) + } else { + $('body').addClass(ClassName.CONTROL_SIDEBAR_OPEN) + } + + const expandedEvent = $.Event(Event.EXPANDED) + $(this._element).trigger(expandedEvent) + } + + toggle() { + const shouldClose = $('body').hasClass(ClassName.CONTROL_SIDEBAR_OPEN) || $('body') + .hasClass(ClassName.CONTROL_SIDEBAR_SLIDE) + if (shouldClose) { + // Close the control sidebar + this.collapse() + } else { + // Open the control sidebar + this.show() + } + } + + // Private + + _init() { + this._fixHeight() + this._fixScrollHeight() + + $(window).resize(() => { + this._fixHeight() + this._fixScrollHeight() + }) + + $(window).scroll(() => { + if ($('body').hasClass(ClassName.CONTROL_SIDEBAR_OPEN) || $('body').hasClass(ClassName.CONTROL_SIDEBAR_SLIDE)) { + this._fixScrollHeight() + } + }) + } + + _fixScrollHeight() { + const heights = { + scroll: $(document).height(), + window: $(window).height(), + header: $(Selector.HEADER).outerHeight(), + footer: $(Selector.FOOTER).outerHeight(), + } + const positions = { + bottom: Math.abs((heights.window + $(window).scrollTop()) - heights.scroll), + top: $(window).scrollTop(), + } + + let navbarFixed = false; + let footerFixed = false; + + if ($('body').hasClass(ClassName.LAYOUT_FIXED)) { + if ( + $('body').hasClass(ClassName.NAVBAR_FIXED) + || $('body').hasClass(ClassName.NAVBAR_SM_FIXED) + || $('body').hasClass(ClassName.NAVBAR_MD_FIXED) + || $('body').hasClass(ClassName.NAVBAR_LG_FIXED) + || $('body').hasClass(ClassName.NAVBAR_XL_FIXED) + ) { + if ($(Selector.HEADER).css("position") === "fixed") { + navbarFixed = true; + } + } + if ( + $('body').hasClass(ClassName.FOOTER_FIXED) + || $('body').hasClass(ClassName.FOOTER_SM_FIXED) + || $('body').hasClass(ClassName.FOOTER_MD_FIXED) + || $('body').hasClass(ClassName.FOOTER_LG_FIXED) + || $('body').hasClass(ClassName.FOOTER_XL_FIXED) + ) { + if ($(Selector.FOOTER).css("position") === "fixed") { + footerFixed = true; + } + } + + if (positions.top === 0 && positions.bottom === 0) { + $(Selector.CONTROL_SIDEBAR).css('bottom', heights.footer); + $(Selector.CONTROL_SIDEBAR).css('top', heights.header); + $(Selector.CONTROL_SIDEBAR + ', ' + Selector.CONTROL_SIDEBAR + ' ' + Selector.CONTROL_SIDEBAR_CONTENT).css('height', heights.window - (heights.header + heights.footer)) + } else if (positions.bottom <= heights.footer) { + if (footerFixed === false) { + $(Selector.CONTROL_SIDEBAR).css('bottom', heights.footer - positions.bottom); + $(Selector.CONTROL_SIDEBAR + ', ' + Selector.CONTROL_SIDEBAR + ' ' + Selector.CONTROL_SIDEBAR_CONTENT).css('height', heights.window - (heights.footer - positions.bottom)) + } else { + $(Selector.CONTROL_SIDEBAR).css('bottom', heights.footer); + } + } else if (positions.top <= heights.header) { + if (navbarFixed === false) { + $(Selector.CONTROL_SIDEBAR).css('top', heights.header - positions.top); + $(Selector.CONTROL_SIDEBAR + ', ' + Selector.CONTROL_SIDEBAR + ' ' + Selector.CONTROL_SIDEBAR_CONTENT).css('height', heights.window - (heights.header - positions.top)) + } else { + $(Selector.CONTROL_SIDEBAR).css('top', heights.header); + } + } else { + if (navbarFixed === false) { + $(Selector.CONTROL_SIDEBAR).css('top', 0); + $(Selector.CONTROL_SIDEBAR + ', ' + Selector.CONTROL_SIDEBAR + ' ' + Selector.CONTROL_SIDEBAR_CONTENT).css('height', heights.window) + } else { + $(Selector.CONTROL_SIDEBAR).css('top', heights.header); + } + } + } + } + + _fixHeight() { + const heights = { + window: $(window).height(), + header: $(Selector.HEADER).outerHeight(), + footer: $(Selector.FOOTER).outerHeight(), + } + + if ($('body').hasClass(ClassName.LAYOUT_FIXED)) { + let sidebarHeight = heights.window - heights.header; + + if ( + $('body').hasClass(ClassName.FOOTER_FIXED) + || $('body').hasClass(ClassName.FOOTER_SM_FIXED) + || $('body').hasClass(ClassName.FOOTER_MD_FIXED) + || $('body').hasClass(ClassName.FOOTER_LG_FIXED) + || $('body').hasClass(ClassName.FOOTER_XL_FIXED) + ) { + if ($(Selector.FOOTER).css("position") === "fixed") { + sidebarHeight = heights.window - heights.header - heights.footer; + } + } + + $(Selector.CONTROL_SIDEBAR + ' ' + Selector.CONTROL_SIDEBAR_CONTENT).css('height', sidebarHeight) + + if (typeof $.fn.overlayScrollbars !== 'undefined') { + $(Selector.CONTROL_SIDEBAR + ' ' + Selector.CONTROL_SIDEBAR_CONTENT).overlayScrollbars({ + className : this._config.scrollbarTheme, + sizeAutoCapable : true, + scrollbars : { + autoHide: this._config.scrollbarAutoHide, + clickScrolling : true + } + }) + } + } + } + + + // Static + + static _jQueryInterface(operation) { + return this.each(function () { + let data = $(this).data(DATA_KEY) + const _options = $.extend({}, Default, $(this).data()) + + if (!data) { + data = new ControlSidebar(this, _options) + $(this).data(DATA_KEY, data) + } + + if (data[operation] === 'undefined') { + throw new Error(`${operation} is not a function`) + } + + data[operation]() + }) + } + } + + /** + * + * Data Api implementation + * ==================================================== + */ + $(document).on('click', Selector.DATA_TOGGLE, function (event) { + event.preventDefault() + + ControlSidebar._jQueryInterface.call($(this), 'toggle') + }) + + /** + * jQuery API + * ==================================================== + */ + + $.fn[NAME] = ControlSidebar._jQueryInterface + $.fn[NAME].Constructor = ControlSidebar + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT + return ControlSidebar._jQueryInterface + } + + return ControlSidebar +})(jQuery) + +export default ControlSidebar + diff --git a/build/js/DirectChat.js b/build/js/DirectChat.js new file mode 100644 index 0000000..c211bc7 --- /dev/null +++ b/build/js/DirectChat.js @@ -0,0 +1,92 @@ +/** + * -------------------------------------------- + * AdminLTE DirectChat.js + * License MIT + * -------------------------------------------- + */ + +const DirectChat = (($) => { + /** + * Constants + * ==================================================== + */ + + const NAME = 'DirectChat' + const DATA_KEY = 'lte.directchat' + const EVENT_KEY = `.${DATA_KEY}` + const JQUERY_NO_CONFLICT = $.fn[NAME] + const DATA_API_KEY = '.data-api' + + const Event = { + TOGGLED: `toggled{EVENT_KEY}` + } + + const Selector = { + DATA_TOGGLE: '[data-widget="chat-pane-toggle"]', + DIRECT_CHAT: '.direct-chat' + }; + + const ClassName = { + DIRECT_CHAT_OPEN: 'direct-chat-contacts-open' + }; + + /** + * Class Definition + * ==================================================== + */ + + class DirectChat { + constructor(element, config) { + this._element = element + } + + toggle() { + $(this._element).parents(Selector.DIRECT_CHAT).first().toggleClass(ClassName.DIRECT_CHAT_OPEN); + + const toggledEvent = $.Event(Event.TOGGLED) + $(this._element).trigger(toggledEvent) + } + + // Static + + static _jQueryInterface(config) { + return this.each(function () { + let data = $(this).data(DATA_KEY) + + if (!data) { + data = new DirectChat($(this)) + $(this).data(DATA_KEY, data) + } + + data[config]() + }) + } + } + + /** + * + * Data Api implementation + * ==================================================== + */ + + $(document).on('click', Selector.DATA_TOGGLE, function (event) { + if (event) event.preventDefault(); + DirectChat._jQueryInterface.call($(this), 'toggle'); + }); + + /** + * jQuery API + * ==================================================== + */ + + $.fn[NAME] = DirectChat._jQueryInterface + $.fn[NAME].Constructor = DirectChat + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT + return DirectChat._jQueryInterface + } + + return DirectChat +})(jQuery) + +export default DirectChat diff --git a/build/js/Dropdown.js b/build/js/Dropdown.js new file mode 100644 index 0000000..2c58cdf --- /dev/null +++ b/build/js/Dropdown.js @@ -0,0 +1,112 @@ +/** + * -------------------------------------------- + * AdminLTE Dropdown.js + * License MIT + * -------------------------------------------- + */ + +const Dropdown = (($) => { + /** + * Constants + * ==================================================== + */ + + const NAME = 'Dropdown' + const DATA_KEY = 'lte.dropdown' + const EVENT_KEY = `.${DATA_KEY}` + const JQUERY_NO_CONFLICT = $.fn[NAME] + + const Selector = { + DROPDOWN_MENU: 'ul.dropdown-menu', + DROPDOWN_TOGGLE: '[data-toggle="dropdown"]', + } + + const ClassName = { + DROPDOWN_HOVER: '.dropdown-hover' + } + + const Default = { + } + + + /** + * Class Definition + * ==================================================== + */ + + class Dropdown { + constructor(element, config) { + this._config = config + this._element = element + } + + // Public + + toggleSubmenu() { + this._element.siblings().show().toggleClass("show"); + + if (! this._element.next().hasClass('show')) { + this._element.parents('.dropdown-menu').first().find('.show').removeClass("show").hide(); + } + + this._element.parents('li.nav-item.dropdown.show').on('hidden.bs.dropdown', function(e) { + $('.dropdown-submenu .show').removeClass("show").hide(); + }); + + } + + // Static + + static _jQueryInterface(config) { + return this.each(function () { + let data = $(this).data(DATA_KEY) + const _config = $.extend({}, Default, $(this).data()) + + if (!data) { + data = new Dropdown($(this), _config) + $(this).data(DATA_KEY, data) + } + + if (config === 'toggleSubmenu') { + data[config]() + } + }) + } + } + + /** + * Data API + * ==================================================== + */ + + $(Selector.DROPDOWN_MENU + ' ' + Selector.DROPDOWN_TOGGLE).on("click", function(event) { + event.preventDefault(); + event.stopPropagation(); + + Dropdown._jQueryInterface.call($(this), 'toggleSubmenu') + }); + + // $(Selector.SIDEBAR + ' a').on('focusin', () => { + // $(Selector.MAIN_SIDEBAR).addClass(ClassName.SIDEBAR_FOCUSED); + // }) + + // $(Selector.SIDEBAR + ' a').on('focusout', () => { + // $(Selector.MAIN_SIDEBAR).removeClass(ClassName.SIDEBAR_FOCUSED); + // }) + + /** + * jQuery API + * ==================================================== + */ + + $.fn[NAME] = Dropdown._jQueryInterface + $.fn[NAME].Constructor = Dropdown + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT + return Dropdown._jQueryInterface + } + + return Dropdown +})(jQuery) + +export default Dropdown diff --git a/build/js/Layout.js b/build/js/Layout.js new file mode 100644 index 0000000..1a8cbb3 --- /dev/null +++ b/build/js/Layout.js @@ -0,0 +1,218 @@ +/** + * -------------------------------------------- + * AdminLTE Layout.js + * License MIT + * -------------------------------------------- + */ + +const Layout = (($) => { + /** + * Constants + * ==================================================== + */ + + const NAME = 'Layout' + const DATA_KEY = 'lte.layout' + const EVENT_KEY = `.${DATA_KEY}` + const JQUERY_NO_CONFLICT = $.fn[NAME] + + const Event = { + SIDEBAR: 'sidebar' + } + + const Selector = { + HEADER : '.main-header', + MAIN_SIDEBAR : '.main-sidebar', + SIDEBAR : '.main-sidebar .sidebar', + CONTENT : '.content-wrapper', + BRAND : '.brand-link', + CONTENT_HEADER : '.content-header', + WRAPPER : '.wrapper', + CONTROL_SIDEBAR: '.control-sidebar', + CONTROL_SIDEBAR_CONTENT: '.control-sidebar-content', + CONTROL_SIDEBAR_BTN: '[data-widget="control-sidebar"]', + LAYOUT_FIXED : '.layout-fixed', + FOOTER : '.main-footer', + PUSHMENU_BTN : '[data-widget="pushmenu"]', + LOGIN_BOX : '.login-box', + REGISTER_BOX : '.register-box' + } + + const ClassName = { + HOLD : 'hold-transition', + SIDEBAR : 'main-sidebar', + CONTENT_FIXED : 'content-fixed', + SIDEBAR_FOCUSED: 'sidebar-focused', + LAYOUT_FIXED : 'layout-fixed', + NAVBAR_FIXED : 'layout-navbar-fixed', + FOOTER_FIXED : 'layout-footer-fixed', + LOGIN_PAGE : 'login-page', + REGISTER_PAGE : 'register-page', + CONTROL_SIDEBAR_SLIDE_OPEN: 'control-sidebar-slide-open', + CONTROL_SIDEBAR_OPEN: 'control-sidebar-open', + } + + const Default = { + scrollbarTheme : 'os-theme-light', + scrollbarAutoHide: 'l' + } + + /** + * Class Definition + * ==================================================== + */ + + class Layout { + constructor(element, config) { + this._config = config + this._element = element + + this._init() + } + + // Public + + fixLayoutHeight(extra = null) { + let control_sidebar = 0 + + if ($('body').hasClass(ClassName.CONTROL_SIDEBAR_SLIDE_OPEN) || $('body').hasClass(ClassName.CONTROL_SIDEBAR_OPEN) || extra == 'control_sidebar') { + control_sidebar = $(Selector.CONTROL_SIDEBAR_CONTENT).height() + } + + const heights = { + window: $(window).height(), + header: $(Selector.HEADER).length !== 0 ? $(Selector.HEADER).outerHeight() : 0, + footer: $(Selector.FOOTER).length !== 0 ? $(Selector.FOOTER).outerHeight() : 0, + sidebar: $(Selector.SIDEBAR).length !== 0 ? $(Selector.SIDEBAR).height() : 0, + control_sidebar: control_sidebar, + } + + const max = this._max(heights) + + if (max == heights.control_sidebar) { + $(Selector.CONTENT).css('min-height', max) + } else if (max == heights.window) { + $(Selector.CONTENT).css('min-height', max - heights.header - heights.footer) + } else { + $(Selector.CONTENT).css('min-height', max - heights.header) + } + + if ($('body').hasClass(ClassName.LAYOUT_FIXED)) { + $(Selector.CONTENT).css('min-height', max - heights.header - heights.footer) + + if (typeof $.fn.overlayScrollbars !== 'undefined') { + $(Selector.SIDEBAR).overlayScrollbars({ + className : this._config.scrollbarTheme, + sizeAutoCapable : true, + scrollbars : { + autoHide: this._config.scrollbarAutoHide, + clickScrolling : true + } + }) + } + } + } + + // Private + + _init() { + // Activate layout height watcher + this.fixLayoutHeight() + $(Selector.SIDEBAR) + .on('collapsed.lte.treeview expanded.lte.treeview', () => { + this.fixLayoutHeight() + }) + + $(Selector.PUSHMENU_BTN) + .on('collapsed.lte.pushmenu shown.lte.pushmenu', () => { + this.fixLayoutHeight() + }) + + $(Selector.CONTROL_SIDEBAR_BTN) + .on('collapsed.lte.controlsidebar', () => { + this.fixLayoutHeight() + }) + .on('expanded.lte.controlsidebar', () => { + this.fixLayoutHeight('control_sidebar') + }) + + $(window).resize(() => { + this.fixLayoutHeight() + }) + + if (!$('body').hasClass(ClassName.LOGIN_PAGE) && !$('body').hasClass(ClassName.REGISTER_PAGE)) { + $('body, html').css('height', 'auto') + } else if ($('body').hasClass(ClassName.LOGIN_PAGE) || $('body').hasClass(ClassName.REGISTER_PAGE)) { + let box_height = $(Selector.LOGIN_BOX + ', ' + Selector.REGISTER_BOX).height() + + $('body').css('min-height', box_height); + } + + $('body.hold-transition').removeClass('hold-transition') + } + + _max(numbers) { + // Calculate the maximum number in a list + let max = 0 + + Object.keys(numbers).forEach((key) => { + if (numbers[key] > max) { + max = numbers[key] + } + }) + + return max + } + + // Static + + static _jQueryInterface(config = '') { + return this.each(function () { + let data = $(this).data(DATA_KEY) + const _options = $.extend({}, Default, $(this).data()) + + if (!data) { + data = new Layout($(this), _options) + $(this).data(DATA_KEY, data) + } + + if (config === 'init' || config === '') { + data['_init']() + } + }) + } + } + + /** + * Data API + * ==================================================== + */ + + $(window).on('load', () => { + Layout._jQueryInterface.call($('body')) + }) + + $(Selector.SIDEBAR + ' a').on('focusin', () => { + $(Selector.MAIN_SIDEBAR).addClass(ClassName.SIDEBAR_FOCUSED); + }) + + $(Selector.SIDEBAR + ' a').on('focusout', () => { + $(Selector.MAIN_SIDEBAR).removeClass(ClassName.SIDEBAR_FOCUSED); + }) + + /** + * jQuery API + * ==================================================== + */ + + $.fn[NAME] = Layout._jQueryInterface + $.fn[NAME].Constructor = Layout + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT + return Layout._jQueryInterface + } + + return Layout +})(jQuery) + +export default Layout diff --git a/build/js/PushMenu.js b/build/js/PushMenu.js new file mode 100644 index 0000000..3b6d343 --- /dev/null +++ b/build/js/PushMenu.js @@ -0,0 +1,223 @@ +/** + * -------------------------------------------- + * AdminLTE PushMenu.js + * License MIT + * -------------------------------------------- + */ + +const PushMenu = (($) => { + /** + * Constants + * ==================================================== + */ + + const NAME = 'PushMenu' + const DATA_KEY = 'lte.pushmenu' + const EVENT_KEY = `.${DATA_KEY}` + const JQUERY_NO_CONFLICT = $.fn[NAME] + + const Event = { + COLLAPSED: `collapsed${EVENT_KEY}`, + SHOWN: `shown${EVENT_KEY}` + } + + const Default = { + autoCollapseSize: 992, + enableRemember: false, + noTransitionAfterReload: true + } + + const Selector = { + TOGGLE_BUTTON: '[data-widget="pushmenu"]', + SIDEBAR_MINI: '.sidebar-mini', + SIDEBAR_COLLAPSED: '.sidebar-collapse', + BODY: 'body', + OVERLAY: '#sidebar-overlay', + WRAPPER: '.wrapper' + } + + const ClassName = { + SIDEBAR_OPEN: 'sidebar-open', + COLLAPSED: 'sidebar-collapse', + OPEN: 'sidebar-open' + } + + /** + * Class Definition + * ==================================================== + */ + + class PushMenu { + constructor(element, options) { + this._element = element + this._options = $.extend({}, Default, options) + + if (!$(Selector.OVERLAY).length) { + this._addOverlay() + } + + this._init() + } + + // Public + + expand() { + if (this._options.autoCollapseSize) { + if ($(window).width() <= this._options.autoCollapseSize) { + $(Selector.BODY).addClass(ClassName.OPEN) + } + } + + $(Selector.BODY).removeClass(ClassName.COLLAPSED) + + if(this._options.enableRemember) { + localStorage.setItem(`remember${EVENT_KEY}`, ClassName.OPEN) + } + + const shownEvent = $.Event(Event.SHOWN) + $(this._element).trigger(shownEvent) + } + + collapse() { + if (this._options.autoCollapseSize) { + if ($(window).width() <= this._options.autoCollapseSize) { + $(Selector.BODY).removeClass(ClassName.OPEN) + } + } + + $(Selector.BODY).addClass(ClassName.COLLAPSED) + + if(this._options.enableRemember) { + localStorage.setItem(`remember${EVENT_KEY}`, ClassName.COLLAPSED) + } + + const collapsedEvent = $.Event(Event.COLLAPSED) + $(this._element).trigger(collapsedEvent) + } + + toggle() { + if (!$(Selector.BODY).hasClass(ClassName.COLLAPSED)) { + this.collapse() + } else { + this.expand() + } + } + + autoCollapse(resize = false) { + if (this._options.autoCollapseSize) { + if ($(window).width() <= this._options.autoCollapseSize) { + if (!$(Selector.BODY).hasClass(ClassName.OPEN)) { + this.collapse() + } + } else if (resize == true) { + if ($(Selector.BODY).hasClass(ClassName.OPEN)) { + $(Selector.BODY).removeClass(ClassName.OPEN) + } + } + } + } + + remember() { + if(this._options.enableRemember) { + let toggleState = localStorage.getItem(`remember${EVENT_KEY}`) + if (toggleState == ClassName.COLLAPSED){ + if (this._options.noTransitionAfterReload) { + $("body").addClass('hold-transition').addClass(ClassName.COLLAPSED).delay(50).queue(function() { + $(this).removeClass('hold-transition') + $(this).dequeue() + }) + } else { + $("body").addClass(ClassName.COLLAPSED) + } + } else { + if (this._options.noTransitionAfterReload) { + $("body").addClass('hold-transition').removeClass(ClassName.COLLAPSED).delay(50).queue(function() { + $(this).removeClass('hold-transition') + $(this).dequeue() + }) + } else { + $("body").removeClass(ClassName.COLLAPSED) + } + } + } + } + + // Private + + _init() { + this.remember() + this.autoCollapse() + + $(window).resize(() => { + this.autoCollapse(true) + }) + } + + _addOverlay() { + const overlay = $('
', { + id: 'sidebar-overlay' + }) + + overlay.on('click', () => { + this.collapse() + }) + + $(Selector.WRAPPER).append(overlay) + } + + // Static + + static _jQueryInterface(operation) { + return this.each(function () { + let data = $(this).data(DATA_KEY) + const _options = $.extend({}, Default, $(this).data()) + + if (!data) { + data = new PushMenu(this, _options) + $(this).data(DATA_KEY, data) + } + + if (typeof operation === 'string' && operation.match(/collapse|expand|toggle/)) { + data[operation]() + } + }) + } + } + + /** + * Data API + * ==================================================== + */ + + $(document).on('click', Selector.TOGGLE_BUTTON, (event) => { + event.preventDefault() + + let button = event.currentTarget + + if ($(button).data('widget') !== 'pushmenu') { + button = $(button).closest(Selector.TOGGLE_BUTTON) + } + + PushMenu._jQueryInterface.call($(button), 'toggle') + }) + + $(window).on('load', () => { + PushMenu._jQueryInterface.call($(Selector.TOGGLE_BUTTON)) + }) + + /** + * jQuery API + * ==================================================== + */ + + $.fn[NAME] = PushMenu._jQueryInterface + $.fn[NAME].Constructor = PushMenu + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT + return PushMenu._jQueryInterface + } + + return PushMenu +})(jQuery) + +export default PushMenu diff --git a/build/js/SiteSearch.js b/build/js/SiteSearch.js new file mode 100644 index 0000000..b3ed9e5 --- /dev/null +++ b/build/js/SiteSearch.js @@ -0,0 +1,127 @@ +/** + * -------------------------------------------- + * AdminLTE SiteSearch.js + * License MIT + * -------------------------------------------- + */ + +const SiteSearch = (($) => { + /** + * Constants + * ==================================================== + */ + + const NAME = 'SiteSearch' + const DATA_KEY = 'lte.site-search' + const EVENT_KEY = `.${DATA_KEY}` + const JQUERY_NO_CONFLICT = $.fn[NAME] + + const Event = {} + + const Selector = { + TOGGLE_BUTTON : '[data-widget="site-search"]', + SEARCH_BLOCK : '.site-search-block', + SEARCH_BACKDROP: '.site-search-backdrop', + SEARCH_INPUT : '.site-search-block .form-control' + } + + const ClassName = { + OPEN: 'site-search-open' + } + + const Default = { + transitionSpeed: 300 + } + + /** + * Class Definition + * ==================================================== + */ + + class SiteSearch { + + constructor(_element, _options) { + this.element = _element + this.options = $.extend({}, Default, _options) + } + + // Public + + open() { + $(Selector.SEARCH_BLOCK).slideDown(this.options.transitionSpeed) + $(Selector.SEARCH_BACKDROP).show(0) + $(Selector.SEARCH_INPUT).focus() + $(Selector.SEARCH_BLOCK).addClass(ClassName.OPEN) + } + + close() { + $(Selector.SEARCH_BLOCK).slideUp(this.options.transitionSpeed) + $(Selector.SEARCH_BACKDROP).hide(0) + $(Selector.SEARCH_BLOCK).removeClass(ClassName.OPEN) + } + + toggle() { + if ($(Selector.SEARCH_BLOCK).hasClass(ClassName.OPEN)) { + this.close() + } else { + this.open() + } + } + + // Static + + static _jQueryInterface(options) { + return this.each(function () { + let data = $(this).data(DATA_KEY) + + if (!data) { + data = new SiteSearch(this, options) + $(this).data(DATA_KEY, data) + } + + if (!/toggle|close/.test(options)) { + throw Error(`Undefined method ${options}`) + } + + data[options]() + }) + } + } + + /** + * Data API + * ==================================================== + */ + $(document).on('click', Selector.TOGGLE_BUTTON, (event) => { + event.preventDefault() + + let button = $(event.currentTarget) + + if (button.data('widget') !== 'site-search') { + button = button.closest(Selector.TOGGLE_BUTTON) + } + + SiteSearch._jQueryInterface.call(button, 'toggle') + }) + + $(document).on('click', Selector.SEARCH_BACKDROP, (event) => { + const backdrop = $(event.currentTarget) + SiteSearch._jQueryInterface.call(backdrop, 'close') + }) + + /** + * jQuery API + * ==================================================== + */ + + $.fn[NAME] = SiteSearch._jQueryInterface + $.fn[NAME].Constructor = SiteSearch + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT + return SiteSearch._jQueryInterface + } + + return SiteSearch +})(jQuery) + +export default SiteSearch diff --git a/build/js/Toasts.js b/build/js/Toasts.js new file mode 100644 index 0000000..a4cfc25 --- /dev/null +++ b/build/js/Toasts.js @@ -0,0 +1,229 @@ +/** + * -------------------------------------------- + * AdminLTE Toasts.js + * License MIT + * -------------------------------------------- + */ + +const Toasts = (($) => { + /** + * Constants + * ==================================================== + */ + + const NAME = 'Toasts' + const DATA_KEY = 'lte.toasts' + const EVENT_KEY = `.${DATA_KEY}` + const JQUERY_NO_CONFLICT = $.fn[NAME] + + const Event = { + INIT: `init${EVENT_KEY}`, + CREATED: `created${EVENT_KEY}`, + REMOVED: `removed${EVENT_KEY}`, + } + + const Selector = { + BODY: 'toast-body', + CONTAINER_TOP_RIGHT: '#toastsContainerTopRight', + CONTAINER_TOP_LEFT: '#toastsContainerTopLeft', + CONTAINER_BOTTOM_RIGHT: '#toastsContainerBottomRight', + CONTAINER_BOTTOM_LEFT: '#toastsContainerBottomLeft', + } + + const ClassName = { + TOP_RIGHT: 'toasts-top-right', + TOP_LEFT: 'toasts-top-left', + BOTTOM_RIGHT: 'toasts-bottom-right', + BOTTOM_LEFT: 'toasts-bottom-left', + FADE: 'fade', + } + + const Position = { + TOP_RIGHT: 'topRight', + TOP_LEFT: 'topLeft', + BOTTOM_RIGHT: 'bottomRight', + BOTTOM_LEFT: 'bottomLeft', + } + + const Id = { + CONTAINER_TOP_RIGHT: 'toastsContainerTopRight', + CONTAINER_TOP_LEFT: 'toastsContainerTopLeft', + CONTAINER_BOTTOM_RIGHT: 'toastsContainerBottomRight', + CONTAINER_BOTTOM_LEFT: 'toastsContainerBottomLeft', + } + + const Default = { + position: Position.TOP_RIGHT, + fixed: true, + autohide: false, + autoremove: true, + delay: 1000, + fade: true, + icon: null, + image: null, + imageAlt: null, + imageHeight: '25px', + title: null, + subtitle: null, + close: true, + body: null, + class: null, + } + + /** + * Class Definition + * ==================================================== + */ + class Toasts { + constructor(element, config) { + this._config = config + + this._prepareContainer(); + + const initEvent = $.Event(Event.INIT) + $('body').trigger(initEvent) + } + + // Public + + create() { + var toast = $('