anki/ts/components/IconConstrain.svelte
Matthias Metelka 23e6b2123e
Redesign deck options inputs (#2082)
* Create _input-mixins.scss

* Use button-mixins on more elements

* Replace <select> tag with custom Select component

* Fix RevertButton causing cursor: pointer when hidden

* Increase SaveButton chevron width

* Hide floating component box-shadow when inactive

* Rework SpinBox and move it into components

* Run eslint and prettier

* Remove leftover options prop

* Pass disabled array to EnumSelector again

* Update MapperRow.svelte

* Darken QHeaderView border color

Slipping this in without an extra PR.

* Adjust disabled color, border and cursor

* Remove redundant icon definition from stylesheets

* Fix deck options initial config

* Fix z-index issues in change notetype screen

It might be best to handle z-index locally in each user component instead of hard-coded component values.

* Give web SpinBox a horizontal design

* Give QRadioButton the same treatment as QCheckBox in #2079

* Fix unused CSS selector warning with base button-mixin

* Remove redundant import

* Fix deck options save button

* Delete input-mixins and remove unused down-arrow

* Run eslint on change-notetype

* Run eslint on components
2022-09-27 12:16:45 +10:00

48 lines
1.3 KiB
Svelte

<!--
Copyright: Ankitects Pty Ltd and contributors
License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
-->
<script lang="ts">
export let iconSize: number = 100;
export let widthMultiplier: number = 1;
export let flipX: boolean = false;
</script>
<span
class:flip-x={flipX}
style="--width-multiplier: {widthMultiplier}; --icon-size: {iconSize}%;"
>
<slot />
</span>
<style lang="scss">
span {
display: inline-block;
position: relative;
vertical-align: var(--icon-align, middle);
/* constrain icon */
min-width: calc((var(--buttons-size, 22px) - 2px) * var(--width-multiplier));
height: calc(var(--buttons-size, 22px) - 2px);
& > :global(svg),
& > :global(img) {
position: absolute;
width: var(--icon-size);
height: var(--icon-size);
top: calc((100% - var(--icon-size)) / 2);
bottom: calc((100% - var(--icon-size)) / 2);
left: calc((100% - var(--icon-size)) / 2);
right: calc((100% - var(--icon-size)) / 2);
fill: currentColor;
vertical-align: unset;
}
&.flip-x > :global(svg),
&.flip-x > :global(img) {
transform: scaleX(-1);
}
}
</style>