UNPKG

react-url-table

Version:

Smart and flexible table component built with React and for React projects. based on React16 hooks and mobx-react-lite

199 lines (170 loc) 6.08 kB
:root { --accentColor: #15a5fb; --backGroundColor: #1d324b; --backGroundDarkColor: #0e2440; --cellBorderColor: #263a55; --thTextColor: #9de4ff; --sortedThBorder: 2px solid var(--thTextColor); --baseFont: Helvetica-light, Helvetica Neue, Helvetica, Arial, sans-serif; --fontColor: #617da1; --baseRowHeight: 33px; font-family: var(--baseFont); color: var(--fontColor); } .url_table { width: 100%; background-color: var(--backGroundColor); border-collapse: collapse; border-radius: 5px; overflow: hidden; } .url_table thead { background-color: var(--accentColor); } .url_table__header { outline: none; cursor: pointer; color: var(--thTextColor); text-align: left; } .url_table__header--sorted-desc { box-shadow: inset 0 -2px 0; } .url_table__header--sorted-asc { box-shadow: inset 0 2px 0; } .url_table tbody tr:not(.url_table__row--selected):hover { background-color: var(--cellBorderColor); } .url_table__row--selected { background-color: var(--thTextColor); color: black; } .url_table__row__cell, .url_table__header, .url_table__progress td, .url_table__empty td { border: 1px solid var(--cellBorderColor); padding: 7px 11px; } .url_table__progress td, .url_table__empty td { text-align: center; } /* pagination */ .url_table__pagination li { display: inline-block; text-align: center; margin-left: 5px; min-width: 22px; height: 22px; cursor: pointer; user-select: none; color: var(--backGroundDarkColor); } li.url_table__pagination__page:hover, li.url_table__pagination__page--disabled { color: var(--fontColor); } .url_table__pagination a { outline: none; } .url_table__pagination__page--selected { border-bottom: 1px solid var(--accentColor); color: var(--accentColor); } /* controls panel */ .url_table__controls_panel { display: flex; width: 100%; margin-bottom: 10px; } /* sorting panel */ .url_table__sorting_panel { display: flex; min-height: 25px; } .url_table__sorting_panel__badge { font-size: 12px; margin-left: 10px; padding-left: 5px; display: flex; align-items: center; border: 1px solid var(--accentColor); color: var(--thTextColor); border-radius: 25px; } .url_table__sorting_panel__badge__close { font-size: 10px; display: inline-flex; align-items: center; justify-content: center; margin-left: 7px; width: 25px; height: 100%; border: 1px solid var(--accentColor); position: relative; left: 1px; border-radius: 50%; cursor: pointer; } .url_table__sorting_panel__badge--asc:before, .url_table__sorting_panel__badge--desc:before { content: ""; -webkit-mask-image: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 129 129' xmlns:xlink='http://www.w3.org/1999/xlink' enable-background='new 0 0 129 129'%3E%3Cg%3E%3Cpath d='m121.4,61.6l-54-54c-0.7-0.7-1.8-1.2-2.9-1.2s-2.2,0.5-2.9,1.2l-54,54c-1.6,1.6-1.6,4.2 0,5.8 0.8,0.8 1.8,1.2 2.9,1.2s2.1-0.4 2.9-1.2l47-47v98.1c0,2.3 1.8,4.1 4.1,4.1s4.1-1.8 4.1-4.1v-98.1l47,47c1.6,1.6 4.2,1.6 5.8,0s1.5-4.2 1.42109e-14-5.8z'/%3E%3C/g%3E%3C/svg%3E%0A"); mask-image: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 129 129' xmlns:xlink='http://www.w3.org/1999/xlink' enable-background='new 0 0 129 129'%3E%3Cg%3E%3Cpath d='m121.4,61.6l-54-54c-0.7-0.7-1.8-1.2-2.9-1.2s-2.2,0.5-2.9,1.2l-54,54c-1.6,1.6-1.6,4.2 0,5.8 0.8,0.8 1.8,1.2 2.9,1.2s2.1-0.4 2.9-1.2l47-47v98.1c0,2.3 1.8,4.1 4.1,4.1s4.1-1.8 4.1-4.1v-98.1l47,47c1.6,1.6 4.2,1.6 5.8,0s1.5-4.2 1.42109e-14-5.8z'/%3E%3C/g%3E%3C/svg%3E%0A"); background-color: var(--thTextColor); height: 15px; width: 15px; background-repeat: no-repeat; margin-right: 5px; } .url_table__sorting_panel__badge--desc:before { transform: rotate(180deg); } /* error */ .url_table__error { color: crimson; background-color: lightpink; height: var(--baseRowHeight); display: flex; align-items: center; justify-content: center; } /* search */ .url_table__search { flex-basis: 150px; margin-left: auto; } .url_table__search__input { background-color: transparent; border: none; border-bottom: 1px solid var(--accentColor); padding: 5px; font-size: 14px; outline: none; text-indent: 15px; background-repeat: no-repeat; background-size: 1em; background-position: center left; background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNTYuOTY2IDU2Ljk2NiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTYuOTY2IDU2Ljk2NjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxwYXRoIGZpbGw9IiMxNWE1ZmIiIGQ9Ik01NS4xNDYsNTEuODg3TDQxLjU4OCwzNy43ODZjMy40ODYtNC4xNDQsNS4zOTYtOS4zNTgsNS4zOTYtMTQuNzg2YzAtMTIuNjgyLTEwLjMxOC0yMy0yMy0yM3MtMjMsMTAuMzE4LTIzLDIzczEwLjMxOCwyMywyMywyM2M0Ljc2MSwwLDkuMjk4LTEuNDM2LDEzLjE3Ny00LjE2MmwxMy42NjEsMTQuMjA4YzAuNTcxLDAuNTkzLDEuMzM5LDAuOTIsMi4xNjIsMC45MmMwLjc3OSwwLDEuNTE4LTAuMjk3LDIuMDc5LTAuODM3QzU2LjI1NSw1NC45ODIsNTYuMjkzLDUzLjA4LDU1LjE0Niw1MS44ODd6IE0yMy45ODQsNmM5LjM3NCwwLDE3LDcuNjI2LDE3LDE3cy03LjYyNiwxNy0xNywxN3MtMTctNy42MjYtMTctMTdTMTQuNjEsNiwyMy45ODQsNnoiLz48L3N2Zz4=); } .url_table__search__input, .url_table__search__input::placeholder { color: var(--thTextColor); } /* Edit mode */ .url_table__row__cell--editable { position: relative; outline: 0; } .url_table__row__cell--focus { box-shadow: inset 0 0 0 1px var(--accentColor); } .url_table__row__cell--edit:before { position: absolute; content: ""; border: 1px dashed var(--accentColor); top: 1px; left: 1px; width: calc(100% - 4px); height: calc(100% - 4px); } .url_table__row--selected .url_table__row__cell--edit:before { border: 1px dashed black; }