UNPKG

vuikit

Version:

A Vuejs component library based on UIkit

181 lines (137 loc) 5.68 kB
// Name: Table // Description: Defines styles for the vk-table component // The underlying HTML table display relies on UIkit table ui // // Blocks: `vk-table` // `vk-table-column` // `vk-table-column-sort` // `vk-table-column-select` // // ======================================================================== // Variables // ======================================================================== @table-column-sort__arrow_color: @table-header-cell-color; @table-column-sort__arrow_icon: 'assets/table-column-sort-arrow.svg'; @table-column-sort__arrow_icon-width: 18px; @table-column-sort__arrow_icon-height: @table-column-sort__arrow_icon-width; @table-column-sort__arrow_transition-duration: 200ms; @table-column-sort__arrow_transition-timing-function: ease-out-expo; @table-column-tree__indent_width: 24px; @table-column-tree__arrow_icon-width: 12px; @table-column-tree__arrow_icon-height: @table-column-tree__arrow_icon-width; @table-column-tree__arrow_color: @global-color; @table-column-tree__arrow_icon: 'assets/table-column-tree-arrow.svg'; @table-column-tree__arrow_transition-duration: 200ms; @table-column-tree__arrow_transition-timing-function: ease-out-expo; @table-small-column-tree__indent_width: 20px; @table-small-column-tree__arrow_icon-width: 10px; @table-small-column-tree__arrow_icon-height: @table-small-column-tree__arrow_icon-width; /* ======================================================================== Component: Table ========================================================================== */ // Fixes // ======================================================================== // when combined with striped, the uk-active gets ignored, // a simple temporal fix is to use !important .hook-table-row-active() { background: @table-row-active-background !important; } // Column Sort // ======================================================================== .vk-table-column-sort { cursor: pointer; .vk-table-noselect(); .vk-hook-table-column-sort; } .vk-table-column-sort__arrow { display: inline-block; width: @table-column-sort__arrow_icon-width; height: @table-column-sort__arrow_icon-height; // icon as background background-repeat: no-repeat; background-position: 50% 50%; .vk-table-svg-fill(@table-column-sort__arrow_icon, '#000', @table-column-sort__arrow_color); // transition when rotated transition: transform; transition-duration: @table-column-sort__arrow_transition-duration; transition-timing-function: @table-column-sort__arrow_transition-timing-function; .vk-hook-table-column-sort-arrow; } .vk-table-column-sort__arrow--rotated { transform: rotateZ(180deg); } // Column Select // ======================================================================== .vk-table-column-select { .vk-table-noselect(); .vk-hook-table-column-select; } // Column Tree // ======================================================================== /* * Indent */ .vk-table-column-tree__indent { display: inline-block; width: @table-column-tree__indent_width; .uk-table-small & { width: @table-small-column-tree__indent_width; } .vk-hook-table-tree-column-indent; } /* * Arrow */ .vk-table-column-tree__arrow { cursor: pointer; display: inline-block; width: @table-column-tree__arrow_icon-width; height: @table-column-tree__arrow_icon-height; // icon as background background-repeat: no-repeat; background-position: 50% 50%; .vk-table-svg-fill(@table-column-tree__arrow_icon, '#000', @table-column-tree__arrow_color); // transition when rotated transition: transform; transition-duration: @table-column-tree__arrow_transition-duration; transition-timing-function: @table-column-tree__arrow_transition-timing-function; .uk-table-small & { width: @table-small-column-tree__arrow_icon-width; height: @table-small-column-tree__arrow_icon-height; } .vk-hook-table-tree-column-arrow; } .vk-table-column-tree__arrow--rotated { transform: rotateZ(90deg); } // Hooks // ======================================================================== .vk-hook-table-misc; .vk-hook-table() {} .vk-hook-table-column() {} .vk-hook-table-column-sort() {} .vk-hook-table-column-sort-arrow() {} .vk-hook-table-column-select() {} .vk-hook-table-tree() {} .vk-hook-table-tree-column() {} .vk-hook-table-tree-column-arrow() {} .vk-hook-table-tree-column-indent() {} .vk-hook-table-misc() {} // Mixins // ======================================================================== .vk-table-svg-fill (@src, @color-default, @color-new) { @escape-color-default: escape(@color-default); @escape-color-new: escape('@{color-new}'); @data-uri: data-uri('image/svg+xml;charset=UTF-8', '@{src}'); @replace-src: replace('@{data-uri}', '@{escape-color-default}', '@{escape-color-new}', 'g'); background-image: e(@replace-src); } .vk-table-noselect () { -webkit-touch-callout: none; /* iOS Safari */ -webkit-user-select: none; /* Safari */ -khtml-user-select: none; /* Konqueror HTML */ -moz-user-select: none; /* Firefox */ -ms-user-select: none; /* Internet Explorer/Edge */ user-select: none; /* Non-prefixed version, currently supported by Chrome and Opera */ }