UNPKG

@inkline/inkline

Version:

Inkline is the intuitive UI Components library that gives you a developer-friendly foundation for building high-quality, accessible, and customizable Vue.js 3 Design Systems.

526 lines (524 loc) 24.6 kB
/** * Breakpoint mixins */ .select-wrapper { display: block; position: relative; } .select-wrapper .select { position: absolute; z-index: var(--select--z-index, 2000); word-wrap: break-word; width: max-content; top: 0; left: 0; text-align: left; list-style: none; line-height: var(--select-line-height); display: block; white-space: normal; width: 100%; min-width: var(--select--min-width, 240px); max-width: var(--select--max-width, 90vw); color: var(--select--color); font-size: var(--select--font-size, var(--font-size)); box-shadow: var(--select--box-shadow, var(--select--box-shadow-x-offset, var(--box-shadow-offset-x)) var(--select--box-shadow-y-offset, var(--box-shadow-offset-y)) var(--select--box-shadow-blur-radius, var(--box-shadow-blur-radius)) var(--select--box-shadow-spread-radius, var(--box-shadow-spread-radius)) var(--select--box-shadow-color, var(--box-shadow-color))); } .select-wrapper .select:focus:hover { outline-width: 0; } .select-wrapper .select[data-popup-placement^=top] { transform-origin: center bottom; } .select-wrapper .select[data-popup-placement^=bottom] { transform-origin: center top; } .select-wrapper .select[data-popup-placement^=right] { transform-origin: left center; } .select-wrapper .select[data-popup-placement^=left] { transform-origin: right center; } .select-wrapper .select > .arrow { position: absolute; } .select-wrapper .select > .arrow, .select-wrapper .select > .arrow::after { display: block; width: 0; height: 0; border-color: transparent; border-style: solid; position: absolute; } .select-wrapper .select > .arrow::after { content: ""; } .select-wrapper .select[data-popup-placement^=top] > .arrow { border-bottom-width: 0; } .select-wrapper .select[data-popup-placement^=top] > .arrow::after { border-bottom-width: 0; } .select-wrapper .select[data-popup-placement^=bottom] > .arrow { border-top-width: 0; } .select-wrapper .select[data-popup-placement^=bottom] > .arrow::after { border-top-width: 0; } .select-wrapper .select[data-popup-placement^=right] > .arrow { border-left-width: 0; } .select-wrapper .select[data-popup-placement^=right] > .arrow::after { border-left-width: 0; } .select-wrapper .select[data-popup-placement^=left] > .arrow { border-right-width: 0; } .select-wrapper .select[data-popup-placement^=left] > .arrow::after { border-right-width: 0; } .select-wrapper .select > .arrow { width: var(--select--arrow--size, 6px); height: var(--select--arrow--size, 6px); } .select-wrapper .select > .arrow, .select-wrapper .select > .arrow::after { border-width: var(--select--arrow--size, 6px); } .select-wrapper .select[data-popup-placement^=top] > .arrow::after, .select-wrapper .select[data-popup-placement^=bottom] > .arrow::after { margin-left: calc(var(--select--arrow--size, 6px) * -1); } .select-wrapper .select[data-popup-placement^=left] > .arrow::after, .select-wrapper .select[data-popup-placement^=right] > .arrow::after { margin-top: calc(var(--select--arrow--size, 6px) * -1); } .select-wrapper .select[data-popup-placement^=top] > .arrow { bottom: calc(var(--select--arrow--size, 6px) * -1); } .select-wrapper .select[data-popup-placement^=top] > .arrow::after { bottom: 1px; } .select-wrapper .select[data-popup-placement^=bottom] > .arrow { top: calc(var(--select--arrow--size, 6px) * -1); } .select-wrapper .select[data-popup-placement^=bottom] > .arrow::after { top: 1px; } .select-wrapper .select[data-popup-placement^=left] > .arrow { right: calc(var(--select--arrow--size, 6px) * -1); } .select-wrapper .select[data-popup-placement^=left] > .arrow::after { right: 1px; } .select-wrapper .select[data-popup-placement^=right] > .arrow { left: calc(var(--select--arrow--size, 6px) * -1); } .select-wrapper .select[data-popup-placement^=right] > .arrow::after { left: 1px; } .select-wrapper .select > .select-header { border-style: var(--select--header--border-style, var(--select--header--border-top-style, var(--select--border-top-style, var(--border-top-style))) var(--select--header--border-right-style, var(--select--border-right-style, var(--border-right-style))) var(--select--header--border-bottom-style, var(--select--border-bottom-style, var(--border-bottom-style))) var(--select--header--border-left-style, var(--select--border-left-style, var(--border-left-style)))); border-width: var(--select--header--border-width, var(--select--header--border-top-width, var(--select--border-top-width, var(--border-top-width))) var(--select--header--border-right-width, var(--select--border-right-width, var(--border-right-width))) var(--select--header--border-bottom-width, 0) var(--select--header--border-left-width, var(--select--border-left-width, var(--border-left-width)))); border-color: var(--select--header--border-color, var(--select--header--border-top-color, var(--select--border-top-color, var(--border-top-color))) var(--select--header--border-right-color, var(--select--border-right-color, var(--border-right-color))) var(--select--header--border-bottom-color, var(--select--border-bottom-color, var(--border-bottom-color))) var(--select--header--border-left-color, var(--select--border-left-color, var(--border-left-color)))); background-color: var(--select--header--background, var(--select--background)); padding: var(--select--header--padding, var(--select--header--padding-top, var(--select--padding-top, var(--padding-top))) var(--select--header--padding-right, var(--select--padding-right, var(--padding-right))) var(--select--header--padding-bottom, var(--select--padding-bottom, var(--padding-bottom))) var(--select--header--padding-left, var(--select--padding-left, var(--padding-left)))); } .select-wrapper .select > .select-body { overflow: auto; border-style: var(--select--body--border-style, var(--select--body--border-top-style, var(--select--border-top-style, var(--border-top-style))) var(--select--body--border-right-style, var(--select--border-right-style, var(--border-right-style))) var(--select--body--border-bottom-style, var(--select--border-bottom-style, var(--border-bottom-style))) var(--select--body--border-left-style, var(--select--border-left-style, var(--border-left-style)))); border-width: var(--select--body--border-width, var(--select--body--border-top-width, var(--select--border-top-width, var(--border-top-width))) var(--select--body--border-right-width, var(--select--border-right-width, var(--border-right-width))) var(--select--body--border-bottom-width, var(--select--border-bottom-width, var(--border-bottom-width))) var(--select--body--border-left-width, var(--select--border-left-width, var(--border-left-width)))); border-color: var(--select--body--border-color, var(--select--body--border-top-color, var(--select--border-top-color, var(--border-top-color))) var(--select--body--border-right-color, var(--select--border-right-color, var(--border-right-color))) var(--select--body--border-bottom-color, var(--select--border-bottom-color, var(--border-bottom-color))) var(--select--body--border-left-color, var(--select--border-left-color, var(--border-left-color)))); background-color: var(--select--body--background, var(--select--background)); padding: var(--select--body--padding, var(--select--body--padding-top, var(--select--padding-top, var(--padding-top))) var(--select--body--padding-right, var(--select--padding-right, var(--padding-right))) var(--select--body--padding-bottom, var(--select--padding-bottom, var(--padding-bottom))) var(--select--body--padding-left, var(--select--padding-left, var(--padding-left)))); max-height: var(--select--max-height, 300px); } .select-wrapper .select > .select-body .select-divider { background-color: var(--select--divider--border-color, var(--select--border-top, var(--border-top-color))); } .select-wrapper .select > .select-body .select-no-results { text-align: center; } .select-wrapper .select > .select-footer { border-style: var(--select--footer--border-style, var(--select--footer--border-top-style, var(--select--border-top-style, var(--border-top-style))) var(--select--footer--border-right-style, var(--select--border-right-style, var(--border-right-style))) var(--select--footer--border-bottom-style, var(--select--border-bottom-style, var(--border-bottom-style))) var(--select--footer--border-left-style, var(--select--border-left-style, var(--border-left-style)))); border-width: var(--select--footer--border-width, var(--select--footer--border-top-width, 0) var(--select--footer--border-right-width, var(--select--border-right-width, var(--border-right-width))) var(--select--footer--border-bottom-width, var(--select--border-bottom-width, var(--border-bottom-width))) var(--select--footer--border-left-width, var(--select--border-left-width, var(--border-left-width)))); border-color: var(--select--footer--border-color, var(--select--footer--border-top-color, var(--select--border-top-color, var(--border-top-color))) var(--select--footer--border-right-color, var(--select--border-right-color, var(--border-right-color))) var(--select--footer--border-bottom-color, var(--select--border-bottom-color, var(--border-bottom-color))) var(--select--footer--border-left-color, var(--select--border-left-color, var(--border-left-color)))); background-color: var(--select--footer--background, var(--select--background)); padding: var(--select--footer--padding, var(--select--footer--padding-top, var(--select--padding-top, var(--padding-top))) var(--select--footer--padding-right, var(--select--padding-right, var(--padding-right))) var(--select--footer--padding-bottom, var(--select--padding-bottom, var(--padding-bottom))) var(--select--footer--padding-left, var(--select--padding-left, var(--padding-left)))); } .select-wrapper .select > div:first-of-type { border-top-left-radius: var(--select--border-top-left-radius, var(--border-top-left-radius)); border-top-right-radius: var(--select--border-top-right-radius, var(--border-top-right-radius)); } .select-wrapper .select > div:last-of-type { border-bottom-left-radius: var(--select--border-bottom-left-radius, var(--border-bottom-left-radius)); border-bottom-right-radius: var(--select--border-bottom-right-radius, var(--border-bottom-right-radius)); } .select-wrapper .select[data-popup-placement^=top] > .arrow { border-top-color: var(--select--border-bottom-color, var(--border-bottom-color)); } .select-wrapper .select[data-popup-placement^=top] > .arrow::after { border-top-color: var(--select--background); } .select-wrapper .select[data-popup-placement^=right] > .arrow { border-right-color: var(--select--border-left-color, var(--border-left-color)); } .select-wrapper .select[data-popup-placement^=right] > .arrow::after { border-right-color: var(--select--background); } .select-wrapper .select[data-popup-placement^=bottom] > .arrow { border-bottom-color: var(--select--border-top-color, var(--border-top-color)); } .select-wrapper .select[data-popup-placement^=bottom] > .arrow::after { border-bottom-color: var(--select--background); } .select-wrapper .select[data-popup-placement^=left] > .arrow { border-left-color: var(--select--border-right-color, var(--border-right-color)); } .select-wrapper .select[data-popup-placement^=left] > .arrow::after { border-left-color: var(--select--background); } .select-wrapper.-error > .input-wrapper .input { border-color: var(--input--error--border-color, var(--color-danger)); } .select-wrapper .input-wrapper .input-icon { margin-right: var(--margin-left); } .select-wrapper .input-wrapper .input-suffix > .select-caret { cursor: pointer; mask-image: url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="28" viewBox="0 0 16 28"><title>caret-down</title><path d="M16 11c0 0.266-0.109 0.516-0.297 0.703l-7 7c-0.187 0.187-0.438 0.297-0.703 0.297s-0.516-0.109-0.703-0.297l-7-7c-0.187-0.187-0.297-0.438-0.297-0.703 0-0.547 0.453-1 1-1h14c0.547 0 1 0.453 1 1z"></path></svg>'); -webkit-mask-image: url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="28" viewBox="0 0 16 28"><title>caret-down</title><path d="M16 11c0 0.266-0.109 0.516-0.297 0.703l-7 7c-0.187 0.187-0.438 0.297-0.703 0.297s-0.516-0.109-0.703-0.297l-7-7c-0.187-0.187-0.297-0.438-0.297-0.703 0-0.547 0.453-1 1-1h14c0.547 0 1 0.453 1 1z"></path></svg>'); mask-position: center center; -webkit-mask-position: center center; mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat; background-color: var(--select--color); height: var(--select--font-size, var(--font-size)); width: var(--select--font-size, var(--font-size)); mask-size: var(--select--font-size, var(--font-size)) var(--font-size); margin-left: var(--select--caret--margin-left, var(--select--margin-left)); } /** * Color variants */ .select-wrapper.-light { --select--background: var(--select--light--background, var(--color-white)); --select--border-top-color: var( --select--light--border-top-color, var(--color-light-shade-50) ); --select--border-right-color: var( --select--light--border-right-color, var(--color-light-shade-50) ); --select--border-bottom-color: var( --select--light--border-bottom-color, var(--color-light-shade-50) ); --select--border-left-color: var( --select--light--border-left-color, var(--color-light-shade-50) ); --select--color: var(--select--light--color, var(--contrast-text-color-white)); --select--option--hover--background: var( --select--light--option--hover--background, var(--color-gray-50) ); --select--option--disabled--background: var( --select--light--option--disabled--background, transparent ); --select--option--disabled--color: var( --select--light--option--disabled--color, var(--text-color-weaker) ); --select--header--background: var( --select--light--header--background, var(--color-gray-50) ); --select--footer--background: var( --select--light--footer--background, var(--color-gray-50) ); } .select-wrapper.-dark { --select--background: var(--select--dark--background, var(--color-dark)); --select--border-top-color: var( --select--dark--border-top-color, var(--color-dark-tint-50) ); --select--border-right-color: var( --select--dark--border-right-color, var(--color-dark-tint-50) ); --select--border-bottom-color: var( --select--dark--border-bottom-color, var(--color-dark-tint-50) ); --select--border-left-color: var( --select--dark--border-left-color, var(--color-dark-tint-50) ); --select--color: var(--select--dark--color, var(--contrast-text-color-dark)); --select--option--hover--background: var( --select--dark--option--hover--background, var(--color-dark-tint-50) ); --select--option--disabled--background: var( --select--dark--option--disabled--background, transparent ); --select--option--disabled--color: var( --select--dark--option--disabled--color, var(--text-color-weaker) ); --select--header--background: var( --select--dark--header--background, var(--color-dark-tint-50) ); --select--footer--background: var( --select--dark--footer--background, var(--color-dark-tint-50) ); } /** * Size variants */ .select-wrapper.-sm { --select--border-top-left-radius: var( --select--sm--border-top-left-radius, calc(var(--border-top-left-radius) * var(--size-multiplier-sm)) ); --select--border-top-right-radius: var( --select--sm--border-top-right-radius, calc(var(--border-top-right-radius) * var(--size-multiplier-sm)) ); --select--border-bottom-right-radius: var( --select--sm--border-bottom-right-radius, calc(var(--border-bottom-right-radius) * var(--size-multiplier-sm)) ); --select--border-bottom-left-radius: var( --select--sm--border-bottom-left-radius, calc(var(--border-bottom-left-radius) * var(--size-multiplier-sm)) ); --select--font-size: var( --select--sm--font-size, calc(var(--font-size) * var(--size-multiplier-sm)) ); --select--margin-top: var( --select--sm--margin-top, calc(calc(var(--margin-top) / 2) * var(--size-multiplier-sm)) ); --select--margin-right: var( --select--sm--margin-right, calc(calc(var(--margin-right) / 2) * var(--size-multiplier-sm)) ); --select--margin-bottom: var( --select--sm--margin-bottom, calc(calc(var(--margin-bottom) / 2) * var(--size-multiplier-sm)) ); --select--margin-left: var( --select--sm--margin-left, calc(calc(var(--margin-left) / 2) * var(--size-multiplier-sm)) ); --select--padding-top: var( --select--sm--padding-top, calc(var(--padding-top) * var(--size-multiplier-sm)) ); --select--padding-right: var( --select--sm--padding-right, calc(var(--padding-right) * var(--size-multiplier-sm)) ); --select--padding-bottom: var( --select--sm--padding-bottom, calc(var(--padding-bottom) * var(--size-multiplier-sm)) ); --select--padding-left: var( --select--sm--padding-left, calc(var(--padding-left) * var(--size-multiplier-sm)) ); --select--option--padding-top: var( --select--sm--option--padding-top, calc(calc(var(--select--padding-top) / 2) * var(--size-multiplier-sm)) ); --select--option--padding-bottom: var( --select--sm--option--padding-bottom, calc(calc(var(--select--padding-bottom) / 2) * var(--size-multiplier-sm)) ); --select--header--padding-top: var( --select--sm--header--padding-top, calc(calc(var(--select--padding-top) * 3 / 4) * var(--size-multiplier-sm)) ); --select--header--padding-bottom: var( --select--sm--header--padding-bottom, calc(calc(var(--select--padding-bottom) * 3 / 4) * var(--size-multiplier-sm)) ); --select--body--padding-right: var(--select--sm--body--padding-right, 0); --select--body--padding-left: var(--select--sm--body--padding-left, 0); --select--footer--padding-top: var( --select--sm--footer--padding-top, calc(calc(var(--select--padding-top) * 3 / 4) * var(--size-multiplier-sm)) ); --select--footer--padding-bottom: var( --select--sm--footer--padding-bottom, calc(calc(var(--select--padding-bottom) * 3 / 4) * var(--size-multiplier-sm)) ); } .select-wrapper.-md { --select--border-top-left-radius: var( --select--md--border-top-left-radius, calc(var(--border-top-left-radius) * var(--size-multiplier-md)) ); --select--border-top-right-radius: var( --select--md--border-top-right-radius, calc(var(--border-top-right-radius) * var(--size-multiplier-md)) ); --select--border-bottom-right-radius: var( --select--md--border-bottom-right-radius, calc(var(--border-bottom-right-radius) * var(--size-multiplier-md)) ); --select--border-bottom-left-radius: var( --select--md--border-bottom-left-radius, calc(var(--border-bottom-left-radius) * var(--size-multiplier-md)) ); --select--font-size: var( --select--md--font-size, calc(var(--font-size) * var(--size-multiplier-md)) ); --select--margin-top: var( --select--md--margin-top, calc(calc(var(--margin-top) / 2) * var(--size-multiplier-md)) ); --select--margin-right: var( --select--md--margin-right, calc(calc(var(--margin-right) / 2) * var(--size-multiplier-md)) ); --select--margin-bottom: var( --select--md--margin-bottom, calc(calc(var(--margin-bottom) / 2) * var(--size-multiplier-md)) ); --select--margin-left: var( --select--md--margin-left, calc(calc(var(--margin-left) / 2) * var(--size-multiplier-md)) ); --select--padding-top: var( --select--md--padding-top, calc(var(--padding-top) * var(--size-multiplier-md)) ); --select--padding-right: var( --select--md--padding-right, calc(var(--padding-right) * var(--size-multiplier-md)) ); --select--padding-bottom: var( --select--md--padding-bottom, calc(var(--padding-bottom) * var(--size-multiplier-md)) ); --select--padding-left: var( --select--md--padding-left, calc(var(--padding-left) * var(--size-multiplier-md)) ); --select--option--padding-top: var( --select--md--option--padding-top, calc(calc(var(--select--padding-top) / 2) * var(--size-multiplier-md)) ); --select--option--padding-bottom: var( --select--md--option--padding-bottom, calc(calc(var(--select--padding-bottom) / 2) * var(--size-multiplier-md)) ); --select--header--padding-top: var( --select--md--header--padding-top, calc(calc(var(--select--padding-top) * 3 / 4) * var(--size-multiplier-md)) ); --select--header--padding-bottom: var( --select--md--header--padding-bottom, calc(calc(var(--select--padding-bottom) * 3 / 4) * var(--size-multiplier-md)) ); --select--body--padding-right: var(--select--md--body--padding-right, 0); --select--body--padding-left: var(--select--md--body--padding-left, 0); --select--footer--padding-top: var( --select--md--footer--padding-top, calc(calc(var(--select--padding-top) * 3 / 4) * var(--size-multiplier-md)) ); --select--footer--padding-bottom: var( --select--md--footer--padding-bottom, calc(calc(var(--select--padding-bottom) * 3 / 4) * var(--size-multiplier-md)) ); } .select-wrapper.-lg { --select--border-top-left-radius: var( --select--lg--border-top-left-radius, calc(var(--border-top-left-radius) * var(--size-multiplier-lg)) ); --select--border-top-right-radius: var( --select--lg--border-top-right-radius, calc(var(--border-top-right-radius) * var(--size-multiplier-lg)) ); --select--border-bottom-right-radius: var( --select--lg--border-bottom-right-radius, calc(var(--border-bottom-right-radius) * var(--size-multiplier-lg)) ); --select--border-bottom-left-radius: var( --select--lg--border-bottom-left-radius, calc(var(--border-bottom-left-radius) * var(--size-multiplier-lg)) ); --select--font-size: var( --select--lg--font-size, calc(var(--font-size) * var(--size-multiplier-lg)) ); --select--margin-top: var( --select--lg--margin-top, calc(calc(var(--margin-top) / 2) * var(--size-multiplier-lg)) ); --select--margin-right: var( --select--lg--margin-right, calc(calc(var(--margin-right) / 2) * var(--size-multiplier-lg)) ); --select--margin-bottom: var( --select--lg--margin-bottom, calc(calc(var(--margin-bottom) / 2) * var(--size-multiplier-lg)) ); --select--margin-left: var( --select--lg--margin-left, calc(calc(var(--margin-left) / 2) * var(--size-multiplier-lg)) ); --select--padding-top: var( --select--lg--padding-top, calc(var(--padding-top) * var(--size-multiplier-lg)) ); --select--padding-right: var( --select--lg--padding-right, calc(var(--padding-right) * var(--size-multiplier-lg)) ); --select--padding-bottom: var( --select--lg--padding-bottom, calc(var(--padding-bottom) * var(--size-multiplier-lg)) ); --select--padding-left: var( --select--lg--padding-left, calc(var(--padding-left) * var(--size-multiplier-lg)) ); --select--option--padding-top: var( --select--lg--option--padding-top, calc(calc(var(--select--padding-top) / 2) * var(--size-multiplier-lg)) ); --select--option--padding-bottom: var( --select--lg--option--padding-bottom, calc(calc(var(--select--padding-bottom) / 2) * var(--size-multiplier-lg)) ); --select--header--padding-top: var( --select--lg--header--padding-top, calc(calc(var(--select--padding-top) * 3 / 4) * var(--size-multiplier-lg)) ); --select--header--padding-bottom: var( --select--lg--header--padding-bottom, calc(calc(var(--select--padding-bottom) * 3 / 4) * var(--size-multiplier-lg)) ); --select--body--padding-right: var(--select--lg--body--padding-right, 0); --select--body--padding-left: var(--select--lg--body--padding-left, 0); --select--footer--padding-top: var( --select--lg--footer--padding-top, calc(calc(var(--select--padding-top) * 3 / 4) * var(--size-multiplier-lg)) ); --select--footer--padding-bottom: var( --select--lg--footer--padding-bottom, calc(calc(var(--select--padding-bottom) * 3 / 4) * var(--size-multiplier-lg)) ); }