123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 |
- import useVars from './useVars.js'
- import { getClasses } from '../utils/classes.js'
- function getGridTemplateRepeats(max = 12) {
- const arr = new Array(max).fill('').map((d, i) => {
- let index = i + 1
- return {
- name: index,
- value: `repeat(${index}, minmax(0, 1fr))`
- }
- })
- return arr
- }
- function getGridColumnStartEnd(name = 'col', vname = 'column', max = 12) {
- let arr = [{ name: `${name}-auto`, value: [`grid-${vname}: auto;`] }]
- for (let i = 1; i <= max; i++) {
- if (i <= max) {
- arr.push({ name: `${name}-span-${i}`, value: [`grid-${vname}: span ${i} / span ${i};`] })
- }
- arr.push({ name: `${name}-start-${i}`, value: [`grid-${vname}-start: ${i};`] })
- arr.push({ name: `${name}-end-${i}`, value: [`grid-${vname}-end: ${i};`] })
- }
- arr.push({ name: `${name}-span-full`, value: [`grid-${vname}: 1 / -1;`] })
- arr.push({ name: `${name}-start-auto`, value: [`grid-${vname}-start: auto;`] })
- arr.push({ name: `${name}-end-auto`, value: [`grid-${vname}-end: auto;`] })
- return arr
- }
- function useHook() { // useFlexboxGrid
- const { pxs, percents } = useVars()
- const FlexBasis = {
- title: 'Flex Basis',
- classes: [...getClasses(pxs, {
- name: ['basis-'],
- value: ['flex-basis'],
- }), ...getClasses(percents, {
- name: ['basis-'],
- value: ['flex-basis'],
- })]
- }
- const FlexDirection = {
- title: 'Flex Direction',
- classes: getClasses('row, row-reverse, col, col-reverse', { name: 'flex-', value: 'flex-direction' }),
- }
- const FlexWrap = {
- title: 'Flex Wrap',
- classes: getClasses('wrap, wrap-reverse, nowrap', { name: 'flex-', value: 'flex-wrap' }),
- }
- const Flex = {
- title: 'Flex',
- classes: getClasses('1: 1 1 0%, auto: 1 1 0%, initial: 0 1 auto, none', { name: 'flex-', value: 'flex' }),
- }
- const FlexGrow = {
- title: 'Flex Grow',
- classes: getClasses(':1, 0', { name: 'grow-', value: 'grow' }),
- }
- const FlexShrink = {
- title: 'Flex Shrink',
- classes: getClasses(':1, 0', { name: 'shrink-', value: 'shrink' }),
- }
- const Order = {
- title: 'Order',
- classes: getClasses('1,2,3,4,5,6,7,8,9,10,11,12,first: -9999,last: 9999,none: 0', { name: 'order-', value: 'order' }),
- }
- const GridTemplateColumns = {
- title: 'Grid Template Columns',
- classes: getClasses([...getGridTemplateRepeats(12), { name: 'none' }], { name: 'grid-cols-', value: 'grid-template-columns' }),
- }
- const GridColumnStartEnd = {
- title: 'Grid Column Start End',
- classes: getGridColumnStartEnd(),
- }
- const GridTemplateRows = {
- title: 'Grid Template Rows',
- classes: getClasses([...getGridTemplateRepeats(6), { name: 'none' }], { name: 'grid-rows-', value: 'grid-template-rows' }),
- }
- const GridRowStartEnd = {
- title: 'Grid Row Start End',
- classes: getGridColumnStartEnd('row', 'row', 6),
- }
- const GridAutoFlow = {
- title: 'Grid Auto Flow',
- classes: getClasses('row, col, dense, row-dense, col-dense', { name: 'grid-flow-', value: 'grid-auto-flow' }),
- }
- const GridAutoColumns = {
- title: 'Grid Auto Columns',
- classes: getClasses([
- { name: 'auto', value: 'auto' },
- { name: 'min', value: 'min-content' },
- { name: 'max', value: 'max-content' },
- { name: 'fr', value: 'minmax(0, 1fr)' },
- ], { name: 'auto-cols-', value: 'grid-auto-columns' }),
- }
- const GridAutoRows = {
- title: 'Grid Auto Rows',
- classes: getClasses([
- { name: 'auto', value: 'auto' },
- { name: 'min', value: 'min-content' },
- { name: 'max', value: 'max-content' },
- { name: 'fr', value: 'minmax(0, 1fr)' },
- ], { name: 'auto-rows-', value: 'grid-auto-rows' }),
- }
- const Gap = {
- title: 'Gap',
- classes: getClasses(pxs, { name: ['gap-', 'gap-x-', 'gap-y-'], value: ['gap', 'column-gap', 'row-gap'] }),
- }
- const JustifyContent = {
- title: 'Justify Content',
- classes: getClasses('normal, start: flex-start, end: flex-end, center, between: space-between, around: space-around, evenly: space-evenly, stretch', { name: 'justify-', value: 'justify-content' }),
- }
- const JustifyItems = {
- title: 'Justify Items',
- classes: getClasses('start, end, center, stretch', { name: 'justify-items-', value: 'justify-items' }),
- }
- const JustifySelf = {
- title: 'Justify Self',
- classes: getClasses('auto, start, end, center, stretch', { name: 'justify-self-', value: 'justify-self' }),
- }
- const AlignContent = {
- title: 'Align Content',
- classes: getClasses('normal, center, start: flex-start, end: flex-end, between: space-between, around: space-around, evenly: space-evenly, baseline, stretch', { name: 'content-', value: 'align-content' }),
- }
- const AlignItems = {
- title: 'Align Items',
- classes: getClasses('start: flex-start, end, center, baseline, stretch', { name: 'items-', value: 'align-items' }),
- }
- const AlignSelf = {
- title: 'Align Self',
- classes: getClasses('auto, start: flex-start, end: flex-end, center, stretch, baseline', { name: 'self-', value: 'align-self' }),
- }
- const PlaceContent = {
- title: 'Place Content',
- classes: getClasses('center, start, end, between: space-between, around: space-around, evenly: space-evenly, baseline, stretch', { name: 'place-content-', value: 'place-content' }),
- }
- const PlaceItems = {
- title: 'Place Items',
- classes: getClasses('start, end, center, baseline, stretch', { name: 'place-items-', value: 'place-items' }),
- }
- const PlaceSelf = {
- title: 'Place Self',
- classes: getClasses('auto, start, end, center, stretch', { name: 'place-self-', value: 'place-self' }),
- }
- return {
- FlexBasis,
- FlexDirection,
- FlexWrap,
- Flex,
- FlexGrow,
- FlexShrink,
- Order,
- GridTemplateColumns,
- GridColumnStartEnd,
- GridTemplateRows,
- GridRowStartEnd,
- GridAutoFlow,
- GridAutoColumns,
- GridAutoRows,
- Gap,
- JustifyContent,
- JustifyItems,
- JustifySelf,
- AlignContent,
- AlignItems,
- AlignSelf,
- PlaceContent,
- PlaceItems,
- PlaceSelf
- }
- }
- export default useHook
|