14 Коммитов

Автор SHA1 Сообщение Дата
Sai Sudheer c481a8e695 error 2023-03-10 10:34:45 +05:30
Sai Sudheer d02dccac23 Latesy changes are commited 2023-03-10 09:54:46 +05:30
Sai Sudheer d0edbd14b2 x 2023-02-14 11:18:34 +05:30
Sai Sudheer 1b8cdc724d new changes commited 2023-02-14 11:14:20 +05:30
Sai Sudheer 7451aaa715 latest changes are 2023-02-14 11:07:45 +05:30
Sai Sudheer 607911e44f all changes are committed 2023-02-14 10:25:02 +05:30
Sai Sudheer c407874e58 Merge branch 'master' of https://code.bizgaze.com/dsaisudheer3772/BizgazeUI
# Conflicts:
#	assets/js/setting.js
2023-01-18 17:53:32 +05:30
Naresh Ch a23ae5c1bf test git 2023-01-18 17:48:55 +05:30
Sai Sudheer def43a902a second time merge 2023-01-18 17:42:48 +05:30
naresh.ch e08eee7c1b Merge branch 'sudheer1.0' of dsaisudheer3772/BizgazeUI into master 2023-01-18 12:11:07 +00:00
Sai Sudheer 4792dde7c5 merging 2023-01-18 17:36:27 +05:30
Sai Sudheer 115ae2df32 Form Loading in iframe 2023-01-02 11:04:10 +05:30
Sai Sudheer 07ce07bbb6 Merge branch 'sudheer1.0'
# Conflicts:
#	assets/js/setting.js
2022-12-28 10:20:45 +05:30
Sai Sudheer 8224993f68 2.0 branch 2022-12-09 18:18:00 +05:30
2298 изменённых файлов: 49575 добавлений и 911 удалений
+689 -152
Просмотреть файл
@@ -1,284 +1,821 @@
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap');
@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap");
:root {
--topNavHeight: 75px;
--rtrWidth: 50px;
--lftWidth: 275px;
--tpMenuPad: 30px;
--icnPadng: 10px 0px;
--prmBgColor: rgb(244, 244, 221);
--secdBgColor: #fafaf3;
--secdSubColor: #f4f4f3;
--lstPgArc: 15px;
--topNavHeightMob:65px;
--topNavHeight: 75px;
--rtrWidth: 60px;
--lftWidth: 275px;
--tpMenuPad: 30px;
--icnPadng: 10px 0px;
--prmBgColor: rgb(244, 244, 221);
--secdBgColor: #fafaf3;
--secdSubColor: #f4f4f3;
--lstPgArc: 15px;
--frmIfrmeWidth: 500px;
--frmIfrmeHeight: 550px;
--frmIfrmeHeightPopUp: 80%;
}
a {
color: #000 !important;
text-decoration: none !important;
}
body {
margin: 0px;
padding: 0px;
font-family: 'Poppins', sans-serif;
margin: 0px;
padding: 0px;
font-family: "Poppins", sans-serif;
}
ul,
li {
margin: 0px;
padding: 0px;
margin-left: 0px;
margin-right: 0px;
padding-left: 0px;
padding-right: 0px;
list-style: none;
margin: 0px;
padding: 0px;
margin-left: 0px;
margin-right: 0px;
padding-left: 0px;
padding-right: 0px;
list-style: none;
}
.list-page {
display: flex;
flex-direction: column;
padding: 0px !important;
display: flex;
flex-direction: column;
margin: 0px !important;
}
.tp-bar {
width: 100%;
position: fixed;
top: 0px;
left: 0px;
height: var(--topNavHeight);
display: flex;
flex-direction: row;
list-style: none;
align-items: center;
padding-left: 0px !important;
padding-right: 0px !important;
z-index: 1000;
height: var(--topNavHeight);
display: flex;
flex-direction: row;
list-style: none;
align-items: center;
padding-left: 0px !important;
padding-right: 0px !important;
z-index: 1;
margin-bottom: 0px;
}
ul.tp-bar li {
margin: 0px 16px;
margin: 0px 5px;
}
ul.tp-bar li:last-child {
margin-right: 20px;
}
li.logo-li {
display: flex;
flex-direction: row;
align-items: center;
width: calc(var(--lftWidth) - var(--tpMenuPad));
display: flex;
flex-direction: row;
align-items: center;
width: calc(var(--lftWidth));
margin-left: 0px !important;
}
.logo {
font-size: 25px;
margin-left: 25px;
.logo-li .logo-img {
height: 50px;
margin-left: 15px;
padding: 8px;
}
.btm-bar {
position: fixed;
top: var(--topNavHeight);
left: 0;
height: calc(100vh -var(--topNavHeight));
width: 100%;
height: 100%;
display: flex;
flex-direction: row;
height: calc(100vh - var(--topNavHeight));
display: flex;
flex-direction: row;
}
.lft-nav-bar {
position: fixed;
left: 0;
width: var(--lftWidth);
height: inherit;
display: flex;
flex-direction: row;
z-index: 1;
position: fixed;
left: 0;
width: var(--lftWidth);
height: calc(100vh - var(--topNavHeight));
display: flex;
flex-direction: row;
}
.lft-nav-bar .lft-nav-bar-1,
.lft-nav-bar .lft-nav-bar-2 {
list-style: none;
margin-bottom: 0px !important;
padding-left: 0px !important;
list-style: none;
margin-bottom: 0px !important;
padding-left: 0px;
}
.lft-nav-bar-1 {
width: var(--rtrWidth);
display: flex;
flex-direction: column;
align-items: center;
background-color: var(--prmBgColor);
padding: 0px 5px !important;
width: var(--rtrWidth);
display: flex;
flex-direction: column;
align-items: center;
background-color: var(--prmBgColor);
}
.lft-nav-bar-1 li,
.lft-nav-bar-2 li {
margin: var(--icnPadng);
.lft-nav-bar-1 li {
margin: 4px 0px;
}
.lft-nav-bar-2 li {
font-size: 16px;
padding: 0px 15px;
margin: 6px 0px;
}
.lft-nav-bar-2 li {
font-size: 16px;
padding: 0px 15px;
}
.lft-nav-bar-2 {
width: calc(var(--lftWidth) - var(--rtrWidth));
display: flex;
flex-direction: column;
background-color: var(--secdBgColor);
transition: width 0.3s;
width: calc(var(--lftWidth) - var(--rtrWidth));
display: flex;
flex-direction: column;
background-color: var(--secdBgColor);
transition: width 0.3s;
}
.rtr-nav-bar {
position: fixed;
right: 0;
width: var(--rtrWidth);
height: inherit;
background-color: var(--prmBgColor);
list-style: none;
display: flex;
flex-direction: column;
align-items: center;
display: none !important;
position: fixed;
right: 0;
width: 0px;
height: calc(100vh - var(--topNavHeight));
background-color: var(--prmBgColor);
list-style: none;
display: flex;
flex-direction: column;
align-items: center;
}
.rtr-nav-bar span {
margin: var(--icnPadng);
margin: var(--icnPadng);
}
.ctr-lst-pge {
position: fixed;
z-index: 2;
left: var(--lftWidth);
right: var(--rtrWidth);
height: inherit;
margin: 0px 20px;
background-color: var(--secdSubColor);
border-top-left-radius: var(--lstPgArc);
border-top-right-radius: var(--lstPgArc);
position: fixed;
overflow-y: hidden;
z-index: 0;
width: calc();
left: var(--lftWidth);
right: 0px;
height: calc(100vh - var(--topNavHeight));
margin: 0px 20px;
background-color: var(--secdSubColor);
border-top-left-radius: var(--lstPgArc);
border-top-right-radius: var(--lstPgArc);
}
.srch-bar {
width: 35%;
width: 35%;
margin-left: 15px !important;
}
.form-control#searchBar {
padding: 10px;
box-shadow: none;
width: 100%;
padding: 10px;
box-shadow: none;
width: 100%;
}
.ml-auto {
margin-left: auto !important;
margin-left: auto !important;
}
.mr-auto {
margin-right: auto !important;
margin-right: auto !important;
}
.mt-auto {
margin-top: auto !important;
margin-top: auto !important;
}
.mb-auto {
margin-bottom: auto !important;
margin-bottom: auto !important;
}
.la {
font-size: 20px;
color: black;
.la,
[class^="ri-"] {
font-size: 1.2em;
color: black;
}
.lft-nav-bar-2 [class^="ri-"] {
font-size: 1.35em;
color: black;
}
.icn-circle:hover {
color: white;
color: white;
}
.icn-circle {
background-color: firebrick;
color: white;
padding: 10px;
text-decoration: none;
font-size: 12px;
background-color: firebrick;
color: white;
padding: 8px;
text-decoration: none;
}
.hdr {
font-size: 16px;
padding: 10px 5px;
font-weight: 600;
text-transform: capitalize;
background-color: #e3e3e3;
font-size: 16px;
padding: 10px 5px;
font-weight: 600;
text-transform: capitalize;
background-color: #e3e3e3;
}
.mnNvIcn,
.mnNvIcn:focus {
box-shadow: none !important;
box-shadow: none !important;
}
.mnNvIcn-div {
width: var(--rtrWidth);
display: flex;
justify-content: center;
align-items: center;
}
.mnNvIcn {
text-decoration: none;
margin: 0px 5px;
}
.mnNvIcn:hover {
/* background-color: var(--prmBgColor); */
background-color: #e8eaed;
padding: 3px 7px;
border-radius: 50%;
}
.lft-nav-bar.lft-nav-bar-Wrap {
width: var(--rtrWidth);
transition: width 0.3s;
width: var(--rtrWidth);
transition: width 0.3s;
}
.lft-nav-bar.lft-nav-bar-Wrap .lft-nav-bar-2 {
display: none;
transition: display 0.3s;
display: none;
transition: display 0.3s;
}
.bdy-ul {
height: 100%;
overflow-y: scroll;
height: 100%;
overflow-y: scroll;
}
.ctr-lst-pge.lft-nav-bar-Wrap {
left: var(--rtrWidth);
transition: left 0.3s;
left: var(--rtrWidth);
transition: left 0.3s;
}
a.badge {
font-size: 14px;
font-weight: 500;
color: inherit;
text-decoration: none;
font-size: 14px;
font-weight: 500;
color: inherit;
text-decoration: none;
}
.badge.badge-soft-green,
.badge.badge-soft-success {
background: #E6FBF2;
color: #00D67F;
background: #e6fbf2;
color: #00d67f;
}
/* scroll bar start here*/
::-webkit-scrollbar {
width: 6px;
width: 6px;
}
/* Track */
::-webkit-scrollbar-track {
background: #f1f1f1;
::-webkit-scrollbar-track {
background: #f1f1f1;
}
/* Handle */
::-webkit-scrollbar-thumb {
background: #888;
::-webkit-scrollbar-thumb {
background: #888;
}
/* Handle on hover */
::-webkit-scrollbar-thumb:hover {
background: #555;
::-webkit-scrollbar-thumb:hover {
background: #555;
}
/* Scroll bar End Here */
.accordion-button::after {
background-size: 0.9rem !important;
;
background-size: 0.9rem !important;
}
a[role="button"]:focus {
box-shadow: none !important;
box-shadow: none !important;
}
#notifi-list .item-li:first .accordion-button:not(.collapsed) {
border-top-left-radius: var(--lstPgArc);
border-top-right-radius: var(--lstPgArc);
border-top-left-radius: var(--lstPgArc);
border-top-right-radius: var(--lstPgArc);
}
input[type="checkbox"] {
box-shadow: none !important;
border-radius: 2px;
}
box-shadow: none !important;
border-radius: 2px;
}
.snd-fd-biz {
border-top: 1px solid rgba(0, 0, 0, 0.15);
}
.tp-bar li a {
padding: 3px 7px;
margin-top: 3px;
}
.nav-lft-item {
padding: 3px 7px;
display: flex;
flex-direction: column;
align-items: center;
}
.nav-lft-item span:nth-child(1) {
padding: 3px 7px;
}
.nav-lft-item span:nth-child(2) {
font-size: 13px;
color: #000;
font-weight: 400;
}
.tp-bar li a.nav-lft-item:hover {
padding-bottom: 5px !important;
padding: 8px;
background-color: #e8eaed;
border-radius: 50%;
}
button {
box-shadow: none !important;
}
button:focus {
box-shadow: none !important;
}
.plus {
color: #000;
margin-right: 8px;
}
.plus + span {
margin-right: 8px;
margin-bottom: 2px;
}
.create {
display: flex !important;
align-items: center;
color: #000 !important;
padding: 8px 8px !important;
background-color: var(--prmBgColor) !important;
border-color: var(--prmBgColor) !important;
border-top-left-radius: 18px !important;
border-bottom-left-radius: 18px !important;
border-top-right-radius: 18px !important;
border-bottom-right-radius: 18px !important;
}
.sub-nav-item {
display: flex;
align-items: center;
padding: 4px 10px !important;
font-size: 14px;
text-decoration: none;
color: #000;
}
.sub-nav-item.active,
.sub-nav-item:hover {
color: #000;
background-color: var(--prmBgColor);
border-top-left-radius: 16px;
border-top-right-radius: 16px;
border-bottom-left-radius: 16px;
border-bottom-right-radius: 16px;
}
.sub-nav-item span {
margin-right: 10px;
}
.nav-lft-item.active span:nth-child(1),
.nav-lft-item:hover span:nth-child(1) {
background-color: var(--secdBgColor);
border-radius: 50%;
padding: 3px 7px;
}
ul.ul-drpdown li {
padding: 0px !important;
}
ul.hdr-ul {
display: flex;
flex-direction: row;
align-items: center;
background-color: var(--secdBgColor);
border-top-left-radius: var(--lstPgArc);
border-top-right-radius: var(--lstPgArc);
height: 50px;
}
.chk-box-btn {
background-color: unset;
box-shadow: none;
}
ul.hdr-ul li {
margin: 0px 8px;
}
.pggtn {
padding: 0px 8px;
display: flex;
flex-direction: row;
align-items: center;
}
.li-pgn {
display: flex;
flex-direction: row;
align-items: center;
margin-left: auto !important;
}
.pggtn .lss-than,
.pggtn .grtr-than {
margin: 0px 8px;
}
.nt-actve .la,
.nt-actve [class^="ri-"] {
color: #e3e3e3 !important;
}
.rtr-nav-bar .rtr-item {
margin: 4px;
padding: 6px 12px;
}
.rtr-nav-bar .rtr-item:hover {
background-color: var(--secdBgColor);
border-radius: 50%;
padding: 6px 10px;
}
.frm-ifre {
width: var(--frmIfrmeWidth);
z-index: 1;
background-color: #f3f3f3;
position: absolute;
bottom: 0px;
margin-right: 1px;
border: 1px solid #dadada;
border-radius: 3px;
}
.frm-hdr {
padding: 0px 10px;
height: 40px;
display: flex;
flex-direction: row;
align-items: center;
}
.frm-hdr .ctrl {
margin-left: auto;
height: 40px;
display: flex;
flex-direction: row;
align-items: center;
}
.frm-hdr .ctrl .la {
font-size: 16px;
color: #000;
}
.frm-hdr .ctrl a {
margin: 0px 8px;
}
.ld-frm-src {
width: -webkit-fill-available;
height: calc(var(--frmIfrmeHeight) - 42px);
margin: 1px;
}
.wrap-iframe .ld-frm-src {
margin: 0px !important;
}
#crte-btn-lst {
max-height: 400px;
overflow-y: scroll;
}
.wrap-iframe {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
position: absolute;
top: 0px;
z-index: 1;
width: 100%;
height: 100%;
}
[data-ispop_up="false"] .app-title-ifrm {
width: 150px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.frm-ifre .frm-bdy {
line-height: 0 !important;
display: flex;
flex-direction: row;
}
.ChtAppIfrme {
margin-left: var(--rtrWidth);
height: calc(100vh - var(--topNavHeight));
overflow: hidden;
}
.bdy-ul .accordion-button::after {
margin-bottom: -8px;
}
.wrap-iframe + div .frm-ifre {
z-index: 0 !important;
}
.t-sec-min {
font-size: 14px;
width: 10%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
text-align: right;
}
.apps-list {
width: 360px;
max-height: 450px;
overflow-y: scroll;
overflow-x: hidden;
flex-wrap: wrap;
}
.appsBind {
display: flex;
flex-direction: column;
margin: 8px !important;
width: 72px;
justify-content: center;
align-items: center;
}
.appsBind .appTitle {
font-size: 14px;
text-align: center;
}
/* dont delete start here */
.ctr-lst-pge .bdy-ul .pdng {
font-size: 14px;
display: flex;
flex-direction: row;
align-items: center;
padding: 6px 15px 6px 20px !important;
cursor: pointer;
border-bottom: 1px solid #bebcbc;
position: relative;
}
.ctr-lst-pge .bdy-ul .pdng.lst-Notifi:hover {
-webkit-box-shadow: 0px 2px 3px 1px rgba(0, 0, 0, 0.75);
-moz-box-shadow: 0px 2px 3px 1px rgba(0, 0, 0, 0.75);
box-shadow: 0px 2px 3px 1px rgba(0, 0, 0, 0.75);
}
.ctr-lst-pge .bdy-ul .pdng:hover .hover {
display: block;
}
.wi-chck {
width: 60px;
display: flex;
align-items: center;
flex-direction: row;
}
.wi-chck .wi-item {
margin: 0px 8px;
}
.wi-sbjt-msge {
display: flex;
align-items: center;
flex-direction: row;
min-width: 0;
width: 100%;
}
.wi-msge {
flex-basis: 0;
box-flex: 1;
flex-grow: 1;
flex-shrink: 1;
text-align: left;
}
.wi-time {
text-align: right;
font-size: 12px;
font-weight: 500;
}
.hdr-ul .dropdown-toggle-split {
padding: 4px !important;
}
.ctr-lst-pge .bdy-ul .pdng .hover {
display: none;
position: absolute;
right: 10px;
padding-right: 20px;
background-color: var(--secdSubColor);
}
.ctr-lst-pge .bdy-ul .pdng .hover ul li.hover-item {
float: left;
}
.lst-Notifi[data-isreaded="2"],
.ctr-lst-pge .bdy-ul .pdng.lst-Notifi[data-isreaded="2"] .hover {
background-color: #cbceca;
opacity: 0.8;
}
.ctr-lst-pge .bdy-ul .pdng.lst-Notifi:hover .wi-time.time {
display: none !important;
}
.svg-icons {
width: 30px;
}
.apps-loading {
width: 330px;
height: 100vh;
background-color: var(--secdSubColor);
position: fixed;
right: 0;
}
#list-page {
height: 100vh;
}
.appsBind:hover {
cursor: pointer;
}
.wi-from.wi-item span {
text-transform: capitalize;
}
.lst-Notifi[data-isreaded="8"] span {
font-weight: 500;
}
.lst-Notifi[data-isreaded="2"] span {
font-weight: 400;
color: #6c757d !important;
}
.lst-Notifi[data-isreaded="8"] .wi-msge span,
.lst-Notifi[data-isreaded="2"] .wi-msge span {
color: #6c757d !important;
font-weight: 400;
}
.pdng.lst-Notifi .ri-star-line {
color: #6c757d;
opacity: 0.5;
}
.pdng.lst-Notifi:hover .ri-star-line,
.pdng.lst-Notifi:hover .wi-item .form-check-input {
opacity: 1;
}
.pdng.lst-Notifi .wi-item .form-check-input {
border: 1px solid#6c757d !important;
border-radius: 4px;
opacity: 0.5;
}
.pdng.lst-Notifi .wi-item .form-check-input:checked {
opacity: 1;
background-color: #b2b2b2;
}
.ml-0 {
margin-left: 0px !important;
}
.chck-box-ul.dropdown-menu.show {
border: 0px;
}
.dropdown-item.active,
.dropdown-item:active,
.dropdown-item:hover {
background-color: var(--prmBgColor) !important;
}
.ctr-lst-pge.apps-loaded {
width: calc(100% - var(--rtrWidth) - 330px - 48px) !important;
}
.ctr-lst-pge.apps-loaded-tr {
width: calc(100% - var(--lftWidth) - 330px - 48px) !important;
}
.frm_hdr[data-frm_hdr="true"]{
display: none !important;
}
/* Mobile, tab View start here */
@media only screen and (max-width: 1024px) {
.btm-bar .lft-nav-bar{
display: none;
}
.btm-bar .ctr-lst-pge{
left:0px !important;
}
.sdr-nme{
width: 45px;
height: 45px;
border-radius: 50%;
background-color: #00d67f;
}
.hdr-ul{
display: none !important;
}
.ctr-lst-pge{
border-top-left-radius:0px;
border-top-right-radius:0px;
}
.ctr-lst-pge .bdy-ul .pdng{
padding: 8px !important;
}
.wi-chck{
width: unset;
}
.wi-item:first-of-type{
display: none;
}
}
@media only screen and (max-width: 600px) {
.srch-bar{
display: none;
}
.ctr-lst-pge{
margin: 0px !important;
}
ul.tp-bar li:last-child{
margin-right: 10px;
}
.mnNvIcn{
margin:0px !important;
padding: 0px !important;
}
.mnNvIcn-div{
justify-content: unset;
margin-left: 10px;
flex-basis: content;
}
.tp-bar{
height: 65px;
}
.tp-bar .logo-li{
flex-basis: content;
}
.wi-chck{
flex-basis: content;
}
.apps-loading{
width: 100%;
top: var(--topNavHeightMob);
}
.frm-ifre{
width: 100%;
}
}
/* Mobile, tab View End here */
/*common Class start Here*/
.w-5p{
width: 5px;
}.w-10p{
width: 10px;
}.w-15p{
width: 15px;
}.w-20p{
width: 20px;
}.w-25p{
width: 25px;
}.w-30p{
width: 30px;
}.w-35p{
width: 35px;
}.w-40p{
width: 40px;
}.w-45p{
width: 45px;
}.w-50p{
width: 50px;
}.w-55p{
width: 55px;
}.w-60p{
width: 60px;
}.w-65p{
width: 65px;
}.w-70p{
width: 70px;
}.fw-400{
font-weight: 400;
}.fw-500{
font-weight: 500;
}.fw-600{
font-weight: 600;
}.fw-700{
font-weight: 700;
}.font-10{
font-size: 10px;
}.font-11{
font-size: 11px;
}.font-12{
font-size: 12px;
}.font-13{
font-size: 13px;
}.font-14{
font-size: 14px;
}.font-15{
font-size: 15px;
}.font-16{
font-size: 16px;
}.font-17{
font-size: 17px;
}.font-18{
font-size: 18px;
}.font-19{
font-size: 19px;
}.font-20{
font-size: 20px;
}.font-21{
font-size: 21px;
}.font-22{
font-size: 22px;
}
/*common Class End Here*/
+153 -154
Просмотреть файл
@@ -1,4 +1,4 @@
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap');
@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap");
html,
body,
@@ -13,282 +13,281 @@ h6,
p,
a,
input {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
body {
margin: 0;
font-family: 'Poppins', sans-serif;
color: #3d3d3d;
margin: 0;
font-family: "Poppins", sans-serif;
color: #3d3d3d;
}
.d-none {
display: none;
display: none;
}
.biz-login-wrap {
width: 100%;
display: flex;
align-items: center;
height: 100vh;
margin: 0;
width: 100%;
display: flex;
align-items: center;
height: 100vh;
margin: 0;
}
.biz-login-wrap .form-container {
width: 375px;
height: auto;
margin: auto;
position: relative;
padding: 40px;
border: 1px solid #dadce0;
border-radius: 5px;
overflow: hidden;
width: 375px;
height: auto;
margin: auto;
position: relative;
padding: 40px;
border: 1px solid #dadce0;
border-radius: 5px;
overflow: hidden;
}
.biz-login-wrap .form-group {
position: relative;
position: relative;
}
.biz-login-wrap .form-group input {
width: 100%;
box-sizing: border-box;
border: 1px solid #d0d0d0;
background-color: transparent;
border-radius: 4px;
color: #202124;
font-size: 16px;
margin: 1px 1px 0 1px;
padding: 13px 15px;
z-index: 1;
width: 100%;
box-sizing: border-box;
border: 1px solid #d0d0d0;
background-color: transparent;
border-radius: 4px;
color: #202124;
font-size: 16px;
margin: 1px 1px 0 1px;
padding: 13px 15px;
z-index: 1;
}
.biz-login-wrap .form-group input.error {
border-color: #d93025;
border-color: #d93025;
}
.biz-login-wrap .form-group label {
position: absolute;
left: 10px;
top: 50%;
transform: translateY(-50%);
color: #a5a5a5;
font-size: 16px;
padding: 0px 4px;
background-color: white;
transition-property: transform;
transition-duration: 500ms;
z-index: -1;
position: absolute;
left: 10px;
top: 50%;
transform: translateY(-50%);
color: #a5a5a5;
font-size: 16px;
padding: 0px 4px;
background-color: white;
transition-property: transform;
transition-duration: 500ms;
z-index: -1;
}
.biz-login-wrap .form-link a {
color: #1a73e8;
font-size: 16px;
font-weight: 500;
color: #1a73e8;
font-size: 16px;
font-weight: 500;
}
.biz-login-wrap .form-link label {
color: #5f6368;
font-size: 14px;
display: inline-block;
color: #5f6368;
font-size: 14px;
display: inline-block;
}
.email-input:focus+label {
transform: translate3d(0, -175%, 0);
z-index: 1;
color: #1a73e8;
.email-input:focus + label {
transform: translate3d(0, -175%, 0);
z-index: 1;
color: #1a73e8;
}
.biz-login-wrap .password-input:focus+label {
transform: translate3d(0, -175%, 0);
z-index: 1;
color: #1a73e8;
.biz-login-wrap .password-input:focus + label {
transform: translate3d(0, -175%, 0);
z-index: 1;
color: #1a73e8;
}
.biz-login-wrap .form-group input.error:focus+label {
color: #d93025;
.biz-login-wrap .form-group input.error:focus + label {
color: #d93025;
}
.biz-login-wrap .form-group label.password-fixed {
transform: translate3d(0, -175%, 0);
z-index: 1 !important;
color: #1a73e8;
transform: translate3d(0, -175%, 0);
z-index: 1 !important;
color: #1a73e8;
}
.biz-login-wrap .form-header {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
row-gap: 20px;
margin-bottom: 40px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
row-gap: 20px;
margin-bottom: 40px;
}
.biz-login-wrap .form-header h2 {
margin: 0;
font-size: 24px;
font-weight: 500;
margin: 0;
font-size: 24px;
font-weight: 500;
}
.biz-login-wrap .form-header h4 {
font-size: 16px;
font-weight: 500;
font-size: 16px;
font-weight: 500;
}
.biz-login-wrap .form-body {
display: flex;
flex-direction: column;
row-gap: 30px;
display: flex;
flex-direction: column;
row-gap: 30px;
}
.biz-login-wrap .password-form-box {
row-gap: 60px;
row-gap: 60px;
}
.biz-login-wrap .login-logo {
width: 150px;
margin: 0 auto;
width: 150px;
margin: 0 auto;
}
.biz-login-wrap .btn {
float: right;
color: white;
background: #1a73e8;
border: 0;
padding: 8px 22px;
border-radius: 4px;
font-weight: 500;
font-size: 16px;
cursor: pointer;
float: right;
color: white;
background: #1a73e8;
border: 0;
padding: 8px 22px;
border-radius: 4px;
font-weight: 500;
font-size: 16px;
cursor: pointer;
}
.biz-login-wrap a {
text-decoration: none;
text-decoration: none;
}
.biz-login-wrap .flex-between-center {
display: flex;
align-items: center;
justify-content: space-between;
display: flex;
align-items: center;
justify-content: space-between;
}
.biz-login-wrap .mt-5 {
margin-top: 5px;
margin-top: 5px;
}
.biz-login-wrap .mt-10 {
margin-top: 10px;
margin-top: 10px;
}
.biz-login-wrap .password-checkbox {
width: 20px;
height: 20px;
margin-right: 5px;
width: 20px;
height: 20px;
margin-right: 5px;
}
.biz-login-wrap .show-password-link {
display: flex;
align-items: center;
column-gap: 10px;
margin-top: 15px;
display: flex;
align-items: center;
column-gap: 10px;
margin-top: 15px;
}
.biz-login-wrap .show-password-link label {
font-size: 16px;
font-weight: 500;
font-size: 16px;
font-weight: 500;
}
.biz-login-wrap .err-msg:not(:empty) {
color: #d93025;
font-size: 12px;
margin-top: 5px;
color: #d93025;
font-size: 12px;
margin-top: 5px;
}
.biz-login-wrap h4 {
font-size: 16px;
font-weight: 500;
font-size: 16px;
font-weight: 500;
}
.biz-login-wrap #txt_PhoneorMail:focus+label {
transform: translate3d(0, -175%, 0);
z-index: 1;
color: #1a73e8;
.biz-login-wrap #txt_PhoneorMail:focus + label {
transform: translate3d(0, -175%, 0);
z-index: 1;
color: #1a73e8;
}
.biz-login-wrap #txt_Code:focus+label {
transform: translate3d(0, -175%, 0);
z-index: 1;
color: #1a73e8;
.biz-login-wrap #txt_Code:focus + label {
transform: translate3d(0, -175%, 0);
z-index: 1;
color: #1a73e8;
}
.biz-login-wrap #txt_NewPassword:focus+label {
transform: translate3d(0, -175%, 0);
z-index: 1;
color: #1a73e8;
.biz-login-wrap #txt_NewPassword:focus + label {
transform: translate3d(0, -175%, 0);
z-index: 1;
color: #1a73e8;
}
#txt_ConfirmPassword:focus+label {
transform: translate3d(0, -175%, 0);
z-index: 1;
color: #1a73e8;
#txt_ConfirmPassword:focus + label {
transform: translate3d(0, -175%, 0);
z-index: 1;
color: #1a73e8;
}
.back-btn {
text-align: right;
margin: 0px 20px;
text-align: right;
margin: 0px 20px;
}
.btn-block {
margin-top: 10px;
margin-bottom: 20px;
margin-top: 10px;
margin-bottom: 20px;
}
.btn-block {
width: 100%;
width: 100%;
}
.opt-text {
text-align: center;
margin: 10px 0px;
text-align: center;
margin: 10px 0px;
}
.verify-block {
margin: 10px 0px;
margin: 10px 0px;
}
.verify-block .btn {
margin-left: 5px;
margin-left: 5px;
}
.biz-login-wrap h2 {
margin: 0;
font-size: 24px;
font-weight: 500;
text-align: center;
margin: 0;
font-size: 24px;
font-weight: 500;
text-align: center;
}
.reset-success {
text-align: center;
margin: 20px 0px;
text-align: center;
margin: 20px 0px;
}
.conformPassword {
margin-top: 30px;
margin-top: 30px;
}
.error-warning{
font-weight:700 ;
color: white;
margin-right: 5px;
.error-warning {
font-weight: 700;
color: white;
margin-right: 5px;
}
div#div_ValidationSummary {
background: #ce1717;
color: white;
background: #ce1717;
color: white;
}
.p-2 {
padding: 5px;
}
.p-2{
padding: 5px;
}
+83 -70
Просмотреть файл
@@ -1,80 +1,93 @@
import {
decrypt
} from "./cookiehelper.js";
import {
_serverUrl
} from "./setting.js";
import {decrypt, isAuthenticated} from "./cookiehelper.js";
import {_serverUrl} from "./setting.js";
let serverUrl = _serverUrl();
let baseUserInfo = decrypt(document.cookie.split('=')[1]);
let baseSessionId = baseUserInfo.sessionId;
let baseSessionId, baseUserInfo;
if (isAuthenticated()) {
baseUserInfo = decrypt(document.cookie.split("=")[1]);
baseSessionId = baseUserInfo.sessionId;
} else {
window.location = "../login";
}
export function getData(url) {
var datastr = null;
var method = "GET";
let serviceurl = serverUrl + url;
var datastr = null;
var method = "GET";
let serviceurl = serverUrl + url;
return $.ajax({
type: method,
url: serviceurl,
crossDomain: true,
contentType: "application/json",
cache: true,
jsonp: false,
data: datastr,
beforeSend: function(xhr) {
if (baseUserInfo != undefined && baseUserInfo != null) {
xhr.setRequestHeader("Authorization", "Basic " + JSON.parse(baseUserInfo).sessionId);
xhr.setRequestHeader('geoposition', 0 + ':' + 0);
}
}
});
return $.ajax({
type: method,
url: serviceurl,
crossDomain: true,
contentType: "application/json",
cache: true,
jsonp: false,
data: datastr,
beforeSend: function (xhr) {
if (baseUserInfo != undefined && baseUserInfo != null) {
xhr.setRequestHeader(
"Authorization",
"Basic " + JSON.parse(baseUserInfo).sessionId
);
xhr.setRequestHeader("geoposition", 0 + ":" + 0);
}
},
});
}
export function getDataObj(url, data, async, type) { //url, data, true, "POST"
export function getDataObj(url, data, async, type) {
//url, data, true, "POST"
let serviceurl = serverUrl + url;
return $.ajax({
type: type,
url: serviceurl,
data: JSON.stringify(data),
contentType: 'application/json',
traditional: true,
crossDomain: true,
async: async,
beforeSend: function(xhr) {
if (baseUserInfo != undefined && baseUserInfo != null) {
xhr.setRequestHeader('Authorization', 'Basic ' + JSON.parse(baseUserInfo).sessionId);
xhr.setRequestHeader('geoposition', 0 + ':' + 0);
}
}
});
let serviceurl = serverUrl + url;
return $.ajax({
type: type,
url: serviceurl,
data: JSON.stringify(data),
contentType: "application/json",
traditional: true,
crossDomain: true,
async: async,
beforeSend: function (xhr) {
if (baseUserInfo != undefined && baseUserInfo != null) {
xhr.setRequestHeader(
"Authorization",
"Basic " + JSON.parse(baseUserInfo).sessionId
);
xhr.setRequestHeader("geoposition", 0 + ":" + 0);
}
},
});
}
export function formatLocal(dateTime) {
var hou = new Date(dateTime).getHours(),
sec, min, day, month, years;
if (hou < 24) {
min = new Date(dateTime).getMinutes();
if (min < 60) {
sec = new Date(dateTime).getSeconds();
if (sec < 60) {
return sec + ' Seconds';
}
} else {
return min + ' Minutes';
}
return hou + ' Hours';
} else { //24 >
day = new Date(dateTime).getHours();
if (day > 31) { // 31 day
month = new Date(dateTime).getMonth();
if (month > 12) { // 12 months
years = new Date(dateTime).getFullYear();
return years + ' Years';
}
return month + ' month';
}
return day + ' day';
var hou = new Date(dateTime).getHours(),
sec,
min,
day,
month,
years;
if (hou < 24) {
min = new Date(dateTime).getMinutes();
if (min < 60) {
sec = new Date(dateTime).getSeconds();
if (sec < 60) {
return sec + " Seconds";
}
} else {
return min + " Minutes";
}
}
return hou + " Hours";
} else {
//24 >
day = new Date(dateTime).getHours();
if (day > 31) {
// 31 day
month = new Date(dateTime).getMonth();
if (month > 12) {
// 12 months
years = new Date(dateTime).getFullYear();
return years + " Years";
}
return month + " month";
}
return day + " day";
}
}
+13 -14
Просмотреть файл
@@ -1,7 +1,6 @@
const cryptoProvider = window['CryptoJS'];
const cryptoAlgorithm = window['CryptoJS'].AES;
const _secretKey = 'unibase';
const cryptoProvider = window["CryptoJS"];
const cryptoAlgorithm = window["CryptoJS"].AES;
const _secretKey = "unibase";
export function encrypt(content) {
return cryptoAlgorithm.encrypt(content, _secretKey).toString();
}
@@ -13,29 +12,29 @@ export function decrypt(encoded) {
}
export function setCookie(cname, cvalue, exdays) {
let _cookievalue = '';
let _cookievalue = "";
if (cvalue) {
_cookievalue = encrypt(cvalue);
}
var d = new Date();
d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);
var expires = 'expires=' + d.toUTCString();
var expires = "expires=" + d.toUTCString();
document.cookie =
cname +
'=' +
"=" +
_cookievalue +
';' +
";" +
expires +
';path=/;samesite=none;secure=true';
";path=/;samesite=none;secure=true";
}
export function getCookie(cname) {
var name = cname + '=';
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
var ca = decodedCookie.split(";");
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) === ' ') {
while (c.charAt(0) === " ") {
c = c.substring(1);
}
@@ -45,11 +44,11 @@ export function getCookie(cname) {
return cookie_decrypt;
}
}
return '';
return "";
}
export function isAuthenticated() {
if (getCookie('_idty')) {
if (getCookie("_idty")) {
return true;
}
return false;
+130 -125
Просмотреть файл
@@ -1,142 +1,147 @@
const serverUrl = 'http://localhost:3086/';
const serverUrl = "http://localhost:3086/";
let otpid;
let sendotp;
let unibaseid;
async function showOtpBox() {
let inputdetails = document.getElementById('txt_PhoneorMail').value;
let inputdetails = document.getElementById("txt_PhoneorMail").value;
let sendnumber = await fetch(serverUrl + 'account/getuserbyphoneormail/' + inputdetails + '/' + inputdetails)
let textdata = await sendnumber.json();
if (textdata.result != null) {
unibaseid = textdata.result.unibaseId;
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
let sendnumber = await fetch(
serverUrl +
"account/getuserbyphoneormail/" +
inputdetails +
"/" +
inputdetails
);
let textdata = await sendnumber.json();
if (textdata.result != null) {
unibaseid = textdata.result.unibaseId;
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
"FirstName": "",
"LastName": "",
"ContactNumber": "",
"Email": "",
"TenantName": "",
"ContactOrEmail": inputdetails,
"IsSignup": false,
"IsRegisterUser": false,
"IsForgotPswd": true,
"UnibaseId": unibaseid,
"OtpId": 0,
"UserOtp": ""
});
var raw = JSON.stringify({
FirstName: "",
LastName: "",
ContactNumber: "",
Email: "",
TenantName: "",
ContactOrEmail: inputdetails,
IsSignup: false,
IsRegisterUser: false,
IsForgotPswd: true,
UnibaseId: unibaseid,
OtpId: 0,
UserOtp: "",
});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
var requestOptions = {
method: "POST",
headers: myHeaders,
body: raw,
redirect: "follow",
};
fetch(serverUrl + 'account/sendotp', requestOptions)
.then(response => response.text())
.then(function(result) {
optid = result;
document.getElementById('div_ForgotPswd').style.display = 'none';
document.getElementById('modal_Otp').style.display = 'block';
document.getElementById('div_ValidationSummary').innerHTML = "";
})
.catch(error => console.log('error', error));
} else {
let html = '<div class="p-2"><span class="error-warning">Error !</span> Email/Phonenumber does not exist</div>';
document.getElementById('div_ValidationSummary').innerHTML = "";
let error = document.getElementById('div_ValidationSummary');
error.insertAdjacentHTML('beforeend', html);
}
fetch(serverUrl + "account/sendotp", requestOptions)
.then((response) => response.text())
.then(function (result) {
optid = result;
document.getElementById("div_ForgotPswd").style.display = "none";
document.getElementById("modal_Otp").style.display = "block";
document.getElementById("div_ValidationSummary").innerHTML = "";
})
.catch((error) => console.log("error", error));
} else {
let html =
'<div class="p-2"><span class="error-warning">Error !</span> Email/Phonenumber does not exist</div>';
document.getElementById("div_ValidationSummary").innerHTML = "";
let error = document.getElementById("div_ValidationSummary");
error.insertAdjacentHTML("beforeend", html);
}
}
/*verify otp*/
async function showPasswordBox() {
let inputdetails = document.getElementById('txt_Code').value;
if (inputdetails.length > 0) {
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
"FirstName": "",
"LastName": "",
"ContactNumber": "",
"Email": "",
"TenantName": "",
"ContactOrEmail": "",
"IsForgotPswd": false,
"IsRegisterUser": false,
"IsSignup": true,
"UnibaseId": "",
"OtpId": optid,
"UserOtp": inputdetails
});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch(serverUrl + 'account/verifyotp', requestOptions)
.then(response => response.text())
.then(function(result) {
let data = JSON.parse(result);
if (data.result.contactConfirmed == true) {
document.getElementById('modal_Otp').style.display = 'none';
document.getElementById('div_ResetPswd').style.display = 'block';
document.getElementById('div_ValidationSummary').innerHTML = "";
} else {
let html = '<div class="p-2" ><span class="error-warning">Error !</span> Enter Valid OTP</div>';
document.getElementById('div_ValidationSummary').innerHTML = "";
let error = document.getElementById('div_ValidationSummary');
error.insertAdjacentHTML('beforeend', html);
}
})
.catch(error => console.log('error', error));
} else {
}
let inputdetails = document.getElementById("txt_Code").value;
if (inputdetails.length > 0) {
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
FirstName: "",
LastName: "",
ContactNumber: "",
Email: "",
TenantName: "",
ContactOrEmail: "",
IsForgotPswd: false,
IsRegisterUser: false,
IsSignup: true,
UnibaseId: "",
OtpId: optid,
UserOtp: inputdetails,
});
var requestOptions = {
method: "POST",
headers: myHeaders,
body: raw,
redirect: "follow",
};
fetch(serverUrl + "account/verifyotp", requestOptions)
.then((response) => response.text())
.then(function (result) {
let data = JSON.parse(result);
if (data.result.contactConfirmed == true) {
document.getElementById("modal_Otp").style.display = "none";
document.getElementById("div_ResetPswd").style.display = "block";
document.getElementById("div_ValidationSummary").innerHTML = "";
} else {
let html =
'<div class="p-2" ><span class="error-warning">Error !</span> Enter Valid OTP</div>';
document.getElementById("div_ValidationSummary").innerHTML = "";
let error = document.getElementById("div_ValidationSummary");
error.insertAdjacentHTML("beforeend", html);
}
})
.catch((error) => console.log("error", error));
} else {
}
}
function showSuccessBox() {
let txt_NewPassword = document.getElementById('txt_NewPassword').value;
let txt_ConfirmPassword = document.getElementById('txt_ConfirmPassword').value;
if (txt_NewPassword == txt_ConfirmPassword) {
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
"Password": txt_NewPassword,
"UserName": unibaseid
});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch(serverUrl + 'account/updatepassword', requestOptions)
.then(response => response.text())
.then(function(result) {
let updatepassword = JSON.parse(result);
let message = updatepassword.message;
if (message == 'Password Updated Successfully') {
document.getElementById('div_ValidationSummary').innerHTML = "";
document.getElementById('div_ResetPswd').style.display = 'none';
document.getElementById('div_SuccessMsg').style.display = 'block';
}
})
.catch(error => console.log('error', error));
} else {
let html = '<div class="p-2"> <span class="error-warning">Error !</span> Password Does not Match</div>';
document.getElementById('div_ValidationSummary').innerHTML = "";
let error = document.getElementById('div_ValidationSummary');
error.insertAdjacentHTML('beforeend', html);
}
}
let txt_NewPassword = document.getElementById("txt_NewPassword").value;
let txt_ConfirmPassword = document.getElementById(
"txt_ConfirmPassword"
).value;
if (txt_NewPassword == txt_ConfirmPassword) {
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
Password: txt_NewPassword,
UserName: unibaseid,
});
var requestOptions = {
method: "POST",
headers: myHeaders,
body: raw,
redirect: "follow",
};
fetch(serverUrl + "account/updatepassword", requestOptions)
.then((response) => response.text())
.then(function (result) {
let updatepassword = JSON.parse(result);
let message = updatepassword.message;
if (message == "Password Updated Successfully") {
document.getElementById("div_ValidationSummary").innerHTML = "";
document.getElementById("div_ResetPswd").style.display = "none";
document.getElementById("div_SuccessMsg").style.display = "block";
}
})
.catch((error) => console.log("error", error));
} else {
let html =
'<div class="p-2"> <span class="error-warning">Error !</span> Password Does not Match</div>';
document.getElementById("div_ValidationSummary").innerHTML = "";
let error = document.getElementById("div_ValidationSummary");
error.insertAdjacentHTML("beforeend", html);
}
}
+7 -9
Просмотреть файл
@@ -1,9 +1,7 @@
import {
getCookie
} from "./cookiehelper.js";
import {
initListIndex
} from "./list.index.js";
initListIndex();
import {getCookie, isAuthenticated} from "./cookiehelper.js";
import {initListIndex} from "./list.index.js";
if (isAuthenticated()) {
initListIndex();
} else {
window.location = "../login";
}
+668 -230
Просмотреть файл
@@ -1,241 +1,679 @@
/*Data loading start here*/
import {
getCookie
} from "./cookiehelper.js";
import {getCookie, isAuthenticated} from "./cookiehelper.js";
import {getData, getDataObj} from "./base.js";
import {_serverUrl} from "./setting.js";
export var connection;
import {
getData,
getDataObj
} from "./base.js";
function loadData() {
getData(
"apis/v4/unibase/reminders/platform/getunreadreminders/ReminderType/6/PageSize/20"
).then(function(result) {
let response = JSON.parse(result.result);
if (response.length != 0) {
// Notifcations
let bdyUI = '<div class="accordion" id="notifi-list">';
for (var i = 0; i < response.length; i++) {
bdyUI += `<li class="item-li" id="${
response[i].ReminderId
}" data-ref="${
response[i].RedirectOptions.RefId
}" data-installedAppId="${
response[i].RedirectOptions.InstalledAppId
}" data-formId="${response[i].RedirectOptions.CreateFormId}">
<div class="accordion-header" id="accHeader-${
response[i].ReminderId
}">
<div class="notifiListItms accordion-button collapsed" data-bs-toggle="collapse" data-bs-target="#collapse-${
response[i].ReminderId
}" aria-expanded="false" aria-controls="collapseOne">
<div class="row m-0 w-100 p-0 ">
<div class="col-1 ">
<input class="form-check-input mx-1" type="checkbox" value="" id="flexCheckDefault">
</div>
<div class="col-4 text-truncate">
<span class="mx-1">${
response[i].Subject
}</span>
</div>
<div class="col-5 text-truncate">
<span class="mx-1">${
response[i].Message
}</span>
</div>
<div class="col-2 text-truncate">
<span class="mx-1">22 minutes ago</span>
</div>
</div>
</div>
<div id="collapse-${
response[i].ReminderId
}" class="accordion-collapse collapse" aria-labelledby="accHeader-${
response[i].ReminderId
}" data-bs-parent="#notifi-list">
<div class="accordion-body" id="accBody${
response[i].ReminderId
}">
</div>
</div>
</div>
</li>`;
}
bdyUI += "</div>";
$(".bdy-ul").append(bdyUI);
$(".notifiListItms").on("click", function() {
let _this = $(this).parents(".item-li");
let obj = {
FromDate: "2022/11/30",
InstalledAppId: Number($(_this).attr("data-installedAppId")),
RecordId: Number($(_this).attr("data-ref")),
ToDate: "2022/11/30",
};
//let obj = { "FromDate": "2022/11/30", "InstalledAppId": 102530270000109, "RecordId": 102533490346298, "ToDate": "2022/11/30" };
getDataObj(
"apis/v4/unibase/platform/widgets/getdefaultwidget",
obj,
true,
"POST"
).then(function(response) {
let res = JSON.parse(response.result),
html = "";
if (response.message == "200" && response.errors == null) {
html = `<ul class="p-0 m-0 d-flex flex-row">`;
if (
res.AppConfigurations != null &&
res.AppConfigurations.length > 0
) {
for (var k = 0; k < res.AppConfigurations.length; k++) {
html += `<li class="mx-2 btn-outline-primary btn btn-sm">${res.AppConfigurations[k].SettingName}</li>`;
}
} else {
html += `<li class="p-1 my-0 alert alert-danger" role="alert">
App Configurations Not configure
</li>`;
}
if (res.Stages != null) {
for (var x = 0; x < res.Stages.length; x++) {
if (res.Stages[x].IsDefault) {
html += `<li class="ml-auto">
<a class="btn btn-sm btn-secondary dropdown-toggle" href="javascript:void(0)" role="button" data-bs-toggle="dropdown" aria-expanded="false">
${res.Stages[x].StageName}
</a>
<ul class="dropdown-menu">`;
}
}
for (var i = 0; i < res.Stages.length; i++) {
if (!res.Stages[i].IsDefault) {
html += `<li><a class="dropdown-item" href="javascript:void(0);">${res.Stages[i].StageName}</a></li>`;
}
}
html += "</ul></li>";
} else {
html += `<li class="p-1 my-0 alert alert-danger ml-auto" role="alert">
No Stages
</li>`;
}
html += `<li class="p-1 mx-2 my-0 btn-outline-info detailBtn btn btn-sm" data-appid="${Number($(_this).attr("data-installedAppId"))}" data-recordid="${Number($(_this).attr("data-ref"))}">Details-Page</li></ul>`;
} else {
html += `<div class="alert alert-danger" role="alert">
${response.message} ${response.errors}
</div>`;
}
$(_this).find(".accordion-body").html(html);
detailClick();
});
});
}
});
getData(
"apis/v4/unibase/reminders/platform/getunreadreminders/ReminderType/1/PageSize/20"
).then(function(tskResp) {
let response = JSON.parse(tskResp.result);
if (response.length != 0) {
let _tskhtml = '<div class="accordion" id="task-list">';
for (var i = 0; i < response.length; i++) {
_tskhtml += `<li class="item-li" id="${
response[i].ReminderId
}" data-ref="${
response[i].RedirectOptions.RefId
}" data-installedAppId="${
response[i].RedirectOptions.InstalledAppId
}" data-formId="${response[i].RedirectOptions.CreateFormId}">
<div class="accordion-header" id="accHeader-${
response[i].ReminderId
}">
<div class="tskListItms accordion-button collapsed" data-bs-toggle="collapse" data-bs-target="#collapse-${
response[i].ReminderId
}" aria-expanded="false" aria-controls="collapseOne">
<div class="row m-0 w-100 p-0 ">
<div class="col-1 ">
<input class="form-check-input mx-1" type="checkbox" value="" id="flexCheckDefault">
</div>
<div class="col-4 text-truncate">
<span class="mx-1">${
response[i].Subject
}</span>
</div>
<div class="col-5 text-truncate">
<span class="mx-1">${
response[i].Message
}</span>
</div>
<div class="col-2 text-truncate">
<span class="mx-1">2 seconds</span>
</div>
</div>
</div>
<div id="collapse-${
response[i].ReminderId
}" class="accordion-collapse collapse" aria-labelledby="accHeader-${
response[i].ReminderId
}" data-bs-parent="#notifi-list">
<div class="accordion-body" id="accBody${
response[i].ReminderId
}">
<ul class="p-0 m-0 d-flex flex-row justify-content-between">
<li class="mx-2 btn-outline-success btn btn-sm">Confirm</li>
<li class="mx-2 btn-outline-danger btn btn-sm">Reject</li>
<li class="mx-2 btn-outline-primary btn btn-sm">Close</li>
<li class="mx-2 btn-outline-info detailBtn btn btn-sm" data-appId="${response[i].RedirectOptions.InstalledAppId}" data-recordId="${response[i].RedirectOptions.RefId}">Details-Page</li>
</ul>
</div>
</div>
</div>
</li>`;
}
_tskhtml += "</div>";
$(".bdy-ul").append(_tskhtml);
detailClick()
}
});
export function dateTimeFormat(dateTime) {
var date = moment.utc(dateTime).local();
var difmonths = moment().diff(date, "months");
if (difmonths == 0) {
return moment(dateTime).fromNow();
}
return date.format("DD MMM, YYYY HH:mm");
}
export function detailClick(){
$('.detailBtn').click(function() {
$('.bdy-ul').addClass('d-none');
let installedAppId = +$(this).attr('data-appId');
let recordId = +$(this).attr('data-recordId')
// Unibase.Themes.Compact.Components.Notification.Instance().loadReminderDetails(105013010001972,105010260000090,'Details','null',6,0,null)
const cookie = getCookie('_idty');
if (cookie) {
const {
unibaseId,
tenantId,
userId
} = JSON.parse(cookie);
debugger;
$('#detailIframe').html(
`<iframe width="100%" style="min-height:746px"  name="srcframe" id="srcframe" class="srcframe" src="http://localhost:3086/#/${unibaseId}/${tenantId}/${userId}/${recordId}/${installedAppId}/loadDetail"></iframe>`
);
function createLoad(data) {
let html = "";
if (data.length != 0) {
for (var i = 0; i < data.length; i++) {
html += `<li class="p-0">
<a href="javascript:;" class="dropdown-item create-form-btn" data-AppConfigType="${data[i].AppConfigType}" data-AppPermissionId="${data[i].AppPermissionId}" data-AppConfigurationId="${data[i].AppConfigurationId}" data-formid="${data[i].FormId}" data-installedAppid="${data[i].InstalledAppId}">${data[i].AppTitle}</a>
</li>`;
}
} else {
html += `<li class="p-0">Apps are Not Installed</li>`;
}
$("#crte-btn-lst").html(html);
$(".create-form-btn").on("click", function () {
const date = new Date();
let number = date.getTime();
let serverUrl = _serverUrl();
let appName = $(this).text();
let formId = $(this).attr("data-formid");
let installedAppId = $(this).attr("data-installedappid");
let appConfigurationId = $(this).attr("data-appconfigurationid");
let pk_id = 0;
const cookie = getCookie("_idty");
let fomrhtml = "";
let width = iFrmeWdth();
if (cookie) {
const {unibaseId, tenantId, userId} = JSON.parse(cookie);
fomrhtml = `<div>
<div class="frm-ifre frm-ifre-${number}" data-formId="${formId}" id="frm-ifre-${number}" style="right:${width}px">
<div>
<ul class="m-0 p-0">
<li class="frm-hdr d-none" data-frm_hdr="true">
<div class="app-title-ifrm">${appName}</div>
<div class="ctrl">
<a href="javascript:;" class="minimize" data-unid="${number}" data-ispopup="true"><span><i class="la la-minus"></i></span></a>
<a href="javascript:;" class="maximum" data-unid="${number}"><span><i class="la la-expand"></i></span></a>
<a href="javascript:;" class="compress d-none" data-unid="${number}"><span><i class="las la-compress"></i></span></a>
<a href="javascript:;" class="close" data-unid="${number}"><span><i class="la la-times"></i></span></a>
</div>
</li>
<li class="frm-bdy">
<iframe class="ld-frm-src" data-ispopup="false" src="${serverUrl}#/${unibaseId}/${tenantId}/${userId}/${installedAppId}/${formId}/0/${appConfigurationId}/false/0/loadform"></iframe>
</li>
<li class="frm-ftr"></li>
</ul>
</div>
</div>
</div>`;
}
$("#list-page").parent("body").append(fomrhtml);
window.window.postMessage("ld-frm-ifrme", "*");
hdrCrtnClckEvnt(number);
});
}
function hdrCrtnClckEvnt(number) {
$(`.frm-ifre-${number} .minimize`).on("click", function () {
let id = $(this).attr("data-unid");
let isPopUpState = $(this).attr("data-ispopup");
let height = $(`.frm-ifre-${id}`).find(".frm-hdr").height();
$(".list-page").css({filter: "unset", opacity: 1});
$(`.frm-ifre-${id} .frm-bdy`).toggleClass("d-none");
if (isPopUpState == "true") {
// popup large
$(this).attr("data-ispopup", "false");
$(this).parents('.frm-hdr').removeClass('d-none').attr('data-frm_hdr', 'false');
$(`.frm-ifre-${id} .maximum`).addClass("d-none");
$(`.frm-ifre-${id} .minimize`).attr("data-ispopup", "false");
$(`.frm-ifre-${id}`).parent().removeClass("wrap-iframe");
$(`.frm-ifre-${id}`).attr("data-ispop_up", "false");
$(`.frm-ifre-${id}`).css({
width: "20%",
height: height,
bottom: "0px",
});
} else {
// popup small
$(this).attr("data-ispopup", "true");
$(this).parents('.frm-hdr').addClass('d-none').attr('data-frm_hdr', 'true');
$(`.frm-ifre-${id} .maximum`).removeClass("d-none");
$(`.frm-ifre-${id} .minimize`).attr("data-ispopup", "true");
$(`.frm-ifre-${id}`).attr("data-ispop_up", "true");
$(`.frm-ifre-${id}`).css({
width: "",
height: "",
bottom: "",
});
if($(this).parents('.frm-hdr').attr("data-saveform") == 'true'){
$(this).parents('.frm-hdr').removeClass('d-none')
}
}
resetwidth();
});
$(`.frm-ifre-${number} .maximum`).on("click", function () {
let id = $(this).attr("data-unid");
$(this).addClass("d-none");
$(this).siblings(".compress").removeClass("d-none");
$(`.frm-ifre-${id}`).find(".ld-frm-src").attr("data-ispopup", "true");
$(`.frm-ifre-${id}`).parent().addClass("wrap-iframe");
$(`.frm-ifre-${id}`).css({width: "75%", position: "unset"});
$(`.frm-ifre-${id} .ld-frm-src`).css({width: "100%"});
$(`.frm-ifre-${id} .frm-bdy`).removeClass("d-none");
$("#list-page").css({filter: "blur(2px)", opacity: "0.5"});
$(`.frm-ifre-${id}`).find(".minimize").toggleClass("d-none");
});
$(`.frm-ifre-${number} .compress`).on("click", function () {
let id = $(this).attr("data-unid");
$(this).addClass("d-none");
$(this).siblings(".maximum").removeClass("d-none");
$(`.frm-ifre-${id}`).parent().removeClass("wrap-iframe");
$(`.frm-ifre-${id}`).css({width: "", position: ""});
$(`.frm-ifre-${id} .ld-frm-src`).css({width: ""});
$("#list-page").css({filter: "", opacity: ""});
$(`.frm-ifre-${id}`).find(".minimize").toggleClass("d-none");
});
$(`.frm-ifre-${number} .close`).on("click", function () {
let id = $(this).attr("data-unid");
$("#list-page").css({filter: "unset", opacity: "1"});
$(`.frm-ifre-${id}`).parent().remove();
resetwidth();
});
}
function loadData(ApiPath, isSentBy) {
$(".bdy-ul").empty().removeClass("d-none");
$(".hdr-ul").removeClass("d-none");
getData(ApiPath).then(function (result) {
let response = JSON.parse(result.result),
html = "";
const cookie = getCookie("_idty");
if (response.length != 0) {
response.forEach(function (Item, index) {
let isSent = false;
if (Item.FromUserName == JSON.parse(cookie).name) {
isSent = true;
}
});
if (Item.FromUserName == null) {
Item.FromUserName = 'Please check it Notification Team';
}
//if(window.innerWidth >1024){ // Desktop Width
html += `<li class="pdng lst-Notifi" data-ReminderTypeId="${Item.ReminderTypeId}" data-reminderurl="${Item.ReminderUrl}" data-reminderId="${Item.ReminderId}" data-isreaded="${Item.ReminderStatusId}" data-issentby=${isSent} data-refId="${Item.RedirectOptions.RefId}" data-instlledAppId="${Item.RedirectOptions.InstalledAppId}" data-formid="${Item.RedirectOptions.CreateFormId}" data-urlType="${Item.UrlType}">`;
html += `<div class="flex-shrink-0 wi-chck"><div class="wi-item ml-0"><input class="form-check-input mr-2" type="checkbox" value="" id="flexCheckDefault"></div><div class="wi-item">`;
if (Item.ReminderTypeId == 1) {
html += `<i class="ri-star-fill" style="opacity:0.6"></i>`;
} else {
html += `<i class="ri-star-line"></i>`;
}
html += `</div></div>`; // check-box
html += `<div class="wi-sbjt-msge mx-1">`;
html += `<div class="wi-from wi-item text-truncate"><span data-isreaded="${Item.ReminderStatusId}">${Item.FromUserName}</span></div>`;
html += `<div class="wi-sbjt wi-item text-truncate flex-shrink-1"><span class="mx-2">${Item.Subject}</span></div><div>-</div>`; // Subject
html += `<div class="wi-msge wi-item text-truncate"><span class="mx-2">${Item.Message}</span></div>`; // Message
html += `</div>`;
html += `<div class="wi-time time flex-shrink-0 ml-auto"><span>${dateTimeFormat(
Item.ReminderDate
)}</span></div>`;
html += `<div class="hover">
<ul>`;
if (Item.RedirectOptions.CreateFormId != 0) {
html += ` <li class="mx-2 hover-item"><a class="formBtn" data-urltype="Form" href="javascript:;"><i class="ri-store-line"></i></a></li>`;
} else {
html += ` <li class="mx-2 hover-item"><a class="detailBtn" data-urltype=${Item.UrlType} href="javascript:;"><i class="ri-information-line"></i></a></li>`;
}
html += ` </ul>
</div>`;
html += "</li>";
/* }else{ // Mobile Width card view
html += `<li class="pdng lst-Notifi" data-ReminderTypeId="${Item.ReminderTypeId}" data-reminderurl="${Item.ReminderUrl}" data-reminderId="${Item.ReminderId}" data-isreaded="${Item.ReminderStatusId}" data-issentby=${isSent} data-refId="${Item.RedirectOptions.RefId}" data-instlledAppId="${Item.RedirectOptions.InstalledAppId}" data-formid="${Item.RedirectOptions.CreateFormId}" data-urlType="${Item.UrlType}">`
html += ` <div><span class="align-items-center d-flex justify-content-center sdr-nme fs-4">S</span></div>
<div class="d-flex flex-column ms-2 w-100">
<div class="d-flex justify-content-between align-items-baseline">
<span class="me-2 text-truncate">${Item.FromUserName}</span>
<span class="w-60p text-truncate font-11">${dateTimeFormat(
Item.ReminderDate
)}</span>
</div>
<div><span class="fw-500">${Item.Subject}</span></div>
<div class="d-flex justify-content-between"><span>${Item.Message}</span><span>`;
if (Item.ReminderTypeId == 1) {
html += `<i class="ri-star-fill" style="opacity:0.6"></i>`;
} else {
html += `<i class="ri-star-line"></i>`;
}
html += `</span></div>
</div>`
html +=`</li>`
}*/
});
$(".ctr-lst-pge .bdy-ul").html(html);
if (isSentBy) {
$(".pdng.lst-Notifi").addClass("d-none");
$(".pdng.lst-Notifi[data-issentby='true']").removeClass("d-none");
}
detailClick();
//stagesLoad();
}
});
getData("apis/v4/unibase/reminders/platform/getunreadreminderscount").then(
function (response) {
let result = JSON.parse(response.result);
let count = Number(result.NotificationCount) + Number(result.TasksCount);
$('[data-buttontype="inbox"] .length.rounded-pill').remove();
$('[data-buttontype="inbox"]').append(
`<span class="length badge rounded-pill bg-light text-dark ml-auto" data-TasksCount="${result.TasksCount}" data-notifiCount="${result.NotificationCount}">${count}</span>`
);
$('[data-notification="count"]').text(count);
if (count > 40) {
$('[data-paggtn="true"]').text(`1-40`);
} else {
$(".li-pgn").empty();
}
}
);
if(window.innerWidth < 1024){
$('.ctr-lst-pge').on('click', function(){
$('.mnNvIcn').click()
})
}
}
function iFrmeWdth() {
let width = 0,
erwdth = 15;
$(".frm-ifre").each(function (i, e) {
if ($(this).length == 0) {
erwdth = 0;
}
if (window.innerWidth > width) {
width = width + $(this).width() + erwdth;
}
});
return width;
}
function resetwidth() {
let width = 0,
erwdth = 15;
$(".frm-ifre").each(function (i, e) {
if (i == 0) {
$(this).css("right", width + "px");
}
if (i != 0) {
$(this).css("right", width + "px");
}
if (window.innerWidth > width) {
width = width + $(this).width() + erwdth;
}
});
}
export function detailClick() {
// Details Popup Abihram popup page
$(".wi-sbjt-msge").on("click", function (e) {
e.stopPropagation();
detailsPage(this, true, "Details-page");
});
// Details Page Loading
$(".detailBtn[data-urltype='Details']").click(function (e) {
e.stopPropagation();
detailsPage(this, false, "Details-page");
});
//Form Page Loading
$(".formBtn[data-urltype='Form']").on("click", function (e) {
e.stopPropagation();
detailsPage(this, true, "Form-page");
});
//List Page Loading
$("[data-urltype='List']").on("click", function (e) {
e.stopPropagation();
detailsPage(this, true, "List-page");
});
// get stages
}
export function detailsPage(e, ifrmPopup, isPage) {
let serverUrl = _serverUrl();
$(".bdy-ul").addClass("d-none");
$(".hdr-ul").addClass("d-none");
let installedAppId = $(e)
.parents(".pdng.lst-Notifi")
.attr("data-instlledappid");
let recordId = $(e).parents(".pdng.lst-Notifi").attr("data-refid");
let reminderid = $(e).parents(".pdng.lst-Notifi").attr("data-reminderid");
let remindertype = $(e)
.parents(".pdng.lst-Notifi")
.attr("data-remindertypeid");
// Unibase.Themes.Compact.Components.Notification.Instance().loadReminderDetails(105013010001972,105010260000090,'Details','null',6,0,null)
const cookie = getCookie("_idty");
if (cookie) {
const {unibaseId, tenantId, userId} = JSON.parse(cookie);
if (isPage == "Details-page") {
$("#detailIframe").html(
`<iframe width="100%" style="min-height:calc(100vh - ${$(
".tp-bar"
).height()}px)"  name="srcframe" id="srcframe" class="srcframe" src="${serverUrl}#/${unibaseId}/${tenantId}/${userId}/${recordId}/${installedAppId}/${remindertype}/${reminderid}/${ifrmPopup}/loadDetail"></iframe>`
);
} else if (isPage == "Form-page") {
getData(
`apis/v4/unibase/platform/apps/listappconfigurations/installedappid/${installedAppId}`
).then(function (result) {
let _data = JSON.parse(result.result);
let data = _data.filter((x) => x.SettingUrlType == 1);
$("#detailIframe").html(
`<iframe width="100%" style="min-height:calc(100vh - ${$(
".tp-bar"
).height()}px)"  name="srcframe" id="srcframe" class="srcframe" src="${serverUrl}#/${unibaseId}/${tenantId}/${userId}/${installedAppId}/${
data[0].FormId
}/0/${
data[0].AppConfigurationId
}/${reminderid}/${ifrmPopup}/loadform"></iframe>`
);
});
} else if (isPage == "List-page") {
$("#detailIframe").html(
`<iframe width="100%" style="min-height:calc(100vh - ${$(
".tp-bar"
).height()}px)"  name="srcframe" id="srcframe" class="srcframe" src="${serverUrl}#/${unibaseId}/${tenantId}/${userId}/${installedAppId}/${reminderid}/${ifrmPopup}/loadList"></iframe>`
);
}
}
}
export function signaRInit() {
var huburl = _serverUrl() + "notificationhub";
connection = new window["signalR"].HubConnectionBuilder()
.withUrl(huburl)
.build();
register();
}
export async function register() {
connection.on("sendnotification", (obj) => {
$(".ctr-lst-pge .bdy-ul").empty();
loadData(
"apis/v4/unibase/reminders/platform/getuserreminders/PageSize/0",
false
);
});
const cookie = getCookie("_idty");
const {unibaseId, tenantId, userId, sessionId, name} = JSON.parse(cookie);
let packet = {
UserId: Number(userId),
UserName: name,
UnibaseId: unibaseId,
TenantId: Number(tenantId),
SessionId: sessionId,
};
try {
const stringConnection = await connection.start();
await connection.invoke("Connect", packet);
} catch (error) {
console.log(error);
}
}
export function resetClckEvnt() {
$(".ChtAppIfrme").remove();
$(".lft-nav-bar .lft-nav-bar-2").removeClass("d-none");
$(".ctr-lst-pge, .rtr-nav-bar").removeClass("d-none");
$(".lft-nav-bar").css("width", "");
}
export function initListIndex() {
let _userInfo = atob(document.cookie.split("=")[1]);
let userInfo = " JSON.parse(_userInfo).result";
let sessionId = "userInfo.sessionId";
let userInfo = JSON.parse(getCookie("_idty"));
let sessionId = userInfo.sessionId;
let usrinfoHTML = `<li><a class="dropdown-item" href="javascript:void(0);">${userInfo.name}</a></li>
<li><a class="dropdown-item" href="javascript:void(0);">Cloud Settings</a></li>
<li><a class="dropdown-item" href="javascript:void(0);">Help</a></li>
<li><a class="dropdown-item" href="javascript:void(0);">Logoff</a></li>`;
$(".icn-circle").text(userInfo?.name?.charAt(0)?.toUpperCase());
$(".uindtls").html(usrinfoHTML);
signaRInit();
let usrinfoHTML = `<li><a class="dropdown-item text-capitalize" href="javascript:void(0);">${userInfo.name}</a></li>
<li><a class="dropdown-item" href="javascript:void(0);">Help</a></li>
<li><a class="dropdown-item" href="javascript:void(0);" data-btn="logoff">Logoff</a></li>`;
$(".icn-circle").text(userInfo?.name?.charAt(0)?.toUpperCase());
$(".uindtls").html(usrinfoHTML);
// List Page loading
$('[data-btn="logoff"]').on("click", function () {
document.cookie = "_idty=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
window.location = "../login";
});
// List Page loading
/*Data loading start here*/
$(".mnNvIcn").click(function() {
$(".lft-nav-bar").toggleClass("lft-nav-bar-Wrap");
$(".ctr-lst-pge").toggleClass("lft-nav-bar-Wrap");
/*Data loading start here*/
$(".nav-lft-item").on("click", function () {
$(".nav-lft-item").removeClass("active");
$(this).addClass("active");
if ($(this).attr("data-application") != "Chat Application") {
resetClckEvnt();
}
});
$(".nav-lft-item[data-application='Chat Application']").on(
"click",
function () {
const serverUrl = _serverUrl();
const cookie = getCookie("_idty");
const {unibaseId, tenantId, userId} = JSON.parse(cookie);
$(".lft-nav-bar .lft-nav-bar-2").addClass("d-none");
$(".ctr-lst-pge, .rtr-nav-bar").addClass("d-none");
$(".lft-nav-bar").css("width", "var(--rtrWidth)");
$(".btm-bar .ChtAppIfrme").remove();
$(".btm-bar").append(`<div class="ChtAppIfrme w-100">
<iframe class="" style="height:100%; width:100%" data-ispopup="false" src="${serverUrl}#/${unibaseId}/${tenantId}/${userId}/loadChat"></iframe>
</div>`);
}
);
$(".mnNvIcn").click(function () {
$(".lft-nav-bar").toggleClass("lft-nav-bar-Wrap");
$(".ctr-lst-pge").toggleClass("lft-nav-bar-Wrap");
if ($(".apps-loading:visible").length != 0) {
$(".ctr-lst-pge").css("width", "");
$(".ctr-lst-pge").toggleClass("apps-loaded");
$(".ctr-lst-pge").toggleClass("apps-loaded-tr");
}
if(window.innerWidth < 1025){
$(".ctr-lst-pge").toggleClass('d-block');
$(".lft-nav-bar").toggleClass("lft-nav-bar-Wrap d-flex w-100").css('background-color','rgb(0 0 0 / 50%)');
}
});
$(".mre-drp a.sub-nav-item.more").on("click", function () {
$(".sub-nav-item").removeClass("active");
if ($(this)[0].className.includes("active")) {
$(this).find("i").css("transform", "rotate(0deg)");
$(this).removeClass("active");
} else {
$(this).find("i").css("transform", "rotate(180deg)");
$(this).addClass("active");
}
$(this).siblings(".ul-drpdown").toggleClass("d-none");
});
$("a.sub-nav-item")
.not(".more.active")
.on("click", function () {
$(".sub-nav-item").not(".more.active").removeClass("active");
$(this).addClass("active");
});
loadData();
}
$('[data-buttontype="inbox"], [data-application="Mail Application"]').on(
"click",
function () {
$("#detailIframe").empty();
loadData(
"apis/v4/unibase/reminders/platform/getuserreminders/PageSize/0",
false
);
}
);
window.addEventListener("message", function (e) {
if (e.data != undefined) {
if(e.data == "Edit-form"){
$('.frm-hdr').addClass('d-none')
}
if (e.data == "closeForm") {
$("#detailIframe").empty();
$(".hdr-ul, .bdy-ul").removeClass("d-none");
$('.frm-bdy [class="close"]')[0].click();
}
if (e.data == "clickToBack") {
$("#detailIframe").empty();
loadData(
"apis/v4/unibase/reminders/platform/getuserreminders/PageSize/0",
false
);
}
if (e.data.includes("save-form")) {
let spilt = e.data.split("/");
$(`.frm-ifre[data-formid="${spilt[1]}"] .frm-hdr`).removeClass(
"d-none"
).attr('data-frm_hdr','false');
}
if (e.data == "close apps") {
$("body").removeClass("d-flex flex-row");
$("#detailIframe").empty();
$(".hdr-ul, .bdy-ul").removeClass("d-none");
$(".apps-loading").remove();
$("#list-page").css("width", "100%");
$(".lft-nav-bar").removeClass(".lft-nav-bar-Wrap");
$(".ctr-lst-pge").removeClass("apps-loaded");
$(".ctr-lst-pge").removeClass("apps-loaded-tr");
}
if (e.data.includes("/")) {
let spilt = e.data.split("/");
$(
`.frm-ifre[data-formid="${spilt[1]}"] .frm-hdr .ctrl .${spilt[0]}`
).click();
if(spilt[0].includes('success')){
$(`.frm-ifre[data-formid="${spilt[1]}"] .frm-hdr`).removeClass("d-none").attr({'data-frm_hdr': 'false', 'data-saveform':'true'});
}
if(!spilt[0].includes('maximum') && !spilt[0].includes('compress')){
$(`.frm-ifre[data-formid="${spilt[1]}"] .frm-hdr`).removeClass("d-none").attr({'data-frm_hdr': 'false'});
}
}
if (e.data == "closeForm_detailIframe") {
$("#detailIframe").empty();
$(".hdr-ul, .bdy-ul").removeClass("d-none");
}
}
});
$('[class="refrsh"]').on("click", function () {
loadData(
"apis/v4/unibase/reminders/platform/getuserreminders/PageSize/0",
false
);
});
getData("apis/v4/unibase/platform/apps/myapps").then(function (response) {
if(response.message.includes("User Authentication Failed")){
window.location = "../login";
}else{
let result = JSON.parse(response.result);
let html = "<li class='m-0 p-0'><ul class='d-flex flex-wrap m-0 p-0'>";
for (var i = 0; i < result.length; i++) {
html += `<li class="appsBind" data-myappid="${result[i].MyAppId}">`;
if (
result[i].SvgIconUrl != undefined &&
result[i].SvgIconUrl != null &&
result[i].SvgIconUrl != ""
) {
html += `<span class="svg-icons">${result[i].SvgIconUrl}</span>`;
} else {
html +=
'<span class="svg-icons"><svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"> <path class="biz-svg-highlight-color" d="M16.01,31c-1.38,0-2.77-.09-4.14-.28-3.57-.49-6.58-1.42-9.21-2.86-.25-.14-.53-.42-.57-.71-.02-.19-.05-.37-.07-.56-.17-1.33-.34-2.7-.12-4.09,.31-1.92,1.27-3.07,2.95-3.5,1.88-.49,3.74-1.32,5.7-2.55,.07-.04,.14-.08,.24-.13,.04-.02,.09-.05,.15-.08l.28-.15,2.84,8.94c.03-.07,.05-.14,.08-.21,.05-.14,.1-.28,.15-.42,.19-.51,.38-1.04,.53-1.56,0,0,0-.01,0-.02-.03-.03-.05-.07-.06-.11l-1.46-3.77c-.06-.14-.04-.31,.05-.44,.09-.13,.23-.2,.39-.2h4.52c.16,0,.3,.08,.39,.2,.09,.13,.11,.29,.05,.44l-1.46,3.77s-.04,.09-.07,.13c.01,.05,.02,.09,.04,.14,.23,.6,.45,1.22,.66,1.82,.03,.07,.05,.15,.08,.22l2.83-8.89,.28,.14c.35,.18,.7,.37,1.04,.55,.79,.42,1.53,.81,2.3,1.16,.91,.41,1.82,.74,2.72,.98,1.71,.45,2.69,1.61,2.99,3.54h0c.22,1.38,.04,2.74-.13,4.06-.03,.2-.05,.39-.08,.59-.04,.33-.39,.6-.58,.7-2.61,1.43-5.61,2.36-9.16,2.85-1.38,.19-2.77,.28-4.16,.28Zm-5.11-14.14s-.05,.03-.07,.04c-2,1.26-3.91,2.11-5.85,2.61-1.48,.38-2.29,1.36-2.56,3.07-.21,1.31-.04,2.65,.12,3.94,.02,.19,.05,.37,.07,.56,0,.06,.14,.22,.29,.31,2.57,1.4,5.52,2.32,9.03,2.8,2.71,.37,5.45,.37,8.16,0,3.49-.48,6.43-1.39,8.98-2.79,.16-.09,.3-.24,.3-.3,.02-.2,.05-.39,.08-.59,.17-1.28,.34-2.6,.13-3.91h0c-.27-1.72-1.1-2.71-2.6-3.11-.93-.25-1.87-.59-2.8-1.01-.79-.36-1.54-.76-2.33-1.18-.25-.13-.5-.27-.75-.4l-3.11,9.79-.27-.74c-.12-.32-.23-.65-.34-.97-.21-.6-.42-1.21-.65-1.81-.06-.15-.09-.29-.1-.43v-.18s.14-.06,.14-.06l1.42-3.66h-4.34l1.42,3.66,.11,.07v.15c0,.1-.01,.19-.03,.27-.16,.54-.35,1.08-.54,1.6-.05,.14-.1,.28-.15,.42-.06,.18-.14,.35-.21,.51-.05,.13-.11,.26-.16,.39l-.27,.71-3.1-9.76Z"></path> <path class="biz-svg-highlight-color" d="M16.09,16.2c-.81,0-1.63-.16-2.42-.48-2.36-.98-3.89-3.26-3.89-5.82,0-.62,.51-1.13,1.13-1.13s1.13,.51,1.13,1.13c0,1.64,.98,3.11,2.5,3.74,1.52,.63,3.25,.28,4.41-.88,1.16-1.16,1.51-2.89,.88-4.41-.63-1.52-2.1-2.5-3.74-2.5h-2.45l.66,.66c.44,.44,.44,1.16,0,1.6-.21,.21-.5,.33-.8,.33s-.59-.12-.8-.33l-2.59-2.59c-.21-.21-.33-.5-.33-.8s.12-.59,.33-.8l2.59-2.59c.21-.21,.5-.33,.8-.33s.59,.12,.8,.33c.21,.21,.33,.5,.33,.8s-.12,.59-.33,.8l-.66,.66h2.45c2.56,0,4.84,1.53,5.82,3.89,.98,2.36,.44,5.06-1.37,6.87-1.21,1.21-2.81,1.85-4.45,1.85Zm-5.18-6.9c-.33,0-.6,.27-.6,.6,0,2.34,1.4,4.44,3.56,5.33,2.16,.9,4.63,.41,6.29-1.25s2.15-4.13,1.25-6.29c-.9-2.16-2.99-3.56-5.33-3.56h-3.74l1.58-1.57c.23-.23,.23-.61,0-.85-.23-.23-.62-.23-.85,0l-2.59,2.59c-.11,.11-.18,.27-.18,.42s.06,.31,.18,.42l2.59,2.59c.23,.23,.62,.23,.85,0,.23-.23,.23-.61,0-.85l-1.58-1.57h3.74c1.86,0,3.52,1.11,4.23,2.83,.71,1.72,.32,3.68-.99,4.99-1.31,1.31-3.27,1.7-4.99,.99-1.72-.71-2.83-2.37-2.83-4.23,0-.33-.27-.6-.6-.6Z"></path> </svg></span>';
}
html += `<span class="appTitle">${result[i].AppTitle}</span></li>`;
}
html += "</ul></li>";
$("#apps-list").html(html);
$(".appsBind").on("click", function () {
let width = "330px";
if(window.innerWidth> 1024){
$("#list-page").css("width", `calc(100% - ${width})`);
}
if( $('.lft-nav-bar-2:visible').length !=0 ){
$(".ctr-lst-pge").addClass("apps-loaded-tr");
}else{
$(".ctr-lst-pge").addClass("apps-loaded lft-nav-bar-Wrap")
}
let installedAppId = $(this).attr("data-myappid");
const cookie = getCookie("_idty");
if (cookie) {
let serverUrl = _serverUrl();
const {unibaseId, tenantId, userId} = JSON.parse(cookie);
$("body").addClass("d-flex flex-row");
$(".apps-loading").remove();
$("#list-page").after(
`<section id="" class="apps-loading"><iframe width="100%" style="height:inherit"  name="lstSrcFrame" id="lstSrcFrame" class="lstSrcFrame" src="${serverUrl}#/${unibaseId}/${tenantId}/${userId}/${installedAppId}/0/false/loadList"></iframe></section>`
);
}
});
}
});
$(".btn.dropdown-toggle.create").on("click", function () {
let appName = [];
getData("apis/v4/unibase/platform/apps/myapps").then(async function (res) {
let response = await JSON.parse(res.result);
jQuery.each(response, async function (index, item) {
let installedAppId = Number(item.MyAppId);
await getData(
`apis/v4/unibase/platform/apps/listappconfigurations/installedappid/${installedAppId}`
).then(function (result) {
if (
result.result != null &&
result.result != "" &&
result.result != "[]"
) {
let _data = JSON.parse(result.result);
let data = _data.filter((x) => x.SettingUrlType == 1);
if (data.length != 0) {
appName.push({
SettingUrlType: data[0].SettingUrlType,
AppTitle: data[0].AppTitle,
FormId: data[0].FormId,
InstalledAppId: data[0].InstalledAppId,
RoleSettingAppId: data[0].RoleSettingAppId,
InstalledAppGuid: data[0].InstalledAppGuid,
AppConfigurationId: data[0].AppConfigurationId,
AppPermissionId: data[0].AppPermissionId,
AppConfigType: data[0].AppConfigType,
});
}
}
});
await appName.sort(function (a, b) {
var a1 = a.AppTitle.toLowerCase().trim(), b1 = b.AppTitle.toLowerCase().trim();
if (a1 == b1) return 0;
return a1 > b1 ? 1 : -1;
});
await createLoad(appName);
});
});
});
$('[data-buttontype="Starred"]').on("click", function () {
let count = 20;
if (
$('[data-buttontype="inbox"] .length').attr("data-taskscount") !=
undefined
) {
count = $('[data-buttontype="inbox"] .length').attr("data-taskscount");
}
loadData(
`apis/v4/unibase/reminders/platform/getunreadreminders/ReminderType/1/PageSize/${count}`,
false
);
});
$('[data-buttontype="unstarred"]').on("click", function () {
let count = 20;
if (
$('[data-buttontype="inbox"] .length').attr("data-notificount") !=
undefined
) {
count = $('[data-buttontype="inbox"] .length').attr("data-notificount");
}
loadData(
`apis/v4/unibase/reminders/platform/getunreadreminders/ReminderType/6/PageSize/${count}`,
false
);
});
$('[data-buttontype="all"]').on("click", function () {
loadData(
"apis/v4/unibase/reminders/platform/getuserreminders/PageSize/0",
false
);
});
$('[data-buttontype="read"]').on("click", function () {
$(".pdng.lst-Notifi").addClass("d-none");
$(".pdng.lst-Notifi[data-isreaded='2']").removeClass("d-none");
});
$('[data-buttontype="unread"]').on("click", function () {
$(".pdng.lst-Notifi").addClass("d-none");
$(".pdng.lst-Notifi[data-isreaded='8']").removeClass("d-none");
});
$('[data-buttontype="sent"]').on("click", function () {
loadData(
"apis/v4/unibase/reminders/platform/getuserreminders/PageSize/0",
true
);
});
try {
loadData(
"apis/v4/unibase/reminders/platform/getuserreminders/PageSize/0",
false
);
} catch (error) {
console.log("LoadData Method is not loading, and getting error");
}
}
export function stagesLoad() {
$(".stgs-li").each(function () {
let html = "";
let InstalledAppId = $(this).attr("data-installedappid");
getData(
`apis/v4/unibase/platform/apps/getallchangestageroles/installedappid/${InstalledAppId}`
).then(function (stg_rslt) {
let data = JSON.parse(stg_rslt.result);
let _stage = data.filter(function (o) {
return o.IsDefault == true;
});
html += `<button type="button" class="btn btn-sm btn-info dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false" data-isdefault="${_stage[0].IsDefault}" data-stageid="${_stage[0].StageId}" >
${_stage[0].StageName}
</button>
<ul class="dropdown-menu">`;
for (var s = 0; s < data.length; s++) {
let stage = data[s];
if (!stage.IsDefault) {
html += `<li><a class="dropdown-item" href="javascript:;" data-isdefault="${stage.IsDefault}" data-stageid="${stage.StageId}">${stage.StageName}</a></li>`;
}
}
html += "</ul>";
$(`.stgs-li[data-installedappid='${InstalledAppId}']`).html(html);
});
});
}
+100 -106
Просмотреть файл
@@ -1,147 +1,141 @@
import {
setCookie
} from "./cookiehelper.js";
import {
_serverUrl
} from "./setting.js";
import {setCookie} from "./cookiehelper.js";
import {_serverUrl} from "./setting.js";
const serverUrl = _serverUrl();
const emailInputEl = document.getElementById("email");
const passwordInputEl = document.getElementById("password");
const emailErrEl = document.getElementById("emailErrMsg");
const passwordErrEl = document.getElementById("passwordErrMsg");
const emailContainerEl = document.getElementById("emailBox");
const passwordContainerEl = document.getElementById("passwordBox");
const showPasswordChk = document.getElementById("showPassword");
const emailNextBtn = document.getElementById("emailNextBtn");
const renterEmailLink = document.getElementById("renterEmail");
const loginSubmitBtn = document.getElementById("loginSubmitBtn");
const emailInputEl = document.getElementById('email');
const passwordInputEl = document.getElementById('password');
const emailErrEl = document.getElementById('emailErrMsg');
const passwordErrEl = document.getElementById('passwordErrMsg');
const emailContainerEl = document.getElementById('emailBox');
const passwordContainerEl = document.getElementById('passwordBox');
const showPasswordChk = document.getElementById('showPassword');
const emailNextBtn = document.getElementById('emailNextBtn');
const renterEmailLink = document.getElementById('renterEmail');
const loginSubmitBtn = document.getElementById('loginSubmitBtn');
passwordContainerEl.style.display = 'none';
passwordContainerEl.style.display = "none";
emailInputEl.focus();
function showPasswordBox() {
const email = emailInputEl.value;
if (validateEmailOrPhone()) {
emailContainerEl.style.display = 'none';
passwordContainerEl.style.display = 'block';
document.getElementById('entered-email').innerHTML = email;
passwordInputEl.focus();
emailInputEl.classList.remove('error');
emailErrEl.innerText = '';
} else {
emailInputEl.classList.add('error');
emailErrEl.innerText = 'Please enter valid email or phone';
}
const email = emailInputEl.value;
if (validateEmailOrPhone()) {
emailContainerEl.style.display = "none";
passwordContainerEl.style.display = "block";
document.getElementById("entered-email").innerHTML = email;
passwordInputEl.focus();
emailInputEl.classList.remove("error");
emailErrEl.innerText = "";
} else {
emailInputEl.classList.add("error");
emailErrEl.innerText = "Please enter valid email or phone";
}
}
function validateEmailOrPhone() {
const value = emailInputEl.value.trim();
const regx = /^[6-9]\d{9}$/;
if (value.includes('@') || regx.test(value)) {
return true;
}
return false;
const value = emailInputEl.value.trim();
const regx = /^[6-9]\d{9}$/;
if (value.includes("@") || regx.test(value)) {
return true;
}
return false;
}
function togglePassword() {
const ele = document.getElementById('showPassword');
const password = passwordInputEl;
const ele = document.getElementById("showPassword");
const password = passwordInputEl;
if (password.value.length > 0) {
passwordInputEl.value = password.value;
password.focus();
if (ele.checked) {
password.setAttribute('type', 'text');
} else {
password.setAttribute('type', 'password');
}
if (password.value.length > 0) {
passwordInputEl.value = password.value;
password.focus();
if (ele.checked) {
password.setAttribute("type", "text");
} else {
password.setAttribute("type", "password");
}
}
}
function onPasswordFocusOut() {
const passwordLabel = document.getElementById('passwordLabel');
if (passwordInputEl.value.length > 0) {
passwordLabel.classList.add('password-fixed');
} else {
passwordLabel.classList.remove('password-fixed');
}
const passwordLabel = document.getElementById("passwordLabel");
if (passwordInputEl.value.length > 0) {
passwordLabel.classList.add("password-fixed");
} else {
passwordLabel.classList.remove("password-fixed");
}
}
function onEmailFocusOut() {
const emailLabel = document.getElementById('emailLabel');
if (emailInputEl.value.trim()) {
emailLabel.classList.add('password-fixed');
} else {
emailLabel.classList.remove('password-fixed');
}
const emailLabel = document.getElementById("emailLabel");
if (emailInputEl.value.trim()) {
emailLabel.classList.add("password-fixed");
} else {
emailLabel.classList.remove("password-fixed");
}
}
function loginUser(email, password) {
const postData = JSON.stringify({
UserName: email,
Password: password,
UnibaseId: '',
RememberMe: false,
const postData = JSON.stringify({
UserName: email,
Password: password,
UnibaseId: "",
RememberMe: false,
});
const requestOptions = {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: postData,
redirect: "follow",
};
fetch(serverUrl + "account/login", requestOptions)
.then((response) => response.text())
.then((result) => {
const data = JSON.parse(result);
if (data.status === 0) {
setCookie("_idty", JSON.stringify(data.result), 1);
window.location = "../authentication";
} else {
passwordErrEl.innerText = data.message;
}
})
.catch((error) => {
passwordErrEl.innerText = error;
});
const requestOptions = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: postData,
redirect: 'follow',
};
fetch(serverUrl + 'account/login', requestOptions)
.then((response) => response.text())
.then((result) => {
const data = JSON.parse(result);
if (data.status === 0) {
setCookie('_idty', JSON.stringify(data.result), 1);
window.location = '../authentication';
} else {
passwordErrEl.innerText = data.message;
}
})
.catch((error) => {
passwordErrEl.innerText = error;
});
}
function validateLogin() {
const email = emailInputEl.value;
const password = passwordInputEl.value;
if (password.trim().length !== 0) {
loginUser(email, password);
} else {
passwordInputEl.classList.add('error');
passwordErrEl.innerText = 'Please enter valid password';
}
const email = emailInputEl.value;
const password = passwordInputEl.value;
if (password.trim().length !== 0) {
loginUser(email, password);
} else {
passwordInputEl.classList.add("error");
passwordErrEl.innerText = "Please enter valid password";
}
}
function reEnterEmailClickHandler() {
emailContainerEl.style.display = 'block';
passwordContainerEl.style.display = 'none';
emailInputEl.focus();
emailContainerEl.style.display = "block";
passwordContainerEl.style.display = "none";
emailInputEl.focus();
}
function initializeEventListeners() {
emailNextBtn.addEventListener('click', showPasswordBox);
emailNextBtn.addEventListener("click", showPasswordBox);
showPasswordChk.addEventListener('click', togglePassword);
showPasswordChk.addEventListener("click", togglePassword);
passwordInputEl.addEventListener('focusout', onPasswordFocusOut);
passwordInputEl.addEventListener("focusout", onPasswordFocusOut);
emailInputEl.addEventListener('focusout', onEmailFocusOut);
emailInputEl.addEventListener("focusout", onEmailFocusOut);
loginSubmitBtn.addEventListener('click', validateLogin);
loginSubmitBtn.addEventListener("click", validateLogin);
renterEmailLink.addEventListener('click', reEnterEmailClickHandler);
renterEmailLink.addEventListener("click", reEnterEmailClickHandler);
}
initializeEventListeners();
initializeEventListeners();
+7 -7
Просмотреть файл
@@ -1,11 +1,11 @@
import { isAuthenticated } from "./cookiehelper.js";
import {isAuthenticated} from "./cookiehelper.js";
function checkUser(params) {
if (isAuthenticated()) {
window.location = './authentication';
} else {
window.location = './login';
}
if (isAuthenticated()) {
window.location = "./authentication";
} else {
window.location = "./login";
}
}
checkUser();
checkUser();
Разница между файлами не показана из-за своего большого размера Загрузить разницу
+8 -4
Просмотреть файл
@@ -1,5 +1,9 @@
export function _serverUrl() {
// sachin 2.0 commitw
// sudheer 1.0 new branch
return 'http://localhost:3086/';
}
// sachin 2.0 commitw
// sudheer 1.0 new branch
// merge request another time
return "http://localhost:3088/";
//return "http://localhost:3086/";
//return "https://c02.bizgaze.app/";
//return "https://dev.bizgaze.app/";
}
Разница между файлами не показана из-за своего большого размера Загрузить разницу
+201
Просмотреть файл
@@ -0,0 +1,201 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
+138
Просмотреть файл
@@ -0,0 +1,138 @@
[![logo](http://cdn.remixicon.com/logo-github.svg)](https://remixicon.com)
[![npm](https://img.shields.io/npm/v/remixicon.svg?labelColor=4A4A4A&color=006AFF&style=flat-square)](https://www.npmjs.com/package/remixicon)
[![downloads](https://img.shields.io/npm/dt/remixicon.svg?labelColor=4A4A4A&color=23AF5F&style=flat-square)](https://www.npmjs.com/package/remixicon)
[![](https://data.jsdelivr.com/v1/package/npm/remixicon/badge)](https://www.jsdelivr.com/package/npm/remixicon)
[![spectrum](https://img.shields.io/badge/chat-Spectrum-7028F5.svg?labelColor=4A4A4A&style=flat-square)](https://spectrum.chat/remixdesign/remixicon)
[![donate](https://img.shields.io/badge/-Donate-DA6429.svg?style=flat-square)](https://remixicon.com/#donate)
English | [简体中文](./README_CN.md)
Remix Icon is a set of open-source neutral-style system symbols for designers and developers. Unlike a patchwork icon library, 2200+ icons are all elaborately crafted so that they are born with the gene of readability, consistency and perfect pixels. Each icon was designed in "Outlined" and "Filled" styles based on a 24x24 grid. Of course, all the icons are free for both personal and commercial use.
[![icon demo](http://cdn.remixicon.com/preview.svg)](https://remixicon.com)
View the full set of Remix Icons at [remixicon.com](https://remixicon.com).
## Usage
### Basic Usage
Just click the icons you want from [remixicon.com](https://remixicon.com), and then you can download the icons in SVG or PNG format.
Designers can click the `Copy SVG` button and then press `⌘+V` or `Ctrl+V` to paste the vector graphic into your design tool directly, easy and simple.
> We recommend that designers download or copy icons from our website when needed instead of managing all of them in a local folder. The website's search engine allows you to quickly locate the icon you are looking for and the icons on the website are being continuously updated.
>
> The `Copy SVG` now supports Sketch, Figma, Adobe XD, Adobe Illustrator, Affinity Designer, Affinity Photo, etc.
Using SVG on the web is as simple as JPEG or PNG. Such as:
```html
<img height="32" width="32" src="img/admin-fill.svg" />
```
### Webfont Usage
> **Note:** You can import Remix Icon with npm install, cdn or download it manually.
#### Installation
> **Note:** If you'd like to use Remix Icon with a CDN, you can skip this installation step.
```
npm install remixicon --save
```
```
import 'remixicon/fonts/remixicon.css'
```
> import CSS to your main.js
#### CDN
Copy the following code and add it to the &lt;head&gt; tag of your html document.
```html
<link href="https://cdn.jsdelivr.net/npm/remixicon@2.5.0/fonts/remixicon.css" rel="stylesheet">
```
> ==**Important Note:**== We've changed our CDN service to jsDelivr from v2.2.0, and the previous CDN service will be terminated on Jan 30, 2020. Please replace your old CDN to the new link above so as not to affect your business. We apologize for the inconvenience.
>
> The `@2.5.0` in the CDN link can be changed to any history version we've published.
#### Download Manually
Download [`remixicon.css`](https://cdn.jsdelivr.net/npm/remixicon@2.5.0/fonts/remixicon.css) file, add it to the &lt;head&gt; tag of your html document.
#### Use
Add icon with class name, class name rule: ri-{name}-{style}
```html
<i class="ri-admin-line"></i>
<i class="ri-admin-fill"></i>
```
> **Note:** We changed the class name prefixes from `remixicon-` to `ri` from v2.0.0;
> **Note:** You can go to [remixicon.com](https://remixicon.com) to check the name of the icons. `-line` means the outlined style icon, and `-fill` means the filled style icon.
#### Sizing
RemixIcon can be resized by css class integrated by `remixicon.css` . Icons inherit the `font-size` of their parent container and with the following classes you can increase or decrease the size of icons relative to that inherited `font-size`. You can also use `ri-fw` class for a fixed width for icons. For example:
```html
<div style="font-size: 24px;">
<i class="ri-admin-line ri-fw"></i> <!-- fixed width -->
<i class="ri-admin-line ri-xxs"></i> <!-- 0.5em -->
<i class="ri-admin-line ri-xs"></i> <!-- 0.75em -->
<i class="ri-admin-line ri-sm"></i> <!-- 0.875em -->
<i class="ri-admin-line ri-1x"></i> <!-- 1em -->
<i class="ri-admin-line ri-lg"></i> <!-- 1.3333em -->
<i class="ri-admin-line ri-xl"></i> <!-- 1.5em -->
<i class="ri-admin-line ri-2x"></i> <!-- 2em -->
<i class="ri-admin-line ri-3x"></i> <!-- 3em -->
...
<i class="ri-admin-line ri-10x"></i> <!-- 10em -->
</div>
```
> You can check the [`remixicon.css`](https://github.com/Remix-Design/RemixIcon/blob/master/fonts/remixicon.css) file for more info and details.
### SVG Sprite Usage
Download [`remixicon.symbol.svg`](https://cdn.remixicon.com/releases/v2.5.0/remixicon.symbol.svg) file into your project directoryuse icons with the `<use>` element, such as:
```html
<svg class='remix'>
<use xlink:href="your-path/remixicon.symbol.svg#ri-admin-fill"></use>
</svg>
```
```css
.remix {
width: 24px;
height: 24px;
fill: #333;
}
```
> **Note:** `ri-admin-fill` after the `#` in the above example can be replaced with any valid icon name of Remix Icon. You can go to [remixicon.com](https://remixicon.com) to check the name of the icons. `-line` means the outlined style icon, and `-fill` means the filled style icon.
## Contributing
> **Note:** In order to ensure the quality of each icon, we currently do not accept third-party drawn icons. If you want to contribute an icon to Remix Icon, you can create an [issue](https://github.com/Remix-Design/remixicon/issues) with a screenshot or url to your svg-format file. If you are not familiar with github, you can also email us directly `jimmy@remixdesign.cn`.
### Icon Request
If there is no suitable icon for your usage scenario, you can create an [issue](https://github.com/Remix-Design/remixicon/issues) with a title of "Icon request: <Icon name>" and fill the issue template.
> RemixIcon is mainly focuses on user interface icons. If we did not include the logo icons you were looking for, I recommend this icon library - [Simple Icons](https://github.com/simple-icons/simple-icons)
### Icon Search Keywords
We use [`tags.json`](https://github.com/Remix-Design/remixicon/blob/master/tags.json) file to manage the search keywords of our [website](https://remixicon.com). But at the moment, we don't have a good automatic method to complete the keywords for each icon. So we hope you can help us to improve the `tags.json` file by creating [issues](https://github.com/Remix-Design/remixicon/issues), sending emails or "pull request" of tags.json file to make the search engine better. Especially when one of our icons matches your scene but you don't find the icon with your keywords.
## Sub-projects
[RemixIcon-Slides](https://github.com/Remix-Design/RemixIcon-Slides) PowerPoint and Keynote verison of Remix Icon.
## License
Remix Icon is licensed under the [Apache License Version 2.0](https://github.com/Remix-Design/remixicon/blob/master/License). Feel free to use these icons in your products and distribute them. We would be very grateful if you mention "Remix Icon" in your product info, but it's not required. The only thing we ask is that these icons are not for sale.
+135
Просмотреть файл
@@ -0,0 +1,135 @@
[![logo](http://cdn.remixicon.com/logo-github.svg)](https://remixicon.com)
[![npm](https://img.shields.io/npm/v/remixicon.svg?labelColor=4A4A4A&color=006AFF&style=flat-square)](https://www.npmjs.com/package/remixicon)
[![downloads](https://img.shields.io/npm/dt/remixicon.svg?labelColor=4A4A4A&color=23AF5F&style=flat-square)](https://www.npmjs.com/package/remixicon)
[![](https://data.jsdelivr.com/v1/package/npm/remixicon/badge)](https://www.jsdelivr.com/package/npm/remixicon)
[![spectrum](https://img.shields.io/badge/沟通-Spectrum-7028F5.svg?labelColor=4A4A4A&style=flat-square)](https://spectrum.chat/remixdesign/remixicon)
[![donate](https://img.shields.io/badge/-赞助-DA6429.svg?style=flat-square)](https://remixicon.com/#donate)
[English](./README.md) | 简体中文
Remix Icon 是一套面向设计师和开发者的开源图标库。我们在设计之初将图标风格定义为中性风格,以便适用于各种用户群的项目。与拼凑混搭的图标库不同,Remix Icon 的每一枚图标都是由设计师按照统一规范精心绘制的,并确保每一枚图标在拥有完美像素对齐的基础上风格一致且简洁易读。图标以24x24网格为基准,分为“线性图标”和“面型图标”两种风格。所有的图标均可免费用于个人项目和商业项目,Enjoy it~
[![icon demo](http://cdn.remixicon.com/preview.svg)](https://remixicon.com)
前往官网查看整套图标库 [remixicon.com](https://remixicon.com).
## 使用说明
### 基本用法
直接在[remixicon.com](https://remixicon.com)点击您想要的图标, 在打开的图标窗口中可以以 PNG 或者 SVG 格式进行下载,也可以直接复制 SVG 代码。
设计师小伙伴可以直接点击 `Copy SVG` 之后在UI设计软件中直接粘贴矢量图形,使用起来像插件一样简单便捷。
> 我们建议设计师小伙伴在需要使用某些图标的时候通过官网搜索下载使用,而不是将一整套图标全部下载放在本地文件夹中进行管理;官网的搜索栏可以帮助您快速定位您想要的图标,而且支持中文关键词搜索,这相比本地文件夹管理图标效率要高很多;最重要的是,官网的图标会持续更新。
> 在官网点击 Copy SVG 之后,可以在 Sketch 中直接粘贴矢量图标,也可以在代码文本编辑器中粘贴 SVG 代码。
>
> `Copy SVG` 功能目前支持在 Sketch、Figma、Adobe XD、Adobe Illustrator、Affinity Designer、Affinity Photo 软件中直接粘贴矢量图形。
SVG本身也是一种图片格式,所以您可以像使用其他格式(如JPG、PNG)的图片文件一样使用SVG文件,例如直接引入的方式:
```html
<img height="32" width="32" src="img/admin-fill.svg" />
```
### Webfont 用法
> **Note:** Webfont支持npm安装引入、CDN引入或者手动下载的方式引入到项目当中,三选一即可。
#### 安装引入
> **Note:** 如果您打算通过CDN的方式使用 Remix Icon,可以跳过安装引入这一步。
```
npm install remixicon --save
```
```
import 'remixicon/fonts/remixicon.css'
```
> 入口文件引入CSS
#### CDN引入
如果不打算通过安装的方式使用,可以直接复制下面这行代码到您HTML文档的 &lt;head&gt; 标签中,这样就完成了CDN方式的图标引入,简单快捷,推荐方式。
```html
<link href="https://cdn.jsdelivr.net/npm/remixicon@2.5.0/fonts/remixicon.css" rel="stylesheet">
```
> ==**重要提醒**==:我们从 v2.2.0 版本开始将我们的 CDN 服务迁移到了 jsDelivr 上,之前的 CDN 链接将在2020年1月30日停止服务,请务必切换您的 CDN 为最新的服务链接,以免影响您的业务,对于由此带来的影响和不便,我们深感抱歉。
>
> 上面 CDN 链接中的 `@2.5.0` 可以更改为任何我们曾经发布过的历史版本号。
#### 手动下载引入
下载保存[`remixicon.css`](https://cdn.jsdelivr.net/npm/remixicon@2.5.0/fonts/remixicon.css)文件,添加到项目的&lt;head&gt; 标签中即可。
#### 使用
引入Remix Icon图标库后,就可以在web项目中使用了,只要在使用图标的时候将图标名称作为类名就可以了。类名规则:ri-{name}-{style}
```html
<i class="ri-admin-line"></i>
<i class="ri-admin-fill"></i>
```
> **注意:** 从 v2.0.0 开始,我们修改了 class 名称的前缀,从 `remixicon-` 改为了 `ri-`;
> **Note:** 您可以到官网 [remixicon.com](https://remixicon.com) 查阅图标对应的名称,然后在名称后添加图标风格,`-line` 代表线性风格,`-fill`代表面型风格。
#### 大小
`v1.3.1`及以上版本的字体使用方式下,RemixIcon 可以通过 `remixicon.css` 中集成的一些 class 来快捷改变图标的大小。这些 class 使用 `em` 相对大小单位来控制图标尺寸,相对值为图标的父类元素的字体大小值。您也可以通过 `ri-fw` 来使得图标宽度固定,例如在列表场景中使用。class 举例:
```html
<div style="font-size: 24px;">
<i class="ri-admin-line ri-fw"></i> <!-- fixed width -->
<i class="ri-admin-line ri-xxs"></i> <!-- 0.5em -->
<i class="ri-admin-line ri-xs"></i> <!-- 0.75em -->
<i class="ri-admin-line ri-sm"></i> <!-- 0.875em -->
<i class="ri-admin-line ri-1x"></i> <!-- 1em -->
<i class="ri-admin-line ri-lg"></i> <!-- 1.3333em -->
<i class="ri-admin-line ri-xl"></i> <!-- 1.5em -->
<i class="ri-admin-line ri-2x"></i> <!-- 2em -->
<i class="ri-admin-line ri-3x"></i> <!-- 3em -->
...
<i class="ri-admin-line ri-10x"></i> <!-- 10em -->
</div>
```
> 您也可以在 [`remixicon.css`](https://github.com/Remix-Design/RemixIcon/blob/master/fonts/remixicon.css) 中查看到更多的尺寸定义相关信息。
### SVG Sprite用法
下载 [`remixicon.symbol.svg`](https://cdn.remixicon.com/releases/v2.5.0/remixicon.symbol.svg) 并添加到您的项目目录中,通过 `<use>` 标签来引用图标,通过css可以自定义图标的大小和颜色等属性,例如:
```html
<svg class='remix'>
<use xlink:href="存放路径/remixicon.symbol.svg#ri-admin-fill"></use>
</svg>
```
```css
.remix {
width: 24px;
height: 24px;
fill: #333;
}
```
> **Note:** 上面示例中 `#` 后面的`ri-admin-fill`可以替换为任何 Remix Icon 图标名称,您可以到官网 [remixicon.com](https://remixicon.com) 查阅图标对应的名称,然后在名称后添加图标风格,`-line` 代表线性风格,`-fill` 代表面型风格。`remixicon.symbol.svg`文件默认是无法预览查看的,只能通过 `<use>` 使用之后查看。
## 协作共建
> **Note:** 为了保证每一枚图标的质量,现阶段我们还不接受第三方小伙伴绘制的图标。如果您想要向 Remix Icon 贡献自己设计的图标,请创建一个[issue](https://github.com/Remix-Design/remixicon/issues)来提交自己的图标设计,并在issue详情中附上自己图标的下载地址,我们会按照 Remix Icon图标风格规范进行审核,通过后将会添加到图标库中,并在更新日志中署上作者的ID。如果你对GitHub不是很熟悉,不清除issue和pull request是什么,也可以直接给我们发邮件 `jimmy@remixdesign.cn`,内容表述清楚即可。
### 图标申请
如果图标库中缺少某个适合您业务场景的图标,您可以通过创建[issue](https://github.com/Remix-Design/remixicon/issues)的方式进行申请,issue标题格式为:“Icon request: <图标名称>”,并完善issue模板中的相应信息。感谢您提出图标申请,这也是帮助我们完善图标库的一种协作共建方式。
> RemixIcon 主要聚焦于用户界面类的图标,如果 RemixIcon 没有包含您需要的 logo 类的图标,推荐使用 [Simple Icons](https://github.com/simple-icons/simple-icons),这是一个优秀的 logo 类图标合集。如果您需要的 logo 经常在 UI 端展示,比如社交媒体类图标,也可以发出申请。
### 图标搜索关键词
目前我们的[图标官网](https://remixicon.com)是通过[`tags.json`](https://github.com/Remix-Design/remixicon/blob/master/tags.json)文件来管理搜索关键词的,目前我们已经为所有图标添加了中文关键词,因此我们可以通过中文对图标进行搜索和定位;但是由于关键词不是很健全,所以用户还是经常无法通过某个特定关键词搜索到已有图标。而目前我们还没有一个很好的自动化策略来穷举每一个图标的关键词,只能通过人肉添加的方式来进行完善,希望用户可以通过提[issue](https://github.com/Remix-Design/remixicon/issues) 或者pull request的方式来帮我们一块完善维护`tags.json`,让搜索功能变得更加好用。
## 相关项目
[RemixIcon-Slides](https://github.com/Remix-Design/RemixIcon-Slides) Remix Icon的PPT版本和Keynote版本。
## 协议许可
Remix Icon 使用的是 [Apache License Version 2.0](https://github.com/Remix-Design/remixicon/blob/master/License) 开源协议。请放心使用和分享本图标库,您可以查看协议详情来了解详细的开源策略。如果您能在您的产品介绍中署名 Remix Icon,我们将会非常感激,但这并不是必须的。唯一需要注意的是,您不能二次销售本图标库中的图标,否则我们会进行追究。
Разница между файлами не показана из-за своего большого размера Загрузить разницу
Двоичный файл не отображается.
Разница между файлами не показана из-за своего большого размера Загрузить разницу
Разница между файлами не показана из-за своего большого размера Загрузить разницу

После

Ширина:  |  Высота:  |  Размер: 1.1 MiB

Разница между файлами не показана из-за своего большого размера Загрузить разницу

После

Ширина:  |  Высота:  |  Размер: 877 KiB

Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M18.901 10a2.999 2.999 0 0 0 4.075 1.113 3.5 3.5 0 0 1-1.975 3.55L21 21h-6v-2a3 3 0 0 0-5.995-.176L9 19v2H3v-6.336a3.5 3.5 0 0 1-1.979-3.553A2.999 2.999 0 0 0 5.098 10h13.803zm-1.865-7a3.5 3.5 0 0 0 4.446 2.86 3.5 3.5 0 0 1-3.29 3.135L18 9H6a3.5 3.5 0 0 1-3.482-3.14A3.5 3.5 0 0 0 6.964 3h10.072z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 448 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path fill-rule="nonzero" d="M18.901 10a2.999 2.999 0 0 0 4.075 1.113 3.5 3.5 0 0 1-1.975 3.55L21 21h-7v-2a2 2 0 0 0-1.85-1.995L12 17a2 2 0 0 0-1.995 1.85L10 19v2H3v-6.336a3.5 3.5 0 0 1-1.979-3.553A2.999 2.999 0 0 0 5.098 10h13.803zm-.971 2H6.069l-.076.079c-.431.42-.935.76-1.486 1.002l-.096.039.589.28-.001 5.6 3.002-.001v-.072l.01-.223c.149-2.016 1.78-3.599 3.854-3.698l.208-.005.223.01a4 4 0 0 1 3.699 3.787l.004.201L19 19l.001-5.6.587-.28-.095-.04a5.002 5.002 0 0 1-1.486-1.001L17.93 12zm-.894-9a3.5 3.5 0 0 0 4.446 2.86 3.5 3.5 0 0 1-3.29 3.135L18 9H6a3.5 3.5 0 0 1-3.482-3.14A3.5 3.5 0 0 0 6.964 3h10.072zM15.6 5H8.399a5.507 5.507 0 0 1-1.49 1.816L6.661 7h10.677l-.012-.008a5.518 5.518 0 0 1-1.579-1.722L15.6 5z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 860 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M12.513 2.001a9.004 9.004 0 0 0 9.97 5.877A4.501 4.501 0 0 1 19 11.888V19l2 .001v2H3v-2h2v-7.113a4.503 4.503 0 0 1-3.484-4.01 9.004 9.004 0 0 0 9.972-5.876h1.025zM17 12H7V19h10v-7z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 332 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path fill-rule="nonzero" d="M12.513 2.001a9.004 9.004 0 0 0 9.97 5.877A4.501 4.501 0 0 1 19 11.888V19l2 .001v2H3v-2h2v-7.113a4.503 4.503 0 0 1-3.484-4.01 9.004 9.004 0 0 0 9.972-5.876h1.025zM17 12H7V19h10v-7zm-5-6.673l-.11.155A11.012 11.012 0 0 1 5.4 9.736l-.358.073.673.19h12.573l.668-.19-.011-.002a11.01 11.01 0 0 1-6.836-4.326L12 5.326z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 483 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M2 20h20v2H2v-2zm2-8h2v7H4v-7zm5 0h2v7H9v-7zm4 0h2v7h-2v-7zm5 0h2v7h-2v-7zM2 7l10-5 10 5v4H2V7zm10 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 281 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M2 20h20v2H2v-2zm2-8h2v7H4v-7zm5 0h2v7H9v-7zm4 0h2v7h-2v-7zm5 0h2v7h-2v-7zM2 7l10-5 10 5v4H2V7zm2 1.236V9h16v-.764l-8-4-8 4zM12 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 310 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M12 19h2V6l6.394 2.74a1 1 0 0 1 .606.92V19h2v2H1v-2h2V5.65a1 1 0 0 1 .594-.914l7.703-3.424A.5.5 0 0 1 12 1.77V19z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 265 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M3 19V5.7a1 1 0 0 1 .658-.94l9.671-3.516a.5.5 0 0 1 .671.47v4.953l6.316 2.105a1 1 0 0 1 .684.949V19h2v2H1v-2h2zm2 0h7V3.855L5 6.401V19zm14 0v-8.558l-5-1.667V19h5z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 314 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M10 10.111V1l11 6v14H3V7z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 177 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M10 10.111V1l11 6v14H3V7l7 3.111zm2-5.742v8.82l-7-3.111V19h14V8.187L12 4.37z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 228 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M21 20h2v2H1v-2h2V3a1 1 0 0 1 1-1h16a1 1 0 0 1 1 1v17zM8 11v2h3v-2H8zm0-4v2h3V7H8zm0 8v2h3v-2H8zm5 0v2h3v-2h-3zm0-4v2h3v-2h-3zm0-4v2h3V7h-3z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 292 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M21 20h2v2H1v-2h2V3a1 1 0 0 1 1-1h16a1 1 0 0 1 1 1v17zm-2 0V4H5v16h14zM8 11h3v2H8v-2zm0-4h3v2H8V7zm0 8h3v2H8v-2zm5 0h3v2h-3v-2zm0-4h3v2h-3v-2zm0-4h3v2h-3V7z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 308 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M21 19h2v2H1v-2h2V4a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v15h2V9h3a1 1 0 0 1 1 1v9zM7 11v2h4v-2H7zm0-4v2h4V7H7z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 256 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M21 19h2v2H1v-2h2V4a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v15h4v-8h-2V9h3a1 1 0 0 1 1 1v9zM5 5v14h8V5H5zm2 6h4v2H7v-2zm0-4h4v2H7V7z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 275 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M9 19h3v-6.058L8 9.454l-4 3.488V19h3v-4h2v4zm12 2H3a1 1 0 0 1-1-1v-7.513a1 1 0 0 1 .343-.754L6 8.544V4a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1zm-5-10v2h2v-2h-2zm0 4v2h2v-2h-2zm0-8v2h2V7h-2zm-4 0v2h2V7h-2z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 364 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M21 21H3a1 1 0 0 1-1-1v-7.513a1 1 0 0 1 .343-.754L6 8.544V4a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1zM9 19h3v-6.058L8 9.454l-4 3.488V19h3v-4h2v4zm5 0h6V5H8v2.127c.234 0 .469.082.657.247l5 4.359a1 1 0 0 1 .343.754V19zm2-8h2v2h-2v-2zm0 4h2v2h-2v-2zm0-8h2v2h-2V7zm-4 0h2v2h-2V7z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 434 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M2 19V8H1V6h3V4a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2h3v2h-1v11h1v2H1v-2h1zm11 0v-7h-2v7h2zm-5 0v-7H6v7h2zm10 0v-7h-2v7h2zM6 5v1h12V5H6z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 283 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M20 6h3v2h-1v11h1v2H1v-2h1V8H1V6h3V4a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2zm0 2H4v11h3v-7h2v7h2v-7h2v7h2v-7h2v7h3V8zM6 5v1h12V5H6z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 277 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M20 20a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-9H1l10.327-9.388a1 1 0 0 1 1.346 0L23 11h-3v9z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 236 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M19 21H5a1 1 0 0 1-1-1v-9H1l10.327-9.388a1 1 0 0 1 1.346 0L23 11h-3v9a1 1 0 0 1-1 1zM6 19h12V9.157l-6-5.454-6 5.454V19z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 271 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M20 20a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-9H1l10.327-9.388a1 1 0 0 1 1.346 0L23 11h-3v9zM8 15v2h8v-2H8z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 251 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M19 21H5a1 1 0 0 1-1-1v-9H1l10.327-9.388a1 1 0 0 1 1.346 0L23 11h-3v9a1 1 0 0 1-1 1zM6 19h12V9.157l-6-5.454-6 5.454V19zm2-4h8v2H8v-2z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 285 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M20 20a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-9H1l10.327-9.388a1 1 0 0 1 1.346 0L23 11h-3v9zm-9-7v6h2v-6h-2z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 252 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M19 21H5a1 1 0 0 1-1-1v-9H1l10.327-9.388a1 1 0 0 1 1.346 0L23 11h-3v9a1 1 0 0 1-1 1zm-6-2h5V9.157l-6-5.454-6 5.454V19h5v-6h2v6z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 279 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M21 20a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V9.49a1 1 0 0 1 .386-.79l8-6.222a1 1 0 0 1 1.228 0l8 6.222a1 1 0 0 1 .386.79V20zm-10-7v6h2v-6h-2z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 285 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M13 19h6V9.978l-7-5.444-7 5.444V19h6v-6h2v6zm8 1a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V9.49a1 1 0 0 1 .386-.79l8-6.222a1 1 0 0 1 1.228 0l8 6.222a1 1 0 0 1 .386.79V20z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 310 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M21 20a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V9.49a1 1 0 0 1 .386-.79l8-6.222a1 1 0 0 1 1.228 0l8 6.222a1 1 0 0 1 .386.79V20zM7 15v2h10v-2H7z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 284 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M21 20a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V9.49a1 1 0 0 1 .386-.79l8-6.222a1 1 0 0 1 1.228 0l8 6.222a1 1 0 0 1 .386.79V20zm-2-1V9.978l-7-5.444-7 5.444V19h14zM7 15h10v2H7v-2z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 319 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M19 20a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-9H0l10.327-9.388a1 1 0 0 1 1.346 0L22 11h-3v9zm-8-5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 278 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M19 21H5a1 1 0 0 1-1-1v-9H1l10.327-9.388a1 1 0 0 1 1.346 0L23 11h-3v9a1 1 0 0 1-1 1zM6 19h12V9.157l-6-5.454-6 5.454V19zm6-4a2.5 2.5 0 1 1 0-5 2.5 2.5 0 0 1 0 5z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 312 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M20 20a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-9H1l10.327-9.388a1 1 0 0 1 1.346 0L23 11h-3v9zM9 10v6h6v-6H9zm2 2h2v2h-2v-2z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 266 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M19 21H5a1 1 0 0 1-1-1v-9H1l10.327-9.388a1 1 0 0 1 1.346 0L23 11h-3v9a1 1 0 0 1-1 1zM6 19h12V9.157l-6-5.454-6 5.454V19zm3-9h6v6H9v-6zm2 2v2h2v-2h-2z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 300 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M21 20a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V9.49a1 1 0 0 1 .386-.79l8-6.222a1 1 0 0 1 1.228 0l8 6.222a1 1 0 0 1 .386.79V20z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 268 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M20 20a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-9H1l10.327-9.388a1 1 0 0 1 1.346 0L23 11h-3v9zM8.592 13.808l-.991.572 1 1.733.993-.573a3.5 3.5 0 0 0 1.405.811v1.145h2.002V16.35a3.5 3.5 0 0 0 1.405-.81l.992.572L16.4 14.38l-.991-.572a3.504 3.504 0 0 0 0-1.62l.991-.573-1-1.733-.993.573A3.5 3.5 0 0 0 13 9.645V8.5h-2.002v1.144a3.5 3.5 0 0 0-1.405.811l-.992-.573L7.6 11.616l.991.572a3.504 3.504 0 0 0 0 1.62zm3.408.69a1.5 1.5 0 1 1-.002-3.001 1.5 1.5 0 0 1 .002 3z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 602 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M19 21H5a1 1 0 0 1-1-1v-9H1l10.327-9.388a1 1 0 0 1 1.346 0L23 11h-3v9a1 1 0 0 1-1 1zM6 19h12V9.157l-6-5.454-6 5.454V19zm2.591-5.191a3.508 3.508 0 0 1 0-1.622l-.991-.572 1-1.732.991.573a3.495 3.495 0 0 1 1.404-.812V8.5h2v1.144c.532.159 1.01.44 1.404.812l.991-.573 1 1.731-.991.573a3.508 3.508 0 0 1 0 1.622l.991.572-1 1.731-.991-.572a3.495 3.495 0 0 1-1.404.811v1.145h-2V16.35a3.495 3.495 0 0 1-1.404-.811l-.991.572-1-1.73.991-.573zm3.404.688a1.5 1.5 0 1 0 0-2.998 1.5 1.5 0 0 0 0 2.998z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 638 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M20 20a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-9H1l10.327-9.388a1 1 0 0 1 1.346 0L23 11h-3v9zm-8-3l3.359-3.359a2.25 2.25 0 1 0-3.182-3.182l-.177.177-.177-.177a2.25 2.25 0 1 0-3.182 3.182L12 17z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 336 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path fill-rule="nonzero" d="M20 20a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-9H1l10.327-9.388a1 1 0 0 1 1.346 0L23 11h-3v9zm-2-1V9.157l-6-5.454-6 5.454V19h12zm-6-2l-3.359-3.359a2.25 2.25 0 1 1 3.182-3.182l.177.177.177-.177a2.25 2.25 0 1 1 3.182 3.182L12 17z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 390 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M21 20a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V9.49a1 1 0 0 1 .386-.79l8-6.222a1 1 0 0 1 1.228 0l8 6.222a1 1 0 0 1 .386.79V20zm-2-1V9.978l-7-5.444-7 5.444V19h14z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 303 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M21 20a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V9.314a1 1 0 0 1 .38-.785l8-6.311a1 1 0 0 1 1.24 0l8 6.31a1 1 0 0 1 .38.786V20zM7 12a5 5 0 0 0 10 0h-2a3 3 0 0 1-6 0H7z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 307 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M19 19V9.799l-7-5.522-7 5.522V19h14zm2 1a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V9.314a1 1 0 0 1 .38-.785l8-6.311a1 1 0 0 1 1.24 0l8 6.31a1 1 0 0 1 .38.786V20zM7 12h2a3 3 0 0 0 6 0h2a5 5 0 0 1-10 0z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 340 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M20 20a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-9H1l10.327-9.388a1 1 0 0 1 1.346 0L23 11h-3v9zM7.5 13a4.5 4.5 0 1 0 9 0h-2a2.5 2.5 0 1 1-5 0h-2z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 286 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M6 19h12V9.157l-6-5.454-6 5.454V19zm13 2H5a1 1 0 0 1-1-1v-9H1l10.327-9.388a1 1 0 0 1 1.346 0L23 11h-3v9a1 1 0 0 1-1 1zM7.5 13h2a2.5 2.5 0 1 0 5 0h2a4.5 4.5 0 1 1-9 0z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 318 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M20 20a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-9H1l10.327-9.388a1 1 0 0 1 1.346 0L23 11h-3v9zM7 11v2a5 5 0 0 1 5 5h2a7 7 0 0 0-7-7zm0 4v3h3a3 3 0 0 0-3-3z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 297 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M6 19h12V9.157l-6-5.454-6 5.454V19zm13 2H5a1 1 0 0 1-1-1v-9H1l10.327-9.388a1 1 0 0 1 1.346 0L23 11h-3v9a1 1 0 0 1-1 1zM8 10a7 7 0 0 1 7 7h-2a5 5 0 0 0-5-5v-2zm0 4a3 3 0 0 1 3 3H8v-3z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 334 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M21 20h2v2H1v-2h2V3a1 1 0 0 1 1-1h16a1 1 0 0 1 1 1v17zM11 8H9v2h2v2h2v-2h2V8h-2V6h-2v2zm3 12h2v-6H8v6h2v-4h4v4z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 263 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path fill-rule="nonzero" d="M8 20v-6h8v6h3V4H5v16h3zm2 0h4v-4h-4v4zm11 0h2v2H1v-2h2V3a1 1 0 0 1 1-1h16a1 1 0 0 1 1 1v17zM11 8V6h2v2h2v2h-2v2h-2v-2H9V8h2z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 297 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M17 19h2v-8h-6v8h2v-6h2v6zM3 19V4a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v5h2v10h1v2H2v-2h1zm4-8v2h2v-2H7zm0 4v2h2v-2H7zm0-8v2h2V7H7z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 276 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M22 21H2v-2h1V4a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v5h2v10h1v2zm-5-2h2v-8h-6v8h2v-6h2v6zm0-10V5H5v14h6V9h6zM7 11h2v2H7v-2zm0 4h2v2H7v-2zm0-8h2v2H7V7z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 296 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M22 20v2H2v-2h1v-6.758A4.496 4.496 0 0 1 1 9.5c0-.827.224-1.624.633-2.303L4.345 2.5a1 1 0 0 1 .866-.5H18.79a1 1 0 0 1 .866.5l2.702 4.682A4.496 4.496 0 0 1 21 13.242V20h1zM5.789 4L3.356 8.213a2.5 2.5 0 0 0 4.466 2.216c.335-.837 1.52-.837 1.856 0a2.5 2.5 0 0 0 4.644 0c.335-.837 1.52-.837 1.856 0a2.5 2.5 0 1 0 4.457-2.232L18.21 4H5.79z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 486 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M21 13.242V20h1v2H2v-2h1v-6.758A4.496 4.496 0 0 1 1 9.5c0-.827.224-1.624.633-2.303L4.345 2.5a1 1 0 0 1 .866-.5H18.79a1 1 0 0 1 .866.5l2.702 4.682A4.496 4.496 0 0 1 21 13.242zm-2 .73a4.496 4.496 0 0 1-3.75-1.36A4.496 4.496 0 0 1 12 14.001a4.496 4.496 0 0 1-3.25-1.387A4.496 4.496 0 0 1 5 13.973V20h14v-6.027zM5.789 4L3.356 8.213a2.5 2.5 0 0 0 4.466 2.216c.335-.837 1.52-.837 1.856 0a2.5 2.5 0 0 0 4.644 0c.335-.837 1.52-.837 1.856 0a2.5 2.5 0 1 0 4.457-2.232L18.21 4H5.79z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 623 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M21 13v7a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-7H2v-2l1-5h18l1 5v2h-1zM5 13v6h14v-6H5zm1 1h8v3H6v-3zM3 3h18v2H3V3z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 259 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M21 13v7a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-7H2v-2l1-5h18l1 5v2h-1zM5 13v6h14v-6H5zm-.96-2h15.92l-.6-3H4.64l-.6 3zM6 14h8v3H6v-3zM3 3h18v2H3V3z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 291 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M21 11.646V21a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-9.354A3.985 3.985 0 0 1 2 9V3a1 1 0 0 1 1-1h18a1 1 0 0 1 1 1v6c0 1.014-.378 1.94-1 2.646zM14 9a1 1 0 0 1 2 0 2 2 0 1 0 4 0V4H4v5a2 2 0 1 0 4 0 1 1 0 1 1 2 0 2 2 0 1 0 4 0z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 368 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M21 11.646V21a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-9.354A3.985 3.985 0 0 1 2 9V3a1 1 0 0 1 1-1h18a1 1 0 0 1 1 1v6c0 1.014-.378 1.94-1 2.646zm-2 1.228a4.007 4.007 0 0 1-4-1.228A3.99 3.99 0 0 1 12 13a3.99 3.99 0 0 1-3-1.354 3.99 3.99 0 0 1-4 1.228V20h14v-7.126zM14 9a1 1 0 0 1 2 0 2 2 0 1 0 4 0V4H4v5a2 2 0 1 0 4 0 1 1 0 1 1 2 0 2 2 0 1 0 4 0z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 487 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M21 3a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h18zM9.399 8h-2l-3.2 8h2.154l.4-1h3.29l.4 1h2.155L9.399 8zM19 8h-2v2h-1a3 3 0 0 0-.176 5.995L16 16h3V8zm-2 4v2h-1l-.117-.007a1 1 0 0 1 0-1.986L16 12h1zm-8.601-1.115L9.244 13H7.552l.847-2.115z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 411 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path fill-rule="nonzero" d="M21 3a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h18zm-1 2H4v14h16V5zM9.399 8l3.199 8h-2.155l-.4-1h-3.29l-.4 1H4.199l3.2-8h2zM19 8v8h-3a3 3 0 0 1 0-6h.999L17 8h2zm-2 4h-1a1 1 0 0 0-.117 1.993L16 14h1v-2zm-8.601-1.115L7.552 13h1.692l-.845-2.115z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 435 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M3 13h18v8.002c0 .551-.445.998-.993.998H3.993A.995.995 0 0 1 3 21.002V13zM3 2.998C3 2.447 3.445 2 3.993 2h16.014c.548 0 .993.446.993.998V11H3V2.998zM9 5v2h6V5H9zm0 11v2h6v-2H9z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 328 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M3 2.992C3 2.444 3.445 2 3.993 2h16.014a1 1 0 0 1 .993.992v18.016a.993.993 0 0 1-.993.992H3.993A1 1 0 0 1 3 21.008V2.992zM19 11V4H5v7h14zm0 2H5v7h14v-7zM9 6h6v2H9V6zm0 9h6v2H9v-2z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 331 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M3 10h18v10.004c0 .55-.445.996-.993.996H3.993A.994.994 0 0 1 3 20.004V10zm6 2v2h6v-2H9zM2 4c0-.552.455-1 .992-1h18.016c.548 0 .992.444.992 1v4H2V4z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 299 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M3 10H2V4.003C2 3.449 2.455 3 2.992 3h18.016A.99.99 0 0 1 22 4.003V10h-1v10.001a.996.996 0 0 1-.993.999H3.993A.996.996 0 0 1 3 20.001V10zm16 0H5v9h14v-9zM4 5v3h16V5H4zm5 7h6v2H9v-2z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 333 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm8-10a8 8 0 1 0-3.968 6.911l-1.008-1.727A6 6 0 1 1 18 12v1a1 1 0 0 1-2 0V9h-1.354a4 4 0 1 0 .066 5.94A3 3 0 0 0 20 13v-1zm-8-2a2 2 0 1 1 0 4 2 2 0 0 1 0-4z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 380 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M20 12a8 8 0 1 0-3.562 6.657l1.11 1.664A9.953 9.953 0 0 1 12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10v1.5a3.5 3.5 0 0 1-6.396 1.966A5 5 0 1 1 15 8H17v5.5a1.5 1.5 0 0 0 3 0V12zm-8-3a3 3 0 1 0 0 6 3 3 0 0 0 0-6z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 374 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M20.997 2.992L21 21.008a1 1 0 0 1-.993.992H3.993A.993.993 0 0 1 3 21.008V2.992A1 1 0 0 1 3.993 2h16.01c.549 0 .994.444.994.992zM9 13V9a1 1 0 1 1 2 0v4a1 1 0 0 0 2 0V9a3 3 0 0 0-6 0v4a5 5 0 0 0 10 0V8h-2v5a3 3 0 0 1-6 0z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 371 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M14 13.5V8a4 4 0 1 0-8 0v5.5a6.5 6.5 0 1 0 13 0V4h2v9.5a8.5 8.5 0 1 1-17 0V8a6 6 0 1 1 12 0v5.5a3.5 3.5 0 0 1-7 0V8h2v5.5a1.5 1.5 0 0 0 3 0z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 292 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M17 15.245v6.872a.5.5 0 0 1-.757.429L12 20l-4.243 2.546a.5.5 0 0 1-.757-.43v-6.87a8 8 0 1 1 10 0zM12 15a6 6 0 1 0 0-12 6 6 0 0 0 0 12zm0-2a4 4 0 1 1 0-8 4 4 0 0 1 0 8z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 319 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M17 15.245v6.872a.5.5 0 0 1-.757.429L12 20l-4.243 2.546a.5.5 0 0 1-.757-.43v-6.87a8 8 0 1 1 10 0zm-8 1.173v3.05l3-1.8 3 1.8v-3.05A7.978 7.978 0 0 1 12 17a7.978 7.978 0 0 1-3-.582zM12 15a6 6 0 1 0 0-12 6 6 0 0 0 0 12z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 368 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M2 13h6v8H2v-8zM9 3h6v18H9V3zm7 5h6v13h-6V8z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 196 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M2 13h6v8H2v-8zm14-5h6v13h-6V8zM9 3h6v18H9V3zM4 15v4h2v-4H4zm7-10v14h2V5h-2zm7 5v9h2v-9h-2z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 243 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M3 3h18a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zm4 10v4h2v-4H7zm4-6v10h2V7h-2zm4 3v7h2v-7h-2z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 268 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M3 3h18a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zm1 2v14h16V5H4zm3 8h2v4H7v-4zm4-6h2v10h-2V7zm4 3h2v7h-2v-7z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 282 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M3 12h4v9H3v-9zm14-4h4v13h-4V8zm-7-6h4v19h-4V2z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 199 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M2 12h2v9H2v-9zm3 2h2v7H5v-7zm11-6h2v13h-2V8zm3 2h2v11h-2V10zM9 2h2v19H9V2zm3 2h2v17h-2V4z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 242 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M2 12h2v9H2v-9zm3 2h2v7H5v-7zm11-6h2v13h-2V8zm3 2h2v11h-2V10zM9 2h2v19H9V2zm3 2h2v17h-2V4z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 242 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M12 3v4H3V3h9zm4 14v4H3v-4h13zm6-7v4H3v-4h19z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 197 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M12 3v2H3V3h9zm4 16v2H3v-2h13zm6-8v2H3v-2h19z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 197 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M3 12h2v9H3v-9zm16-4h2v13h-2V8zm-8-6h2v19h-2V2z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 199 B

+6
Просмотреть файл
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M5 2h14a1 1 0 0 1 1 1v19.143a.5.5 0 0 1-.766.424L12 18.03l-7.234 4.536A.5.5 0 0 1 4 22.143V3a1 1 0 0 1 1-1zm3 7v2h8V9H8z"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 272 B

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше