diff --git a/public/app.css b/public/app.css index fd8017b5..75353322 100644 --- a/public/app.css +++ b/public/app.css @@ -1,1219 +1 @@ -@import url(https://fonts.googleapis.com/css?family=Nunito:300,300i,400,400i,600,600i,700,700i&display=swap);@charset "UTF-8"; - -.hide { - display: none !important; -} - -.no-underline, -.no-underline:hover { - text-decoration: none; -} - -.cursor-move { - cursor: move; -} - -.grow { - -webkit-transition: -webkit-transform 0.2s ease; - transition: -webkit-transform 0.2s ease; - transition: transform 0.2s ease; - transition: transform 0.2s ease, -webkit-transform 0.2s ease; -} - -.grow:hover { - -webkit-transform: scale(1.15); - transform: scale(1.15); -} - -.p-4-half { - padding: 2.3rem !important; -} - -.pl-4-half { - padding-left: 2.3rem !important; -} - -.pr-4-half { - padding-right: 2.3rem !important; -} - -.pb-4-half { - padding-right: 2.3rem !important; -} - -.pt-4-half { - padding-top: 2.3rem !important; -} - -pre { - white-space: pre-wrap; - word-wrap: break-word; - text-align: justify; -} - -span.required { - color: red; -} - -.border-light { - border-color: #dee2e6 !important; -} - -.abc-checkbox { - cursor: default; - padding-left: 4px; -} - -.abc-checkbox label { - cursor: pointer; - display: inline; - vertical-align: top; - position: relative; - padding-left: 5px; -} - -.abc-checkbox label::before { - cursor: pointer; - content: ""; - display: inline-block; - position: absolute; - width: 17px; - height: 17px; - top: 2px; - left: 0; - margin-left: -20px; - border: 1px solid #dee2e6; - border-radius: 3px; - background-color: #fff; - -webkit-transition: border 0.15s ease-in-out, color 0.15s ease-in-out; - transition: border 0.15s ease-in-out, color 0.15s ease-in-out; -} - -.abc-checkbox label::after { - cursor: pointer; - display: inline-block; - position: absolute; - width: 16px; - height: 16px; - left: 0; - top: 2px; - margin-left: -20px; - padding-left: 3px; - padding-top: 1px; - font-size: 11px; - color: #6c757d; -} - -.abc-checkbox input[type=checkbox], -.abc-checkbox input[type=radio] { - position: static; - margin-left: 0; - cursor: pointer; - opacity: 0; - z-index: 1; -} - -.abc-checkbox input[type=checkbox]:focus + label::before, -.abc-checkbox input[type=radio]:focus + label::before { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} - -.abc-checkbox input[type=checkbox]:checked + label::after, -.abc-checkbox input[type=radio]:checked + label::after { - font-family: "Font Awesome 5 Pro"; - content: "\F00C"; -} - -.abc-checkbox input[type=checkbox]:indeterminate + label::after, -.abc-checkbox input[type=radio]:indeterminate + label::after { - display: block; - content: ""; - width: 10px; - height: 3px; - background-color: #555555; - border-radius: 2px; - margin-left: -16.5px; - margin-top: 7px; -} - -.abc-checkbox input[type=checkbox]:disabled + label, -.abc-checkbox input[type=radio]:disabled + label { - opacity: 0.65; -} - -.abc-checkbox input[type=checkbox]:disabled + label::before, -.abc-checkbox input[type=radio]:disabled + label::before { - background-color: #6c757d; - cursor: not-allowed; -} - -.abc-checkbox input[type=checkbox]:disabled + label::after, -.abc-checkbox input[type=radio]:disabled + label::after { - cursor: not-allowed; -} - -.abc-checkbox.abc-checkbox-circle label::before { - border-radius: 50%; -} - -.abc-checkbox.checkbox-inline { - margin-top: 0; -} - -.abc-checkbox-primary input[type=checkbox]:checked + label::before, -.abc-checkbox-primary input[type=radio]:checked + label::before { - background-color: #009ad9; - border-color: #009ad9; -} - -.abc-checkbox-primary input[type=checkbox]:checked + label::after, -.abc-checkbox-primary input[type=radio]:checked + label::after { - color: #fff; -} - -.abc-checkbox-danger input[type=checkbox]:checked + label::before, -.abc-checkbox-danger input[type=radio]:checked + label::before { - background-color: #e3342f; - border-color: #e3342f; -} - -.abc-checkbox-danger input[type=checkbox]:checked + label::after, -.abc-checkbox-danger input[type=radio]:checked + label::after { - color: #fff; -} - -.abc-checkbox-info input[type=checkbox]:checked + label::before, -.abc-checkbox-info input[type=radio]:checked + label::before { - background-color: #0a92dd; - border-color: #0a92dd; -} - -.abc-checkbox-info input[type=checkbox]:checked + label::after, -.abc-checkbox-info input[type=radio]:checked + label::after { - color: #fff; -} - -.abc-checkbox-warning input[type=checkbox]:checked + label::before, -.abc-checkbox-warning input[type=radio]:checked + label::before { - background-color: #f6993f; - border-color: #f6993f; -} - -.abc-checkbox-warning input[type=checkbox]:checked + label::after, -.abc-checkbox-warning input[type=radio]:checked + label::after { - color: #fff; -} - -.abc-checkbox-success input[type=checkbox]:checked + label::before, -.abc-checkbox-success input[type=radio]:checked + label::before { - background-color: #38c172; - border-color: #38c172; -} - -.abc-checkbox-success input[type=checkbox]:checked + label::after, -.abc-checkbox-success input[type=radio]:checked + label::after { - color: #fff; -} - -.abc-checkbox-primary input[type=checkbox]:indeterminate + label::before, -.abc-checkbox-primary input[type=radio]:indeterminate + label::before { - background-color: #009ad9; - border-color: #009ad9; -} - -.abc-checkbox-primary input[type=checkbox]:indeterminate + label::after, -.abc-checkbox-primary input[type=radio]:indeterminate + label::after { - background-color: #fff; -} - -.abc-checkbox-danger input[type=checkbox]:indeterminate + label::before, -.abc-checkbox-danger input[type=radio]:indeterminate + label::before { - background-color: #e3342f; - border-color: #e3342f; -} - -.abc-checkbox-danger input[type=checkbox]:indeterminate + label::after, -.abc-checkbox-danger input[type=radio]:indeterminate + label::after { - background-color: #fff; -} - -.abc-checkbox-info input[type=checkbox]:indeterminate + label::before, -.abc-checkbox-info input[type=radio]:indeterminate + label::before { - background-color: #0a92dd; - border-color: #0a92dd; -} - -.abc-checkbox-info input[type=checkbox]:indeterminate + label::after, -.abc-checkbox-info input[type=radio]:indeterminate + label::after { - background-color: #fff; -} - -.abc-checkbox-warning input[type=checkbox]:indeterminate + label::before, -.abc-checkbox-warning input[type=radio]:indeterminate + label::before { - background-color: #f6993f; - border-color: #f6993f; -} - -.abc-checkbox-warning input[type=checkbox]:indeterminate + label::after, -.abc-checkbox-warning input[type=radio]:indeterminate + label::after { - background-color: #fff; -} - -.abc-checkbox-success input[type=checkbox]:indeterminate + label::before, -.abc-checkbox-success input[type=radio]:indeterminate + label::before { - background-color: #38c172; - border-color: #38c172; -} - -.abc-checkbox-success input[type=checkbox]:indeterminate + label::after, -.abc-checkbox-success input[type=radio]:indeterminate + label::after { - background-color: #fff; -} - -.abc-radio { - cursor: default; - padding-left: 4px; -} - -.abc-radio label { - cursor: pointer; - display: inline; - vertical-align: top; - position: relative; - padding-left: 5px; -} - -.abc-radio label::before { - cursor: pointer; - content: ""; - display: inline-block; - position: absolute; - width: 17px; - height: 17px; - top: 2px; - left: 0; - margin-left: -20px; - border: 1px solid #dee2e6; - border-radius: 50%; - background-color: #fff; - -webkit-transition: border 0.15s ease-in-out; - transition: border 0.15s ease-in-out; -} - -.abc-radio label::after { - cursor: pointer; - display: inline-block; - position: absolute; - content: " "; - width: 11px; - height: 11px; - left: 3px; - top: 5px; - margin-left: -20px; - border-radius: 50%; - background-color: #6c757d; - -webkit-transform: scale(0, 0); - transform: scale(0, 0); - -webkit-transition: -webkit-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); - transition: -webkit-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); - transition: transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); - transition: transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33), -webkit-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); -} - -.abc-radio input[type=radio] { - position: static; - margin-left: 0; - cursor: pointer; - opacity: 0; - z-index: 1; -} - -.abc-radio input[type=radio]:focus + label::before { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} - -.abc-radio input[type=radio]:checked + label::after { - -webkit-transform: scale(1, 1); - transform: scale(1, 1); -} - -.abc-radio input[type=radio]:disabled + label { - opacity: 0.65; -} - -.abc-radio input[type=radio]:disabled + label::before { - cursor: not-allowed; -} - -.abc-radio input[type=radio]:disabled + label::after { - cursor: not-allowed; -} - -.abc-radio.radio-inline { - margin-top: 0; -} - -.abc-radio-primary input[type=radio] + label::after { - background-color: #009ad9; -} - -.abc-radio-primary input[type=radio]:checked + label::before { - border-color: #009ad9; -} - -.abc-radio-primary input[type=radio]:checked + label::after { - background-color: #009ad9; -} - -.abc-radio-danger input[type=radio] + label::after { - background-color: #e3342f; -} - -.abc-radio-danger input[type=radio]:checked + label::before { - border-color: #e3342f; -} - -.abc-radio-danger input[type=radio]:checked + label::after { - background-color: #e3342f; -} - -.abc-radio-info input[type=radio] + label::after { - background-color: #0a92dd; -} - -.abc-radio-info input[type=radio]:checked + label::before { - border-color: #0a92dd; -} - -.abc-radio-info input[type=radio]:checked + label::after { - background-color: #0a92dd; -} - -.abc-radio-warning input[type=radio] + label::after { - background-color: #f6993f; -} - -.abc-radio-warning input[type=radio]:checked + label::before { - border-color: #f6993f; -} - -.abc-radio-warning input[type=radio]:checked + label::after { - background-color: #f6993f; -} - -.abc-radio-success input[type=radio] + label::after { - background-color: #38c172; -} - -.abc-radio-success input[type=radio]:checked + label::before { - border-color: #38c172; -} - -.abc-radio-success input[type=radio]:checked + label::after { - background-color: #38c172; -} - -label .was-validated .form-check-input:invalid .abc-checkbox:before, -label .was-validated .form-check-input:invalid .abc-radio:before, -label .form-check-input.is-invalid .abc-checkbox:before, -label .form-check-input.is-invalid .abc-radio:before { - border-color: #e3342f; -} - -.form-control { - border: 1px solid #dee2e6; -} - -.form-control:focus { - border-color: #1E2442; - box-shadow: none; -} - -.form-control, -.form-check-label { - font-size: 0.85rem; -} - -.form-row .form-group label { - margin-bottom: 0.1rem; -} - -.input-group-text { - font-size: 0.85rem; -} - -.input-group-prepend { - min-width: 40px; -} - -@media (min-width: 576px) { - .card-filters .form-group { - margin-bottom: 0; - } -} - -.form-control.datepicker { - padding: 0.25rem 0.5rem; -} - -.form-control::-webkit-input-placeholder { - color: #8B97A3; -} - -.form-control::-moz-placeholder { - color: #8B97A3; -} - -.form-control:-ms-input-placeholder { - color: #8B97A3; -} - -.form-control::-ms-input-placeholder { - color: #8B97A3; -} - -.form-control::placeholder { - color: #8B97A3; -} - -::-webkit-input-placeholder { - /* WebKit, Blink, Edge */ - color: #8B97A3; - font-style: italic; -} - -::-moz-placeholder { - /* Mozilla Firefox 19+ */ - color: #8B97A3; - opacity: 1; - font-style: italic; -} - -:-ms-input-placeholder { - /* Internet Explorer 10-11 */ - color: #8B97A3; - font-style: italic; -} - -::-ms-input-placeholder { - /* Microsoft Edge */ - color: #8B97A3; - font-style: italic; -} - -::placeholder { - /* Most modern browsers support this now. */ - color: #8B97A3; - font-style: italic; -} - -.select2-container .select2-search--inline .select2-search__field::-webkit-input-placeholder { - padding-top: 5px; -} - -.select2-container .select2-search--inline .select2-search__field::-moz-placeholder { - padding-top: 5px; -} - -.select2-container .select2-search--inline .select2-search__field:-ms-input-placeholder { - padding-top: 5px; -} - -.select2-container .select2-search--inline .select2-search__field::-ms-input-placeholder { - padding-top: 5px; -} - -.select2-container .select2-search--inline .select2-search__field::placeholder { - padding-top: 5px; -} - -.btn:focus { - box-shadow: none; -} - -.btn-primary:not(:disabled):not(.disabled).active:focus, -.btn-primary:not(:disabled):not(.disabled):active:focus, -.show > .btn-primary.dropdown-toggle:focus { - box-shadow: none; -} - -button:disabled { - cursor: not-allowed; -} - -.btn-primary { - background-color: #5D63FF; - border-color: #5D63FF; - color: #ffffff; -} - -.btn-primary .badge { - color: #BDDBFF; -} - -.btn-primary:hover { - background-color: #6c72ff; - border-color: #6c72ff; -} - -.btn-secondary { - background-color: #D9E2EC; - border-color: #edf2f5; - color: #5D63FF; -} - -.btn-secondary:hover { - background-color: #cfdae7; - border-color: #e3ebf0; - color: #5D63FF; -} - -.btn-secondary:not(:disabled):not(.disabled).active, -.btn-secondary:not(:disabled):not(.disabled):active, -.show > .btn-secondary.dropdown-toggle { - background-color: #e3ebf0; - border-color: #e3ebf0; - color: #5D63FF; -} - -.btn-light { - color: #495057; - background-color: #f8f9fb; - border: 1px solid #dee2e6; -} - -.btn-light:hover { - color: #40464c; - background-color: #eef1f5; - border: 1px solid #d5dadf; -} - -a.btn-link { - color: #0056b3; -} - -.btn-filter { - padding: 0.26rem 1rem !important; -} - -.btn-light:not(:disabled):not(.disabled).active, -.btn-light:not(:disabled):not(.disabled):active, -.show > .btn-light.dropdown-toggle { - color: #474d54; - background-color: #f5f6f8; - border-color: #dae0e5; -} - -.btn-outline-primary { - color: #5D63FF; - border-color: #5D63FF; -} - -.btn-xs { - padding: 0.4rem 0.4rem; - font-size: 0.7rem; - line-height: 0.5; - border-radius: 0.2rem; -} - -.btn-wide { - padding-left: 1rem !important; - padding-right: 1rem !important; -} - -.btn-group-sm > .btn, -.btn-sm { - padding: 0.4rem 1rem; - line-height: 1.5; -} - -.btn .badge { - color: #969FA8; - top: auto; -} - -.btn-group .btn { - border: 1px solid #E1E4E7; - color: #495057; -} - -.btn-group .btn-primary { - color: #ffffff; -} - -.btn-group-sm > .btn, -.btn-sm { - font-size: 0.75rem; - padding: 0.2rem 0.5rem; -} - -.btn-group-md > .btn, -.btn-md { - font-size: 0.8rem; - padding: 0.35rem 0.75rem; -} - -.page-signin-alt .signin-password { - position: relative; -} - -.page-signin-alt .signin-password .forgot { - position: absolute; - right: 7px; - top: 7px; - color: #555; - background: #F0F4F7; - border-radius: 2px; - line-height: 25px; - padding: 0 7px; - font-size: 12px; -} - -/* - * Sidebar - */ - -.sidebar.modal .close { - position: absolute; - right: 5px; - top: 2px; - color: #ffffff; - text-shadow: 0 1px 0 #fff; - opacity: 0.8; -} - -.modal-left .modal-dialog { - position: fixed; - margin: auto; - width: 200px; - height: 100%; - -webkit-transform: translate3d(0%, 0, 0); - transform: translate3d(0%, 0, 0); -} - -.modal-left .modal-content { - overflow-y: auto; -} - -.modal-left.fade .modal-dialog { - left: -200px; - -webkit-transition: opacity 0.2s linear, left 0.2s ease-out; - transition: opacity 0.2s linear, left 0.2s ease-out; -} - -.modal-left.fade.show .modal-dialog { - left: 0; -} - -.card-table .table { - margin-bottom: 0; -} - -.card-table .table th { - border-top: none; -} - -.table thead th { - border-bottom: 1px solid #dee2e6; -} - -.table-striped tbody tr:nth-of-type(odd) { - background-color: rgba(0, 0, 0, 0.03); -} - -/* restore specificity of hover style */ - -.table-hover tbody tr:hover { - background-color: rgba(0, 0, 0, 0.075); -} - -table.table-hover-reset tr:hover { - background-color: inherit; - opacity: 1; -} - -.table tr.bold td { - font-weight: bold; -} - -.table th { - background-color: #fdfdfd; - font-weight: bold; - color: #1E2442; -} - -.table td, -.table th { - padding: 0.8rem 0.8rem; - border-top: 1px solid #e9edf1; -} - -.table-hover tbody tr:hover { - background-color: #f6fafc; -} - -@supports (font-variation-settings: normal) { - html { - font-family: "Nunito", "Helvetica Neue", Helvetica, Arial, sans-serif; - } -} - -html { - height: 100%; -} - -body { - font-family: "Nunito", "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 0.85rem; - height: 100%; - overflow-x: hidden; - overflow-y: auto; - background-color: #F0F4F7; - color: #555; -} - -a { - color: #0056b3; -} - -h1 { - font-weight: 300; - font-size: 2.2rem; - margin-bottom: 20px; -} - -.col-0 { - width: 0; -} - -#content-wrapper { - min-width: 100vw; -} - -@media (min-width: 992px) { - #content-wrapper { - min-width: 0; - width: 100%; - } -} - -.bg-purple-100 { - background-color: #1E2442 !important; -} - -.bg-purple-500 { - background-color: #5D63FF !important; -} - -a.color-purple-500 { - color: #1E2442; -} - -a.color-purple-500:hover, -a.color-purple-500:active { - color: #1E2442; -} - -.color-purple-500 { - color: #5D63FF; -} - -.color-gray-100 { - color: #eceff2 !important; -} - -.color-gray-200 { - color: #dee2e6 !important; -} - -.color-gray-300 { - color: #ced4da !important; -} - -.color-gray-400 { - color: #adb5bd !important; -} - -.color-gray-500 { - color: #8B97A3 !important; -} - -.color-gray-600 { - color: #6c757d !important; -} - -.color-gray-700 { - color: #495057 !important; -} - -.color-gray-800 { - color: #343a40 !important; -} - -.fw-25 { - -webkit-box-flex: 0; - flex: 0 0 25px; -} - -.fw-80 { - -webkit-box-flex: 0; - flex: 0 0 80px; -} - -.fw-160 { - -webkit-box-flex: 0; - flex: 0 0 160px; -} - -/* Header */ - -.bg-trial-header { - background-color: #ffe4af; -} - -.main-header .workspace-select { - line-height: 24px; -} - -.main-header .user-dropdown { - border: 1px solid transparent; - line-height: 24px; -} - -.main-header .dropdown-item:hover .fas { - color: #1E2442; -} - -.main-header .dropdown-toggle::after { - display: none; -} - -@media (min-width: 576px) { - .main-header .workspace-select { - border: 1px solid rgba(107, 120, 133, 0.1); - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); - border-radius: 4px; - line-height: 24px; - } -} - -/* - * Navbar - */ - -.navbar-expand .navbar-nav .nav-link { - padding-right: 0; -} - -.navbar { - background-color: #ffffff; - border: none; -} - -.dropdown-menu { - font-size: 0.85rem; - background: #ffffff; - border: 1px solid rgba(43, 49, 55, 0.07); - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05), 0 4px 5px rgba(0, 0, 0, 0.02), 0 10px 18px rgba(43, 49, 55, 0.25); - border-radius: 4px; - width: 12.5rem; -} - -.nav-pills a.nav-link { - border-radius: 0; - color: #1E2442; - padding: 0.4rem 0.8rem 0.3rem; - margin-right: 0.5rem; -} - -.nav-pills a.nav-link.active { - background-color: transparent; - border-bottom: 4px solid #5D63FF; - color: #1E2442; - border-radius: 4px; -} - -.nav-pills a.nav-link:hover { - border-bottom: 4px solid #5D63FF; - border-radius: 4px; -} - -/* - * Sidebar - */ - -.sidebar { - -webkit-box-flex: 0; - flex: 0 0 225px; - transition: transform 0.1s ease-in-out, width 0.1s ease-in-out, margin 0.1s ease-in-out, -webkit-transform 0.1s ease-in-out; -} - -.sidebar .sidebar-inner { - margin: 0 1.5rem; -} - -.sidebar ul { - margin: 0; - padding: 0; -} - -.sidebar li { - white-space: nowrap; - overflow: hidden; -} - -.sidebar li.nav-item { - color: #ffffff; - margin-bottom: 0.2rem; - padding: 0; -} - -.sidebar li.nav-item a.nav-link { - color: #ffffff; - font-weight: normal; - font-size: 0.9rem; - padding: 0.7rem 0 0.7em 1.2rem; - border-left: 6px solid; - border-left-color: #1E2442; - border-radius: 6px; -} - -.sidebar li.nav-item a.nav-link .fas { - color: #7c97a4; -} - -.sidebar li.nav-item a.nav-link:hover { - background: #2e3765; - border-left-color: #2e3765; -} - -.sidebar li.nav-item.active a.nav-link { - color: #ffffff; - background: #2e3765; - border-left-color: #5D63FF; -} - -.sidebar li.nav-item.active a.nav-link .fas { - color: #ffffff; -} - -.sidebar .metismenu ul a { - padding: 5px 0 5px 40px; -} - -/* - * Content - */ - -.main-wrapper { - background-color: #f4f8ff; - transition: transform 0.3s ease-in-out, width 0.3s ease-in-out, margin 0.3s ease-in-out, -webkit-transform 0.3s ease-in-out; -} - -.card { - border-radius: 4px; - box-shadow: 0 3px 5px rgba(0, 0, 0, 0.1); - border: none; - margin-bottom: 16px; -} - -.card .card-header { - background-color: #ffffff; - border-bottom: none; - font-weight: 600; - padding: 1.25rem; - border-bottom: 1px solid #dee2e6; - font-size: 1.3rem; -} - -.card .card-header .card-filters { - margin-top: 1rem; - padding-top: 1.25rem; - padding-left: 1.25rem; - padding-right: 1.25rem; - border-top: 1px solid #EDEFF2; -} - -.card .card-header h5, -.card .card-header .h5 { - font-size: 1.2rem; - margin-bottom: 0; - margin-top: 0.2rem; - color: #8B97A3; -} - -.card .card-body { - background-color: #ffffff; -} - -.card .card-table { - padding: 0; -} - -.widget { - position: relative; - display: -webkit-box; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column; - min-width: 0; - word-wrap: break-word; - background-color: #fff; - background-clip: border-box; - border-radius: 0.25rem; - border-bottom: 3px solid #B1B9FF; -} - -.widget .h2 { - font-weight: 400; -} - -.widget .fal { - color: #8B97A3; -} - -.error-listing .card { - padding-top: 0; - padding-bottom: 0; -} - -.error-listing .card .card-body { - padding-top: 0; - padding-bottom: 0; -} - -.error-listing .card .row { - border-bottom: 1px solid #EBEDEF; - padding-top: 1rem; - padding-bottom: 1rem; -} - -.error-listing .card .row:last-of-type { - border-bottom: none; -} - -.error-listing .card .error-name { - font-weight: bold; -} - -.error-listing .card .error-name span { - font-weight: normal; - color: #8B97A3; - font-size: 0.7rem; -} - -/* - * Pagination - */ - -ul.pagination { - margin-bottom: 0; -} - -ul.pagination .page-item.active .page-link { - background-color: #1E2442; - border-color: #1E2442; -} - -ul.pagination .page-link { - color: #1E2442; -} - -/* - * Buttons - */ - -.alert ul { - margin-bottom: 0; -} - -.sub-plans label { - line-height: 24px; -} - -/*---- Select 2 ----*/ - -.select2 { - width: 100% !important; -} - -.select2-container--default .select2-selection--multiple { - border: 1px solid #dee2e6; -} - -.select2-container .select2-selection--multiple { - min-height: 30px; -} - -.select2-container--default .select2-selection--multiple .select2-selection__choice { - margin-top: 3px; -} - -.select2-container--default.select2-container--focus .select2-selection--multiple { - border: 1px solid #1E2442; - box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); -} - -.select2-container .select2-search--inline .select2-search__field { - margin-top: 2px; -} - -.select2-container--default.select2-container--focus .select2-selection--multiple { - border-color: #1E2442; - box-shadow: none; -} - -.empty-table-text { - margin: 0 2rem; - text-align: center; - color: #777777; - font-size: 0.75rem; - text-transform: uppercase; - letter-spacing: 0.1em; -} - -/*---- Badges ----*/ - -.badge { - letter-spacing: 0.075em; - padding: 0.25rem 0.5rem; - border-radius: 4px; - font-size: 0.75rem; -} - -.badge-light { - background-color: #eceff2; - color: #495057; -} - -.badge-success { - background-color: #d7f5ea; - color: #306955; -} - -.badge-danger { - background-color: #ffebee; - color: #CF1124; -} - -.badge-warning { - background-color: #FFEFE6; - color: #CB6E17; -} - -.badge-info { - background-color: #E6F6FF; - color: #0A558C; -} - -/*---- Summernote ----*/ - -.note-editor.note-frame { - border: 1px solid #dee2e6; -} - +@import url(https://fonts.googleapis.com/css?family=Nunito:300,300i,400,400i,600,600i,700,700i&display=swap);.hide{display:none!important}.no-underline,.no-underline:hover{text-decoration:none}.cursor-move{cursor:move}.grow{-webkit-transition:-webkit-transform .2s ease;transition:-webkit-transform .2s ease;transition:transform .2s ease;transition:transform .2s ease,-webkit-transform .2s ease}.grow:hover{-webkit-transform:scale(1.15);transform:scale(1.15)}.p-4-half{padding:2.3rem!important}.pl-4-half{padding-left:2.3rem!important}.pb-4-half,.pr-4-half{padding-right:2.3rem!important}.pt-4-half{padding-top:2.3rem!important}pre{white-space:pre-wrap;word-wrap:break-word;text-align:justify}span.required{color:red}.border-light{border-color:#dee2e6!important}.abc-checkbox{cursor:default;padding-left:4px}.abc-checkbox label{cursor:pointer;display:inline;vertical-align:top;position:relative;padding-left:5px}.abc-checkbox label:before{content:"";width:17px;height:17px;border:1px solid #dee2e6;border-radius:3px;background-color:#fff;-webkit-transition:border .15s ease-in-out,color .15s ease-in-out;transition:border .15s ease-in-out,color .15s ease-in-out}.abc-checkbox label:after,.abc-checkbox label:before{cursor:pointer;display:inline-block;position:absolute;top:2px;left:0;margin-left:-20px}.abc-checkbox label:after{width:16px;height:16px;padding-left:3px;padding-top:1px;font-size:11px;color:#6c757d}.abc-checkbox input[type=checkbox],.abc-checkbox input[type=radio]{position:static;margin-left:0;cursor:pointer;opacity:0;z-index:1}.abc-checkbox input[type=checkbox]:focus+label:before,.abc-checkbox input[type=radio]:focus+label:before{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.abc-checkbox input[type=checkbox]:checked+label:after,.abc-checkbox input[type=radio]:checked+label:after{font-family:Font Awesome\ 5 Pro;content:"\F00C"}.abc-checkbox input[type=checkbox]:indeterminate+label:after,.abc-checkbox input[type=radio]:indeterminate+label:after{display:block;content:"";width:10px;height:3px;background-color:#555;border-radius:2px;margin-left:-16.5px;margin-top:7px}.abc-checkbox input[type=checkbox]:disabled+label,.abc-checkbox input[type=radio]:disabled+label{opacity:.65}.abc-checkbox input[type=checkbox]:disabled+label:before,.abc-checkbox input[type=radio]:disabled+label:before{background-color:#6c757d;cursor:not-allowed}.abc-checkbox input[type=checkbox]:disabled+label:after,.abc-checkbox input[type=radio]:disabled+label:after{cursor:not-allowed}.abc-checkbox.abc-checkbox-circle label:before{border-radius:50%}.abc-checkbox.checkbox-inline{margin-top:0}.abc-checkbox-primary input[type=checkbox]:checked+label:before,.abc-checkbox-primary input[type=radio]:checked+label:before{background-color:#009ad9;border-color:#009ad9}.abc-checkbox-primary input[type=checkbox]:checked+label:after,.abc-checkbox-primary input[type=radio]:checked+label:after{color:#fff}.abc-checkbox-danger input[type=checkbox]:checked+label:before,.abc-checkbox-danger input[type=radio]:checked+label:before{background-color:#e3342f;border-color:#e3342f}.abc-checkbox-danger input[type=checkbox]:checked+label:after,.abc-checkbox-danger input[type=radio]:checked+label:after{color:#fff}.abc-checkbox-info input[type=checkbox]:checked+label:before,.abc-checkbox-info input[type=radio]:checked+label:before{background-color:#0a92dd;border-color:#0a92dd}.abc-checkbox-info input[type=checkbox]:checked+label:after,.abc-checkbox-info input[type=radio]:checked+label:after{color:#fff}.abc-checkbox-warning input[type=checkbox]:checked+label:before,.abc-checkbox-warning input[type=radio]:checked+label:before{background-color:#f6993f;border-color:#f6993f}.abc-checkbox-warning input[type=checkbox]:checked+label:after,.abc-checkbox-warning input[type=radio]:checked+label:after{color:#fff}.abc-checkbox-success input[type=checkbox]:checked+label:before,.abc-checkbox-success input[type=radio]:checked+label:before{background-color:#38c172;border-color:#38c172}.abc-checkbox-success input[type=checkbox]:checked+label:after,.abc-checkbox-success input[type=radio]:checked+label:after{color:#fff}.abc-checkbox-primary input[type=checkbox]:indeterminate+label:before,.abc-checkbox-primary input[type=radio]:indeterminate+label:before{background-color:#009ad9;border-color:#009ad9}.abc-checkbox-primary input[type=checkbox]:indeterminate+label:after,.abc-checkbox-primary input[type=radio]:indeterminate+label:after{background-color:#fff}.abc-checkbox-danger input[type=checkbox]:indeterminate+label:before,.abc-checkbox-danger input[type=radio]:indeterminate+label:before{background-color:#e3342f;border-color:#e3342f}.abc-checkbox-danger input[type=checkbox]:indeterminate+label:after,.abc-checkbox-danger input[type=radio]:indeterminate+label:after{background-color:#fff}.abc-checkbox-info input[type=checkbox]:indeterminate+label:before,.abc-checkbox-info input[type=radio]:indeterminate+label:before{background-color:#0a92dd;border-color:#0a92dd}.abc-checkbox-info input[type=checkbox]:indeterminate+label:after,.abc-checkbox-info input[type=radio]:indeterminate+label:after{background-color:#fff}.abc-checkbox-warning input[type=checkbox]:indeterminate+label:before,.abc-checkbox-warning input[type=radio]:indeterminate+label:before{background-color:#f6993f;border-color:#f6993f}.abc-checkbox-warning input[type=checkbox]:indeterminate+label:after,.abc-checkbox-warning input[type=radio]:indeterminate+label:after{background-color:#fff}.abc-checkbox-success input[type=checkbox]:indeterminate+label:before,.abc-checkbox-success input[type=radio]:indeterminate+label:before{background-color:#38c172;border-color:#38c172}.abc-checkbox-success input[type=checkbox]:indeterminate+label:after,.abc-checkbox-success input[type=radio]:indeterminate+label:after{background-color:#fff}.abc-radio{cursor:default;padding-left:4px}.abc-radio label{cursor:pointer;display:inline;vertical-align:top;position:relative;padding-left:5px}.abc-radio label:before{content:"";width:17px;height:17px;top:2px;left:0;border:1px solid #dee2e6;border-radius:50%;background-color:#fff;-webkit-transition:border .15s ease-in-out;transition:border .15s ease-in-out}.abc-radio label:after,.abc-radio label:before{cursor:pointer;display:inline-block;position:absolute;margin-left:-20px}.abc-radio label:after{content:" ";width:11px;height:11px;left:3px;top:5px;border-radius:50%;background-color:#6c757d;-webkit-transform:scale(0);transform:scale(0);-webkit-transition:-webkit-transform .1s cubic-bezier(.8,-.33,.2,1.33);transition:-webkit-transform .1s cubic-bezier(.8,-.33,.2,1.33);transition:transform .1s cubic-bezier(.8,-.33,.2,1.33);transition:transform .1s cubic-bezier(.8,-.33,.2,1.33),-webkit-transform .1s cubic-bezier(.8,-.33,.2,1.33)}.abc-radio input[type=radio]{position:static;margin-left:0;cursor:pointer;opacity:0;z-index:1}.abc-radio input[type=radio]:focus+label:before{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.abc-radio input[type=radio]:checked+label:after{-webkit-transform:scale(1);transform:scale(1)}.abc-radio input[type=radio]:disabled+label{opacity:.65}.abc-radio input[type=radio]:disabled+label:after,.abc-radio input[type=radio]:disabled+label:before{cursor:not-allowed}.abc-radio.radio-inline{margin-top:0}.abc-radio-primary input[type=radio]+label:after{background-color:#009ad9}.abc-radio-primary input[type=radio]:checked+label:before{border-color:#009ad9}.abc-radio-primary input[type=radio]:checked+label:after{background-color:#009ad9}.abc-radio-danger input[type=radio]+label:after{background-color:#e3342f}.abc-radio-danger input[type=radio]:checked+label:before{border-color:#e3342f}.abc-radio-danger input[type=radio]:checked+label:after{background-color:#e3342f}.abc-radio-info input[type=radio]+label:after{background-color:#0a92dd}.abc-radio-info input[type=radio]:checked+label:before{border-color:#0a92dd}.abc-radio-info input[type=radio]:checked+label:after{background-color:#0a92dd}.abc-radio-warning input[type=radio]+label:after{background-color:#f6993f}.abc-radio-warning input[type=radio]:checked+label:before{border-color:#f6993f}.abc-radio-warning input[type=radio]:checked+label:after{background-color:#f6993f}.abc-radio-success input[type=radio]+label:after{background-color:#38c172}.abc-radio-success input[type=radio]:checked+label:before{border-color:#38c172}.abc-radio-success input[type=radio]:checked+label:after{background-color:#38c172}label .form-check-input.is-invalid .abc-checkbox:before,label .form-check-input.is-invalid .abc-radio:before,label .was-validated .form-check-input:invalid .abc-checkbox:before,label .was-validated .form-check-input:invalid .abc-radio:before{border-color:#e3342f}.form-control{border:1px solid #dee2e6}.form-control:focus{border-color:#1e2442;box-shadow:none}.form-check-label,.form-control{font-size:.85rem}.form-row .form-group label{margin-bottom:.1rem}.input-group-text{font-size:.85rem}.input-group-prepend{min-width:40px}@media (min-width:576px){.card-filters .form-group{margin-bottom:0}}.form-control.datepicker{padding:.25rem .5rem}.form-control::-webkit-input-placeholder{color:#8b97a3}.form-control::-moz-placeholder{color:#8b97a3}.form-control:-ms-input-placeholder{color:#8b97a3}.form-control::-ms-input-placeholder{color:#8b97a3}.form-control::placeholder{color:#8b97a3}::-webkit-input-placeholder{color:#8b97a3;font-style:italic}::-moz-placeholder{color:#8b97a3;opacity:1;font-style:italic}:-ms-input-placeholder{color:#8b97a3;font-style:italic}::-ms-input-placeholder{color:#8b97a3;font-style:italic}::placeholder{color:#8b97a3;font-style:italic}.select2-container .select2-search--inline .select2-search__field::-webkit-input-placeholder{padding-top:5px}.select2-container .select2-search--inline .select2-search__field::-moz-placeholder{padding-top:5px}.select2-container .select2-search--inline .select2-search__field:-ms-input-placeholder{padding-top:5px}.select2-container .select2-search--inline .select2-search__field::-ms-input-placeholder{padding-top:5px}.select2-container .select2-search--inline .select2-search__field::placeholder{padding-top:5px}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.btn:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:none}button:disabled{cursor:not-allowed}.btn-primary{background-color:#5d63ff;border-color:#5d63ff;color:#fff}.btn-primary .badge{color:#bddbff}.btn-primary:hover{background-color:#6c72ff;border-color:#6c72ff}.btn-secondary{background-color:#d9e2ec;border-color:#edf2f5;color:#5d63ff}.btn-secondary:hover{background-color:#cfdae7;border-color:#e3ebf0;color:#5d63ff}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{background-color:#e3ebf0;border-color:#e3ebf0;color:#5d63ff}.btn-light{color:#495057;background-color:#f8f9fb;border:1px solid #dee2e6}.btn-light:hover{color:#40464c;background-color:#eef1f5;border:1px solid #d5dadf}a.btn-link{color:#0056b3}.btn-filter{padding:.26rem 1rem!important}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#474d54;background-color:#f5f6f8;border-color:#dae0e5}.btn-outline-primary{color:#5d63ff;border-color:#5d63ff}.btn-xs{padding:.4rem;font-size:.7rem;line-height:.5;border-radius:.2rem}.btn-wide{padding-left:1rem!important;padding-right:1rem!important}.btn-group-sm>.btn,.btn-sm{padding:.4rem 1rem;line-height:1.5}.btn .badge{color:#969fa8;top:auto}.btn-group .btn{border:1px solid #e1e4e7;color:#495057}.btn-group .btn-primary{color:#fff}.btn-group-sm>.btn,.btn-sm{font-size:.75rem;padding:.2rem .5rem}.btn-group-md>.btn,.btn-md{font-size:.8rem;padding:.35rem .75rem}.page-signin-alt .signin-password{position:relative}.page-signin-alt .signin-password .forgot{position:absolute;right:7px;top:7px;color:#555;background:#f0f4f7;border-radius:2px;line-height:25px;padding:0 7px;font-size:12px}.sidebar.modal .close{position:absolute;right:5px;top:2px;color:#fff;text-shadow:0 1px 0 #fff;opacity:.8}.modal-left .modal-dialog{position:fixed;margin:auto;width:200px;height:100%;-webkit-transform:translateZ(0);transform:translateZ(0)}.modal-left .modal-content{overflow-y:auto}.modal-left.fade .modal-dialog{left:-200px;-webkit-transition:opacity .2s linear,left .2s ease-out;transition:opacity .2s linear,left .2s ease-out}.modal-left.fade.show .modal-dialog{left:0}.card-table .table{margin-bottom:0}.card-table .table th{border-top:none}.table thead th{border-bottom:1px solid #dee2e6}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.03)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}table.table-hover-reset tr:hover{background-color:inherit;opacity:1}.table th,.table tr.bold td{font-weight:700}.table th{background-color:#fdfdfd;color:#1e2442}.table td,.table th{padding:.8rem;border-top:1px solid #e9edf1}.table-hover tbody tr:hover{background-color:#f6fafc}@supports (font-variation-settings:normal){html{font-family:Nunito,Helvetica Neue,Helvetica,Arial,sans-serif}}body,html{height:100%}body{font-family:Nunito,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:.85rem;overflow-x:hidden;overflow-y:auto;background-color:#f0f4f7;color:#555}a{color:#0056b3}h1{font-weight:300;font-size:2.2rem;margin-bottom:20px}.col-0{width:0}#content-wrapper{min-width:100vw}@media (min-width:992px){#content-wrapper{min-width:0;width:100%}}.bg-purple-100{background-color:#1e2442!important}.bg-purple-500{background-color:#5d63ff!important}a.color-purple-500,a.color-purple-500:active,a.color-purple-500:hover{color:#1e2442}.color-purple-500{color:#5d63ff}.color-gray-100{color:#eceff2!important}.color-gray-200{color:#dee2e6!important}.color-gray-300{color:#ced4da!important}.color-gray-400{color:#adb5bd!important}.color-gray-500{color:#8b97a3!important}.color-gray-600{color:#6c757d!important}.color-gray-700{color:#495057!important}.color-gray-800{color:#343a40!important}.fw-25{flex:0 0 25px}.fw-25,.fw-80{-webkit-box-flex:0}.fw-80{flex:0 0 80px}.fw-160{-webkit-box-flex:0;flex:0 0 160px}.bg-trial-header{background-color:#ffe4af}.main-header .workspace-select{line-height:24px}.main-header .user-dropdown{border:1px solid transparent;line-height:24px}.main-header .dropdown-item:hover .fas{color:#1e2442}.main-header .dropdown-toggle:after{display:none}@media (min-width:576px){.main-header .workspace-select{border:1px solid rgba(107,120,133,.1);box-shadow:0 1px 1px rgba(0,0,0,.04);border-radius:4px;line-height:24px}}.navbar-expand .navbar-nav .nav-link{padding-right:0}.navbar{background-color:#fff;border:none}.dropdown-menu{font-size:.85rem;background:#fff;border:1px solid rgba(43,49,55,.07);box-shadow:0 1px 2px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.02),0 10px 18px rgba(43,49,55,.25);border-radius:4px}.nav-pills a.nav-link{border-radius:0;color:#1e2442;padding:.4rem .8rem .3rem;margin-right:.5rem}.nav-pills a.nav-link.active{background-color:transparent;color:#1e2442}.nav-pills a.nav-link.active,.nav-pills a.nav-link:hover{border-bottom:4px solid #5d63ff;border-radius:4px}.sidebar{-webkit-box-flex:0;flex:0 0 225px;transition:transform .1s ease-in-out,width .1s ease-in-out,margin .1s ease-in-out,-webkit-transform .1s ease-in-out}.sidebar .sidebar-inner{margin:0 1.5rem}.sidebar ul{margin:0;padding:0}.sidebar li{white-space:nowrap;overflow:hidden}.sidebar li.nav-item{color:#fff;margin-bottom:.2rem;padding:0}.sidebar li.nav-item a.nav-link{color:#fff;font-weight:400;font-size:.9rem;padding:.7rem 0 .7em 1.2rem;border-left:6px solid #1e2442;border-radius:6px}.sidebar li.nav-item a.nav-link .fas{color:#7c97a4}.sidebar li.nav-item a.nav-link:hover{background:#2e3765;border-left-color:#2e3765}.sidebar li.nav-item.active a.nav-link{color:#fff;background:#2e3765;border-left-color:#5d63ff}.sidebar li.nav-item.active a.nav-link .fas{color:#fff}.sidebar .metismenu ul a{padding:5px 0 5px 40px}.main-wrapper{background-color:#f4f8ff;transition:transform .3s ease-in-out,width .3s ease-in-out,margin .3s ease-in-out,-webkit-transform .3s ease-in-out}.card{border-radius:4px;box-shadow:0 3px 5px rgba(0,0,0,.1);border:none;margin-bottom:16px}.card .card-header{background-color:#fff;font-weight:600;padding:1.25rem;border-bottom:1px solid #dee2e6;font-size:1.3rem}.card .card-header .card-filters{margin-top:1rem;padding-top:1.25rem;padding-left:1.25rem;padding-right:1.25rem;border-top:1px solid #edeff2}.card .card-header .h5,.card .card-header h5{font-size:1.2rem;margin-bottom:0;margin-top:.2rem;color:#8b97a3}.card .card-body{background-color:#fff}.card .card-table{padding:0}.widget{position:relative;display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border-radius:.25rem;border-bottom:3px solid #b1b9ff}.widget .h2{font-weight:400}.widget .fal{color:#8b97a3}.error-listing .card,.error-listing .card .card-body{padding-top:0;padding-bottom:0}.error-listing .card .row{border-bottom:1px solid #ebedef;padding-top:1rem;padding-bottom:1rem}.error-listing .card .row:last-of-type{border-bottom:none}.error-listing .card .error-name{font-weight:700}.error-listing .card .error-name span{font-weight:400;color:#8b97a3;font-size:.7rem}ul.pagination{margin-bottom:0}ul.pagination .page-item.active .page-link{background-color:#1e2442;border-color:#1e2442}ul.pagination .page-link{color:#1e2442}.alert ul{margin-bottom:0}.sub-plans label{line-height:24px}.select2{width:100%!important}.select2-container--default .select2-selection--multiple{border:1px solid #dee2e6}.select2-container .select2-selection--multiple{min-height:30px}.select2-container--default .select2-selection--multiple .select2-selection__choice{margin-top:3px}.select2-container--default.select2-container--focus .select2-selection--multiple{border:1px solid #1e2442;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.select2-container .select2-search--inline .select2-search__field{margin-top:2px}.select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#1e2442;box-shadow:none}.empty-table-text{margin:0 2rem;text-align:center;color:#777;font-size:.75rem;text-transform:uppercase;letter-spacing:.1em}.badge{letter-spacing:.075em;padding:.25rem .5rem;border-radius:4px;font-size:.75rem}.badge-light{background-color:#eceff2;color:#495057}.badge-success{background-color:#d7f5ea;color:#306955}.badge-danger{background-color:#ffebee;color:#cf1124}.badge-warning{background-color:#ffefe6;color:#cb6e17}.badge-info{background-color:#e6f6ff;color:#0a558c}.note-editor.note-frame{border:1px solid #dee2e6}.bootstrap-select>.dropdown-toggle{background-color:#fff}.filter-option-inner-inner{font-size:.85rem}#segmentFilterSelector button{padding:.25rem .5rem!important} \ No newline at end of file diff --git a/public/mix-manifest.json b/public/mix-manifest.json index 94145b94..56dc0ad4 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -1,3 +1,3 @@ { - "/app.css": "/app.css?id=8fa2afbe06c9622a3801" + "/app.css": "/app.css?id=fdfdbbc67e911948e90e" } diff --git a/resources/sass/app.scss b/resources/sass/app.scss index e581b066..c72070f2 100644 --- a/resources/sass/app.scss +++ b/resources/sass/app.scss @@ -174,7 +174,6 @@ a.color-purple-500 { border: 1px solid rgba(43, 49, 55, 0.07); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05), 0 4px 5px rgba(0, 0, 0, 0.02), 0 10px 18px rgba(43, 49, 55, 0.25); border-radius: $radius; - width: 12.5rem; } .nav-pills { @@ -388,8 +387,6 @@ ul.pagination { */ - - .alert ul { margin-bottom: 0; } @@ -476,3 +473,15 @@ ul.pagination { .note-editor.note-frame { border: 1px solid $gray-200; } + +.bootstrap-select > .dropdown-toggle { + background-color: $white; +} + +.filter-option-inner-inner { + font-size: .85rem; +} + +#segmentFilterSelector button { + padding: .25rem .5rem !important; +} diff --git a/resources/views/subscribers/index.blade.php b/resources/views/subscribers/index.blade.php index efb8888e..55f6cc32 100644 --- a/resources/views/subscribers/index.blade.php +++ b/resources/views/subscribers/index.blade.php @@ -25,6 +25,16 @@ + @if(count($segments)) +
+ +
+ @endif + @if(request()->anyFilled(['name', 'status'])) @@ -65,6 +75,7 @@ class="btn btn-md btn-light">{{ __('Clear') }} {{ __('Email') }} {{ __('Name') }} + {{ __('Segments') }} {{ __('Created') }} {{ __('Status') }} {{ __('Actions') }} @@ -79,6 +90,12 @@ class="btn btn-md btn-light">{{ __('Clear') }} {{ $subscriber->full_name }} + + @forelse($subscriber->segments as $segment) + {{ $segment->name }} + @empty + - + @endforelse {{ $subscriber->created_at->diffForHumans() }} @@ -95,7 +112,8 @@ class="btn btn-md btn-light">{{ __('Clear') }} @method('DELETE') {{ __('Edit') }} - + @@ -122,7 +140,7 @@ class="btn btn-xs btn-light">{{ __('Edit') }} let confirmDelete = confirm('Are you sure you want to permanently delete this subscriber and all associated data?'); - if(confirmDelete) { + if (confirmDelete) { element.closest('form').submit(); } }); @@ -130,3 +148,11 @@ class="btn btn-xs btn-light">{{ __('Edit') }} @endsection + +@push('css') + +@endpush + +@push('js') + +@endpush diff --git a/src/Http/Controllers/Subscribers/SubscribersController.php b/src/Http/Controllers/Subscribers/SubscribersController.php index 9ff00e43..64307654 100644 --- a/src/Http/Controllers/Subscribers/SubscribersController.php +++ b/src/Http/Controllers/Subscribers/SubscribersController.php @@ -39,15 +39,18 @@ public function __construct(SubscriberTenantRepositoryInterface $subscriberRepo, */ public function index(): View { + $workspace = auth()->user()->currentWorkspace(); + $subscribers = $this->subscriberRepo->paginate( - auth()->user()->currentWorkspace()->id, + $workspace->id, 'email', - [], + ['segments'], 50, request()->all() ); + $segments = $this->segmentRepo->pluck($workspace->id, 'name', 'id'); - return view('sendportal::subscribers.index', compact('subscribers')); + return view('sendportal::subscribers.index', compact('subscribers', 'segments')); } /** diff --git a/src/Repositories/Subscribers/BaseSubscriberTenantRepository.php b/src/Repositories/Subscribers/BaseSubscriberTenantRepository.php index 78728a82..474f6486 100644 --- a/src/Repositories/Subscribers/BaseSubscriberTenantRepository.php +++ b/src/Repositories/Subscribers/BaseSubscriberTenantRepository.php @@ -137,10 +137,11 @@ protected function applyStatusFilter(Builder $instance, array $filters): void */ protected function applySegmentFilter(Builder $instance, array $filters = []): void { - if ($segmentId = Arr::get($filters, 'segment_id')) { + if ($segmentIds = Arr::get($filters, 'segments')) { $instance->select('subscribers.*') ->leftJoin('segment_subscriber', 'subscribers.id', '=', 'segment_subscriber.subscriber_id') - ->whereIn('segment_subscriber.segment_id', $segmentId); + ->whereIn('segment_subscriber.segment_id', $segmentIds) + ->distinct(); } } } diff --git a/tests/Feature/Subscribers/SubscribersControllerTest.php b/tests/Feature/Subscribers/SubscribersControllerTest.php index a8c47f69..1e1a11fa 100644 --- a/tests/Feature/Subscribers/SubscribersControllerTest.php +++ b/tests/Feature/Subscribers/SubscribersControllerTest.php @@ -6,6 +6,7 @@ use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Foundation\Testing\WithFaker; +use Sendportal\Base\Models\Segment; use Sendportal\Base\Models\Subscriber; use Tests\TestCase; @@ -121,4 +122,63 @@ public function the_show_view_is_accessible_by_an_authenticated_user() // then $response->assertOk(); } + + /** @test */ + public function the_subscribers_index_lists_subscribers() + { + [$workspace, $josh] = $this->createUserAndWorkspace(); + $subscriber = factory(Subscriber::class, 5)->create([ + 'workspace_id' => $workspace->id, + ]); + + $response = $this->actingAs($josh) + ->get(route('sendportal.subscribers.index')); + + $subscriber->each(static function (Subscriber $subscriber) use ($response) { + $response->assertSee($subscriber->email); + $response->assertSee("{$subscriber->first_name} {$subscriber->last_name}"); + }); + } + + /** @test */ + public function the_subscribers_index_can_be_filtered_by_segments() + { + [$workspace, $josh] = $this->createUserAndWorkspace(); + + $firstSegment = factory(Segment::class)->create([ + 'workspace_id' => $workspace->id, + ]); + $secondSegment = factory(Segment::class)->create([ + 'workspace_id' => $workspace->id, + ]); + $thirdSegment = factory(Segment::class)->create([ + 'workspace_id' => $workspace->id, + ]); + + $firstSegmentSubscriber = factory(Subscriber::class)->create([ + 'workspace_id' => $workspace->id, + ]); + $secondSegmentSubscriber = factory(Subscriber::class)->create([ + 'workspace_id' => $workspace->id, + ]); + $thirdSegmentSubscriber = factory(Subscriber::class)->create([ + 'workspace_id' => $workspace->id, + ]); + + $firstSegment->subscribers()->attach($firstSegmentSubscriber->id); + $secondSegment->subscribers()->attach($secondSegmentSubscriber->id); + $thirdSegment->subscribers()->attach($thirdSegmentSubscriber->id); + + $response = $this->actingAs($josh) + ->get(route('sendportal.subscribers.index', [ + 'segments' => [$firstSegment->id, $secondSegment->id] + ])); + + $response->assertSee($firstSegmentSubscriber->email); + $response->assertSee("{$firstSegmentSubscriber->first_name} {$firstSegmentSubscriber->last_name}"); + $response->assertSee($secondSegmentSubscriber->email); + $response->assertSee("{$secondSegmentSubscriber->first_name} {$secondSegmentSubscriber->last_name}"); + $response->assertDontSee($thirdSegmentSubscriber->email); + $response->assertDontSee("{$thirdSegmentSubscriber->first_name} {$thirdSegmentSubscriber->last_name}"); + } }