diff options
Diffstat (limited to 'asset/css/search-bar.less')
-rw-r--r-- | asset/css/search-bar.less | 232 |
1 files changed, 232 insertions, 0 deletions
diff --git a/asset/css/search-bar.less b/asset/css/search-bar.less new file mode 100644 index 0000000..6ad1aec --- /dev/null +++ b/asset/css/search-bar.less @@ -0,0 +1,232 @@ +// Style +.search-bar { + .rounded-corners(.25em); + background: var(--searchbar-bg, @searchbar-bg); + + // Reset all input styles + input, [type="button"] { + .appearance(none); + border: none; + background: none; + } + + // Submit button styles + input[type=submit], + button[type=submit], + button:not([type]) { + background: var(--primary-button-bg, @primary-button-bg); + color: var(--primary-button-color, @primary-button-color); + border-top-right-radius: .25em; + border-bottom-right-radius: .25em; + } + + // General input styles + input:focus { + outline-offset: -1px; + } + + // Hide the submit button, it must exist, but shouldn't be shown to the user + input[type=submit][value="hidden"] { + display: none; + } + + // Left-most search dropdown style + button.search-options { + i.icon:before { + font-size: 1.2em; + margin-right: 0; + color: var(--control-color, @control-color); + } + + &:disabled { + i.icon:before { + color: var(--control-disabled-color, @control-disabled-color); + } + } + } + + // Term styles + .filter-condition { + button { + border-radius: .4em 0 0 .4em; + background-color: var(--search-condition-remove-bg, @search-condition-remove-bg); + color: var(--search-condition-remove-color, @search-condition-remove-color); + + &:after { + content: ""; + position: absolute; + width: .4em; + height: 100%; + right: 0; + top: 0; + + background-color: var(--searchbar-bg, @searchbar-bg); + border: .2em solid var(--search-condition-remove-bg, @search-condition-remove-bg); + border-width: 0 0 0 .2em; + border-top-left-radius: .4em; + border-bottom-left-radius: .4em; + } + } + + input { + background-color: var(--search-term-bg, @search-term-bg); + color: var(--search-term-color, @search-term-color); + } + } + + .terms > .filter-condition:first-child button { + border-radius: 0 .4em .4em 0; + + &:before { + content: ""; + position: absolute; + width: .4em; + height: 100%; + left: 0; + top: 0; + + background-color: var(--searchbar-bg, @searchbar-bg); + border: .2em solid var(--search-condition-remove-bg, @search-condition-remove-bg); + border-width: 0 .2em 0 0; + border-top-right-radius: .4em; + border-bottom-right-radius: .4em; + } + + &:after { + content: none; + } + } + + .logical_operator, + .grouping_operator_open, + .grouping_operator_close { + input { + .rounded-corners(); + background-color: var(--search-logical-operator-bg, @search-logical-operator-bg); + color: var(--search-logical-operator-color, @search-logical-operator-color); + } + } + + .operator, + .logical_operator, + .grouping_operator_open, + .grouping_operator_close { + input { + text-align: center; + } + } + + .column input { + .rounded-corners(.4em); + } + .column:not(:last-of-type), + .column.last-term { + input { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + } + + .operator:last-of-type:not(.last-term) input { + .rounded-corners(.4em); + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + + .value input { + .rounded-corners(.4em); + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + + .highlighted input { + background-color: var(--search-term-highlighted-bg, @search-term-highlighted-bg); + color: var(--search-term-highlighted-color, @search-term-highlighted-color); + } + + ul.comma-separated { + display: inline; + padding: 0; + + list-style-type: none; + + li { + display: inline; + + &:not(:first-of-type):before { + display: inline; + content: ', '; + } + } + } +} + +// Layout +.search-bar { + height: 2em; + display: flex; + position: relative; // Required for the suggestions + + button.search-options { + line-height: 1em; + } + + .filter-input-area { + padding: 2/12em; // 2 (px) desired / default font size (px) + } + + .terms { + .filter-chain, + .filter-condition { + display: inline; + } + + .filter-condition { + position: relative; + + button { + display: none; + z-index: 1; + width: ~"calc(2em + 2px)"; + padding: .15em .6em .15em .4em; + position: absolute; + left: ~"calc(-2em - 2px)"; // That's min-width + margin-right of an operator + line-height: 16/12; // 16 (px) desired / default font size (px) + + i:before { + margin-right: 0; + } + } + + &:not(._hover_delay):hover button { + display: inline; + } + } + + > .filter-condition:first-child button { + padding: .15em .4em .15em .6em; + left: auto; + right: ~"calc(-2em - 1px)"; // That's min-width + margin-left of an operator + } + + label { + &.logical_operator, + &.grouping_operator_open, + &.grouping_operator_close { + margin-left: 1px; // adds up to 2px with the previous term + margin-right: 2px; + } + } + } + + &.disabled { + .terms .filter-condition:hover button { + display: none; + } + } + + .search-suggestions { + // 2 (px) desired / default font-size to match .filter-input outline-offset (-1px) + outline-width (3px) + margin-top: 2/12em; + } +} |