[Feature request ] Number slider
martinandersen3d opened this issue Β· comments
martinandersen3d commented
Wow! Just Awesome extension!
Feature: Press and hold down on the title to slide the number:
For some time ago i was programming a css editor, I did not had the time to finish it. But I will add the code here for the slider, as inspiration:
My Code from late 2017.. can't remember what everything does :-D
<template>
<div>
<!-- Start -->
<span @mousedown="start" class='noSelect labelText'>
{{propsDataName}}
</span>
<span>
<input
v-model="componentString"
:class="[ componentString.length > 21 ? 'inputWide' : '' ]"
@keyup.up.capture.prevent.stop="textfieldPressUp"
@keyup.down.prevent="textfieldPressDown"
:title="propsDataTooltip"
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
>
</span>
<span class='dropdownSpan'>
<select v-model="dropdownSelected" class='dropdownSelect' @change="cons">
<option v-for="(item, index) in dropdownItems" v-bind:value="item"> <!-- todo style="background-color:blue;" -->
{{ item.val }}
</option>
</select>
</span>
<!-- End -->
</div>
</template>
<script>
var collect = require('collect.js');
export default {
props: {
propsData: Object
},
data(){
return{
propsDataName:'',
propsDataTooltip:'',
mouseStartX:0,
mouseStartY:0,
mouseMoveX:0,
mouseMoveY:0,
mouseMoveTotalX:0, /* user moves mostly between -100px and +100px, so totally around 200px */
componentValue:25,
componentString:"",
componentArr:[],
componentArrPos:0,
componentIsNum:false,
componentStartValue:25,
componentUnit:"px",
componentMin:-1000, /* null or integer */
componentMax:100000, /* null or integer */
dropdownSelected: '',
dropdownItems: [
{ text: 'One', value: 'A' },
{ text: 'Two', value: 'B' },
{ text: 'Three', value: 'C' }
],
};
}, //data
methods: {
start(e){
this.increaseDecreeseValue(0, this.componentString)
this.componentValue = parseInt(this.componentArr[0])
this.componentStartValue = this.componentValue
this.mouseMoveTotalX = 0
var x = e.pageX;
var y = e.pageY;
this.mouseStartX=x
this.mouseStartY=y
window.addEventListener('mousemove',this.move);
window.addEventListener('mouseup',this.end);
},
move(e){
var x = e.pageX;
var y = e.pageY;
this.mouseMoveX=x
this.mouseMoveY=y
this.mouseMoveTotalX = -this.mouseStartX +x
/* if a min or max value is defined */
// Convert negative -30 numbers to positive
var positiveNumber = Math.abs(this.mouseMoveTotalX)
// y = (x*0.05)^2.1
var potensFunction = Math.pow( (positiveNumber*0.05), 2.1 )
// if 'mouseMoveTotalX' is a negative number, we will multiply 'potensFunction' with * -1
if( Math.sign(this.mouseMoveTotalX) === -1 ){potensFunction = potensFunction * -1}
var result = this.componentStartValue + potensFunction;
// check value min and max settings and crop value.
if( result < this.componentMin ){ result = this.componentMin}
if( result>this.componentMax ){ result = this.componentMax}
this.componentValue = parseInt(result)
this.componentArr[0] = this.componentValue
this.componentString = this.componentArr.join('')
},//move
end(){
window.removeEventListener('mousemove',this.move);
window.removeEventListener('mouseup',this.end);
},//end
cons(){
this.componentString = this.dropdownSelected.val;
},//cons
textfieldPressUp(e){
e.preventDefault();
// console.log(e.path[0].selectionStart);
},//textfieldPressUp
textfieldPressDown(e){
e.preventDefault();
// console.log(e);
},//textfieldPressUp
increaseDecreeseValue(cursorPositionInt, str){
/**
@param cursorPositionInt = integer
@param str = string
@param addSubtractString = string
*/
function isNum(n) {
if(n ==="-"){return true}
return !isNaN(parseFloat(n)) && isFinite(n);
}
var cursor = cursorPositionInt;
var arr= str.toString().split('');
var temp ="";
var resActive=null
var res=[];
for (let i = 0; i < arr.length; i++) {
var n = arr[i]
var next = (i+1 < arr.length) ? arr[i+1] : ''
var next_type = isNum(next);
temp+=n
if(isNum(n) !== next_type){
res.push(temp)
temp = ""
}
if(i+1 === arr.length){res.push(temp)}
if(cursor === i){resActive = res.length}
if(cursor === i && isNum(n) ===false){resActive = null}
}
// if(isNum( res[resActive] )){
// res[resActive] = parseInt(res[resActive]) + parseInt(addSubtract)
// }
var result =res.join('')
if(str.length > 0 && isNum(res[0])){
this.componentIsNum = true
this.componentPos =0
this.componentArr = res
}
else{
this.componentIsNum = false
}
},
},//methods
mounted(){
this.propsDataName = this.propsData.id.replace("-", " ")
this.propsDataTooltip = this.propsData.tooltip
var opSplit = this.propsData.options.split("|")
var collection = collect(opSplit)
var i = 0
var res = collection.map(function (theKey) {
var tmp = {val:theKey, id: i}
i++;
return tmp;
});
// console.log(res.all());
this.dropdownItems = res.all();
} //mounted
}
</script>
<style scoped>
input{
background-color: rgba(255,255,255, 0.5);
border: 1px solid rgba(0,0,0, 0.2);
padding: 3px;
}
input:active,input:hover{
background-color: white;
border: 1px solid rgba(0,0,0, 0.8);
padding: 3px;
}
.inputWide{
display: block;
width: 250px !important;
}
.dropdownSpan{
margin-left: -25px;
}
.dropdownSelect{
width:21px;
height: 24px;
background-color:none;
}
.dropdownSelect:hover{
border: 1px solid rgba(0,0,0, 0.8);
}
.labelText{
cursor: w-resize;
font-size: 14px;
padding: 3px;
color:rgb(180,180,180);
width:140px;
padding-left: 16px;
display: inline-block;
}
.labelText:hover{
color:blue;
background-color: rgba(255,255,255, 1);
}
.noSelect{
user-select: none;
-moz-user-select: none;
-webkit-user-drag: none;
-webkit-user-select: none;
-ms-user-select: none;
}
</style>
martinandersen3d commented
More Jizz:
cssMixin.js
export const cssMixin = {
data(){
return{
cssObj: [
{ id: "background-attachment",
group: "12Background",
defaultText: "scroll",
options: "scroll|fixed",
type: "",
tooltip: ""
},
{ id: "background-blend-mode",
group: "12Background",
defaultText: "",
options: "normal|multiply|screen|overlay|darken|lighten|color-dodge|saturation|color|luminosity",
type: "",
tooltip: ""
},
{ id: "background-color",
group: "12Background",
defaultText: "transparent",
options: "rgb(0,0,0)|#ffffff|red|rgba(0, 0, 0, 0.6)|hsl(89, 43%, 51%)|hsla(89, 43%, 51%, 0.6)",
type: "",
tooltip: ""
},
{ id: "background-image",
group: "12Background",
defaultText: "none",
options: "url('link.jpg')",
type: "",
tooltip: ""
},
{ id: "background-position",
group: "12Background",
defaultText: "0% 0%",
options: "left center|left bottom|right top|right center|right bottom|center top|center center|center bottom|20% 20%|20px 20px",
type: "",
tooltip: "background-repeat:no-repeat;"
},
{ id: "background-repeat",
group: "12Background",
defaultText: "repeat",
options: "repeat|repeat-x|repeat-y|no-repeat",
type: "",
tooltip: ""
},
{ id: "background-size",
group: "12Background",
defaultText: "",
options: "auto|cover|contain|100px 100px|200px|50%|100% 100%",
type: "",
tooltip: "background-repeat:no-repeat;"
},
{ id: "background",
group: "12Background",
defaultText: "multiple values",
options: "background-color|background-image|background-repeat|background-attachment|background-position",
type: "",
tooltip: ""
},
{ id: "border-collapse",
group: "24Table",
defaultText: "separate",
options: "collapse|separate",
type: "",
tooltip: "table' and 'inline-table' elements"
},
{ id: "border-color",
group: "15Border",
defaultText: "multiple values",
options: "rgb(255,0,0)|#FF0000|red|rgba(201, 76, 76, 0.6)|hsl(89, 43%, 51%)|hsla(89, 43%, 51%, 0.6) |transparent",
type: "",
tooltip: ""
},
{ id: "border-radius",
group: "15Border",
defaultText: "",
options: "3px|5px|50%",
type: "",
tooltip: ""
},
{ id: "border-spacing",
group: "24Table",
defaultText: "0",
options: "0px 0px",
type: "",
tooltip: "table' and 'inline-table' elements"
},
{ id: "border-style",
group: "15Border",
defaultText: "",
options: "none|hidden|dotted|dashed|solid|double |groove|ridge|inset|outset",
type: "",
tooltip: ""
},
{ id: "border-width",
group: "15Border",
defaultText: "multiple values",
options: "2px|3px 3px|1px 3px 6px 9px",
type: "",
tooltip: ""
},
{ id: "border",
group: "15Border",
defaultText: "multiple values",
options: "1px solid #green",
type: "",
tooltip: ""
},
{ id: "bottom",
group: "18Position",
defaultText: "auto",
options: "14px|50%|auto",
type: "",
tooltip: ""
},
{ id: "box-shadow",
group: "22Fx",
defaultText: "",
options: "10px 5px 5px black",
type: "",
tooltip: "maybe you are looking for 'text-shadow'?"
},
{ id: "box-sizing",
group: "18Position",
defaultText: "",
options: "content-box|border-box",
type: "",
tooltip: ""
},
{ id: "caption-side",
group: "24Table",
defaultText: "top",
options: "top|bottom",
type: "",
tooltip: ""
},
{ id: "clear",
group: "18Position",
defaultText: "none",
options: "none|left|right|both",
type: "",
tooltip: ""
},
{ id: "clip-path",
group: "18Position",
defaultText: "auto",
options: "rect(0px,50px,50px,0px)|rect(1px, 10em, 3rem, 2ch)|auto|fill-box|stroke-box|view-box|margin-box|border-box|padding-box|content-box|inset(100px 50px)|circle(50px at 0 100px)|polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)|padding-box circle(50px at 0 100px)",
type: "",
tooltip: "Crop a image. Note: The clip property does not work if 'overflow:visible'. Applies to absolutely positioned elements Try position: absolute;"
},
{ id: "color",
group: "10Font",
defaultText: "depends on user agent",
options: "rgb(255,0,0)|#FF0000|red|rgba(201, 76, 76, 0.6)|hsl(89, 43%, 51%)|hsla(89, 43%, 51%, 0.6) ",
type: "",
tooltip: ""
},
{ id: "column-count",
group: "10Font",
defaultText: "",
options: "2|3|4",
type: "",
tooltip: ""
},
{ id: "column-gap",
group: "10Font",
defaultText: "",
options: "20px",
type: "",
tooltip: ""
},
{ id: "content",
group: "25Beforeafter",
defaultText: "normal",
options: "",
type: "",
tooltip: ""
},
{ id: "counter-increment",
group: "10Font",
defaultText: "none",
options: "",
type: "",
tooltip: ""
},
{ id: "counter-reset",
group: "10Font",
defaultText: "none",
options: "",
type: "",
tooltip: ""
},
{ id: "cursor",
group: "10Font",
defaultText: "auto",
options: "crosshair|default|pointer|move|e-resize|ne-resize|nw-resize|n-resize|se-resize|sw-resize|s-resize|w-resize|text|wait|help|progress|url('link.jpg')",
type: "",
tooltip: ""
},
{ id: "direction",
group: "10Font",
defaultText: "ltr",
options: "ltr|rtl",
type: "",
tooltip: "unicode-bidi: bidi-override;"
},
{ id: "display",
group: "18Position",
defaultText: "inline",
options: "inline|block|flex|grid|list-item|inline-block|table|inline-table|table-row-group|table-header-group|table-footer-group|table-row|table-column-group|table-column|table-cell|table-caption",
type: "",
tooltip: ""
},
{ id: "empty-cells",
group: "24Table",
defaultText: "show",
options: "show|hide",
type: "",
tooltip: ""
},
{ id: "float",
group: "18Position",
defaultText: "none",
options: "left|right",
type: "",
tooltip: ""
},
{ id: "font-family",
group: "10Font",
defaultText: "depends on user agent",
options: "",
type: "",
tooltip: ""
},
{ id: "font-size",
group: "10Font",
defaultText: "medium",
options: "8px|9px|10px|11px|12px|14px|18px|24px|30px|36px|28px|60px|72px|96px|0.8em|1.6rem|120%|medium|xx-small|x-small|small|large|x-large|xx-large| smaller|larger",
type: "",
tooltip: ""
},
{ id: "font-style",
group: "10Font",
defaultText: "normal",
options: "normal|italic|oblique",
type: "",
tooltip: ""
},
{ id: "font-variant",
group: "10Font",
defaultText: "normal",
options: "normal|small-caps",
type: "",
tooltip: ""
},
{ id: "font-weight",
group: "10Font",
defaultText: "normal",
options: "normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900",
type: "",
tooltip: ""
},
{ id: "font",
group: "10Font",
defaultText: "multiple values",
options: "font-style|font-variant|font-weight|font-size|font-family|caption|icon|menu|message-box|small-caption|status-bar",
type: "",
tooltip: ""
},
{ id: "height",
group: "17Height",
defaultText: "auto",
options: "14px|50%|auto",
type: "",
tooltip: ""
},
{ id: "left",
group: "18Position",
defaultText: "auto",
options: "14px|50%|auto",
type: "",
tooltip: ""
},
{ id: "letter-spacing",
group: "10Font",
defaultText: "normal",
options: "normal|14px",
type: "",
tooltip: ""
},
{ id: "line-height",
group: "10Font",
defaultText: "normal",
options: "14px|50%",
type: "",
tooltip: ""
},
{ id: "list-style-image",
group: "23List",
defaultText: "none",
options: "url('link.jpg')",
type: "",
tooltip: "elements with 'display: list-item'"
},
{ id: "list-style-position",
group: "23List",
defaultText: "outside",
options: "inside|outside",
type: "",
tooltip: "elements with 'display: list-item'"
},
{ id: "list-style-type",
group: "23List",
defaultText: "disc",
options: "disc|circle|square|decimal|decimal-leading-zero|lower-roman|upper-roman|lower-greek|lower-latin|upper-latin|armenian|georgian|lower-alpha|upper-alpha",
type: "",
tooltip: "elements with 'display: list-item'"
},
{ id: "list-style",
group: "23List",
defaultText: "multiple values",
options: "list-style-type|list-style-position|list-style-image",
type: "",
tooltip: "elements with 'display: list-item'"
},
{ id: "margin",
group: "13Margin",
defaultText: "multiple values",
options: "1px|2px|3px|4px|5px|10px|16px|22px|32px|48px|72px|100px",
type: "",
tooltip: "all elements except elements with table display types other than table-caption, table and inline-table"
},
{ id: "margin-left",
group: "13Margin",
defaultText: "",
options: "1px|2px|3px|4px|5px|10px|16px|22px|32px|48px|72px|100px",
type: "",
tooltip: ""
},
{ id: "margin-right",
group: "13Margin",
defaultText: "",
options: "1px|2px|3px|4px|5px|10px|16px|22px|32px|48px|72px|100px",
type: "",
tooltip: ""
},
{ id: "margin-top",
group: "13Margin",
defaultText: "",
options: "1px|2px|3px|4px|5px|10px|16px|22px|32px|48px|72px|100px",
type: "",
tooltip: ""
},
{ id: "margin-bottom",
group: "13Margin",
defaultText: "",
options: "1px|2px|3px|4px|5px|10px|16px|22px|32px|48px|72px|100px",
type: "",
tooltip: ""
},
{ id: "max-height",
group: "17Height",
defaultText: "none",
options: "14px|50%",
type: "",
tooltip: "all elements but non-replaced inline elements, table columns, and column groups"
},
{ id: "max-width",
group: "16Width",
defaultText: "none",
options: "14px|50%",
type: "",
tooltip: "all elements but non-replaced inline elements, table rows, and row groups"
},
{ id: "min-height",
group: "17Height",
defaultText: "0",
options: "14px|50%",
type: "",
tooltip: "all elements but non-replaced inline elements, table columns, and column groups"
},
{ id: "min-width",
group: "16Width",
defaultText: "0",
options: "14px|50%",
type: "",
tooltip: "all elements but non-replaced inline elements, table rows, and row groups"
},
{ id: "opacity",
group: "10Font",
defaultText: "",
options: "20%",
type: "",
tooltip: ""
},
{ id: "outline-color",
group: "22Fx",
defaultText: "invert",
options: "rgb(255,0,0)|#FF0000|red|rgba(201, 76, 76, 0.6)|hsl(89, 43%, 51%)|hsla(89, 43%, 51%, 0.6) |invert",
type: "",
tooltip: ""
},
{ id: "outline-style",
group: "22Fx",
defaultText: "none",
options: "hidden|dotted|dashed|solid|double|groove|ridge|inset|outset",
type: "",
tooltip: ""
},
{ id: "outline-width",
group: "22Fx",
defaultText: "medium",
options: "5px",
type: "",
tooltip: ""
},
{ id: "outline",
group: "22Fx",
defaultText: "multiple values",
options: "outline-color|outline-style|outline-width",
type: "",
tooltip: ""
},
{ id: "overflow",
group: "18Position",
defaultText: "visible",
options: "visible|hidden|scroll|auto",
type: "",
tooltip: ""
},
{ id: "padding",
group: "14Padding",
defaultText: "multiple values",
options: "1px|2px|3px|4px|5px|10px|16px|22px|32px|48px|72px|100px",
type: "",
tooltip: ""
},
{ id: "padding-left",
group: "14Padding",
defaultText: "",
options: "1px|2px|3px|4px|5px|10px|16px|22px|32px|48px|72px|100px",
type: "",
tooltip: ""
},
{ id: "padding-right",
group: "14Padding",
defaultText: "",
options: "1px|2px|3px|4px|5px|10px|16px|22px|32px|48px|72px|100px",
type: "",
tooltip: ""
},
{ id: "padding-top",
group: "14Padding",
defaultText: "",
options: "1px|2px|3px|4px|5px|10px|16px|22px|32px|48px|72px|100px",
type: "",
tooltip: ""
},
{ id: "padding-bottom",
group: "14Padding",
defaultText: "",
options: "1px|2px|3px|4px|5px|10px|16px|22px|32px|48px|72px|100px",
type: "",
tooltip: ""
},
{ id: "page-break-after",
group: "10Font",
defaultText: "auto",
options: "auto|always|avoid|left|right",
type: "",
tooltip: ""
},
{ id: "page-break-before",
group: "10Font",
defaultText: "auto",
options: "auto|always|avoid|left|right",
type: "",
tooltip: ""
},
{ id: "page-break-inside",
group: "10Font",
defaultText: "auto",
options: "avoid|auto",
type: "",
tooltip: ""
},
{ id: "position",
group: "18Position",
defaultText: "static",
options: "static|relative|absolute|fixed",
type: "",
tooltip: ""
},
{ id: "quotes",
group: "10Font",
defaultText: "depends on user agent",
options: "",
type: "",
tooltip: ""
},
{ id: "resize",
group: "18Position",
defaultText: "",
options: "horizontal|vertical|both",
type: "",
tooltip: ""
},
{ id: "right",
group: "18Position",
defaultText: "auto",
options: "14px|50%|auto",
type: "",
tooltip: ""
},
{ id: "table-layout",
group: "24Table",
defaultText: "auto",
options: "auto|fixed",
type: "",
tooltip: ""
},
{ id: "text-align",
group: "10Font",
defaultText: "a nameless value that acts as 'left' if 'direction' is 'ltr', 'right' if 'direction' is 'rtl'",
options: "left|right|center|justify",
type: "",
tooltip: ""
},
{ id: "text-decoration",
group: "10Font",
defaultText: "none",
options: "none|underline|overline|line-through|blink",
type: "",
tooltip: ""
},
{ id: "text-indent",
group: "10Font",
defaultText: "0",
options: "14px|50%",
type: "",
tooltip: ""
},
{ id: "text-shadow",
group: "10Font",
defaultText: "",
options: "5px 5px 5px #CF5C2B",
type: "",
tooltip: ""
},
{ id: "text-transform",
group: "10Font",
defaultText: "none",
options: "capitalize|uppercase|lowercase",
type: "",
tooltip: ""
},
{ id: "top",
group: "18Position",
defaultText: "auto",
options: "14px|50%|auto",
type: "",
tooltip: ""
},
{ id: "unicode-bidi",
group: "10Font",
defaultText: "normal",
options: "normal|embed|bidi-override",
type: "",
tooltip: "direction: rtl;"
},
{ id: "vertical-align",
group: "10Font",
defaultText: "baseline",
options: "baseline|sub|super|top|text-top|middle|bottom|text-bottom|50%|14px",
type: "",
tooltip: "inline-level and 'table-cell' elements"
},
{ id: "visibility",
group: "18Position",
defaultText: "visible",
options: "visible|hidden|collapse",
type: "",
tooltip: ""
},
{ id: "white-space",
group: "10Font",
defaultText: "normal",
options: "normal|pre|nowrap|pre-wrap|pre-line",
type: "",
tooltip: ""
},
{ id: "width",
group: "16Width",
defaultText: "auto",
options: "14px|50%|auto",
type: "",
tooltip: ""
},
{ id: "word-spacing",
group: "10Font",
defaultText: "normal",
options: "normal|14px",
type: "",
tooltip: ""
},
{ id: "z-index",
group: "18Position",
defaultText: "auto",
options: "20",
type: "",
tooltip: ""
},
{ id: "align-content",
group: "19Flex",
defaultText: "stretch",
options: "stretch|center|flex-start|flex-end|space-between|space-around",
type: "",
tooltip: "This property has no effect on single line flexible boxes. The align-content property modifies the behavior of the flex-wrap property. It is similar to align-items, but instead of aligning flex items, it aligns flex lines."
},
{ id: "align-items",
group: "19Flex",
defaultText: "stretch",
options: "stretch|center|flex-start|flex-end|baseline",
type: "",
tooltip: ""
},
{ id: "flex-basis",
group: "19Flex",
defaultText: "auto",
options: "16px|24px|36px|25%|33%|50%| 66%|75%",
type: "",
tooltip: "Specifies the initial length of a flexible item"
},
{ id: "justify-content",
group: "19Flex",
defaultText: "flex-start",
options: "flex-start|flex-end|center|space-between|space-around",
type: "",
tooltip: ""
},
{ id: "flex-direction",
group: "20Flex Container",
defaultText: "row",
options: "row|row-reverse|column|column-reverse",
type: "",
tooltip: "Specifies the direction of the flexible items"
},
{ id: "flex-flow",
group: "20Flex Container",
defaultText: "row nowrap",
options: "row nowrap|row wrap|row wrap-reverse|row-reverse nowrap|row-reverse wrap|row-reverse wrap-reverse|column nowrap|column wrap|column wrap-reverse|column-reverse nowrap|column-reverse wrap|column-reverse wrap-reverse",
type: "",
tooltip: "A shorthand property for the flex-direction and the flex-wrap properties"
},
{ id: "flex-wrap",
group: "20Flex Container",
defaultText: "nowrap",
options: "nowrap|wrap|wrap-reverse",
type: "",
tooltip: ""
},
{ id: "align-self",
group: "21Flex Item",
defaultText: "auto",
options: "auto|stretch|center|flex-start|flex-end|baseline",
type: "",
tooltip: ""
},
{ id: "flex",
group: "21Flex Item",
defaultText: "0 1 auto",
options: "auto|2|2|10em|30px|1 30px|2 2|2 2 10%",
type: "",
tooltip: "The flex property specifies the length of the item, relative to the rest of the flexible items inside the same container.\nThe flex property is a shorthand for the flex-grow, flex-shrink, and the flex-basis properties."
},
{ id: "order",
group: "21Flex Item",
defaultText: "0",
options: "1|2|3|4|5|6|7|8|9|10",
type: "",
tooltip: "number: Default value 0. Specifies the order for the flexible item"
},
{ id: "flex-grow",
group: "21Flex Item",
defaultText: "0",
options: "1|2|3|4|5",
type: "",
tooltip: "The flex-grow property specifies how much the item will grow relative to the rest of the flexible items inside the same container. The flex-grow property is specified as a single number."
},
{ id: "flex-shrink",
group: "21Flex Item",
defaultText: "1",
options: "1|2|3|4|5",
type: "",
tooltip: "The flex-shrink property specifies how the item will shrink relative to the rest of the flexible items inside the same container."
}
]
};//return
}, //data
} //export
/**
var collect = require('collect.js');
const collection = collect(cssObj);
const unique = collection.map(function (item) {
return item.group;
}).unique().sort();
unique.all();
console.log( unique.all() );
'font',βββββ
'background',βββββ
'margin',βββββ
'padding',βββββ
'border',βββββ
βββββ'width',βββββ
'height',
βββββ 'position',ββββββββββ
βββββ 'position_flex',βββββ
βββββ 'position_flex_item'
βββββ 'position_flex_container',βββββ
βββββ 'list',βββββ
βββββ 'fx',βββββ
βββββ 'table',βββββ
βββββ 'beforeafter',βββββ
'11Font',βββββ
βββββ '20Flex Container',βββββ
βββββ '21Flex Item',βββββ
βββββ '22Fx',βββββ
βββββ '23List',βββββ
βββββ '24Table',βββββ
βββββ '25Beforeafter',βββββ
βββββ '12Background',βββββ
βββββ '13Margin',βββββ
βββββ '14Padding',βββββ
βββββ '15Border',βββββ
βββββ '16Width',βββββ
βββββ '17Height',βββββ
βββββ '18Position',βββββ
βββββ '19Flex'
βββββ
βββββ
βββββ
*/
cssView.vue
<template><div class='cssContainer'>
<!-- Start -->
<!--
<div @click="this.asdsa = !this.asdsa">hey</div>
<div v-if="this.asdsa">sdfsdfsd</div>
-->
<div v-for="(groupItem, groupIndex) in groups" >
<div @click="groupsShow[groupIndex] =! groupsShow[groupIndex]" class='cssTitle'>{{groupItem.substring(2)}}
</div>
<div v-for="(item, index) in sameGroup(groupItem)" v-show=" groupsShow[groupIndex] ">
<labelSlider :propsData="item"></labelSlider>
</div>
</div>
<!-- END -->
</div></template>
<script>
import {cssMixin} from './cssMixin.js';
import collect from 'collect.js'
export default {
mixins: [cssMixin],
data(){
return{
groups:'',
groupsShow:[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true]
};
}, //data
methods: {
sameGroup(str){
const collection = collect(this.cssObj);
const filtered = collection.filter(function (value, key) {
return value.group == str;
});
var result=filtered.all();
return result;
}
},//methods
mounted(){
const collection = collect(this.cssObj);
const unique = collection.map(function (item) {
return item.group;
}).unique().sort();
this.groups = unique.all();
}
}
</script>
<style scoped>
.cssContainer{
overflow-y: scroll;
height: 800px;
}
.cssTitle{
color:rgb(180,180,180);
font-weight: bold;
margin-top:16px;
}
</style>
martinandersen3d commented
And the insane spreadsheet :D
(..from late 2017)
https://docs.google.com/spreadsheets/d/1vlOe5SVWqJ9BNt818jZ_bqJRo3-GTjOLfGY9HsdBE6A/edit?usp=sharing