naive-ui
Version:
A Vue 3 Component Library. Fairly Complete, Theme Customizable, Uses TypeScript, Fast
388 lines • 11.7 kB
JavaScript
import { c, cB, cE, cM, cNotM } from "../../../_utils/cssr/index.mjs";
import { fadeInScaleUpTransition } from "../../../_styles/transitions/fade-in-scale-up.cssr.mjs";
// vars:
// --n-bezier
// --n-icon-color-override
// --n-icon-color-disabled-override
// --n-panel-border-radius
// --n-panel-color
// --n-panel-box-shadow
// --n-panel-text-color
// panel header
// --n-panel-header-padding
// --n-panel-header-divider-color
// panel calendar
// --n-calendar-left-padding
// --n-calendar-right-padding
// --n-calendar-title-color-hover
// --n-calendar-title-height
// --n-calendar-title-padding
// --n-calendar-title-font-size
// --n-calendar-title-text-color
// --n-calendar-title-font-weight
// --n-calendar-title-grid-template-columns
// --n-calendar-days-height
// --n-calendar-days-divider-color
// --n-calendar-days-font-size
// --n-calendar-days-text-color
// --n-calendar-divider-color
// panel action
// --n-panel-action-padding
// --n-panel-action-divider-color
// panel item
// --n-item-border-radius
// --n-item-size
// --n-item-cell-width
// --n-item-cell-height
// --n-item-text-color
// --n-item-color-included
// --n-item-color-disabled
// --n-item-color-hover
// --n-item-color-active
// --n-item-font-size
// --n-item-text-color-disabled
// --n-item-text-color-active
// scroll item
// --n-scroll-item-width
// --n-scroll-item-height
// --n-scroll-item-border-radius
// panel arrow
// --n-arrow-size
// --n-arrow-color
export default c([cB('date-picker', `
position: relative;
z-index: auto;
`, [cB('date-picker-icon', `
color: var(--n-icon-color-override);
transition: color .3s var(--n-bezier);
`), cB('icon', `
color: var(--n-icon-color-override);
transition: color .3s var(--n-bezier);
`), cM('disabled', [cB('date-picker-icon', `
color: var(--n-icon-color-disabled-override);
`), cB('icon', `
color: var(--n-icon-color-disabled-override);
`)])]), cB('date-panel', `
width: fit-content;
outline: none;
margin: 4px 0;
display: grid;
grid-template-columns: 0fr;
border-radius: var(--n-panel-border-radius);
background-color: var(--n-panel-color);
color: var(--n-panel-text-color);
user-select: none;
`, [fadeInScaleUpTransition(), cM('shadow', `
box-shadow: var(--n-panel-box-shadow);
`), cB('date-panel-calendar', {
padding: 'var(--n-calendar-left-padding)',
display: 'grid',
gridTemplateColumns: '1fr',
gridArea: 'left-calendar'
}, [cM('end', {
padding: 'var(--n-calendar-right-padding)',
gridArea: 'right-calendar'
})]), cB('date-panel-month-calendar', {
display: 'flex',
gridArea: 'left-calendar'
}, [cE('picker-col', `
min-width: var(--n-scroll-item-width);
height: calc(var(--n-scroll-item-height) * 6);
user-select: none;
-webkit-user-select: none;
`, [c('&:first-child', `
min-width: calc(var(--n-scroll-item-width) + 4px);
`, [cE('picker-col-item', [c('&::before', 'left: 4px;')])]), cE('padding', `
height: calc(var(--n-scroll-item-height) * 5)
`)]), cE('picker-col-item', `
z-index: 0;
cursor: pointer;
height: var(--n-scroll-item-height);
box-sizing: border-box;
padding-top: 4px;
display: flex;
align-items: center;
justify-content: center;
position: relative;
transition:
color .3s var(--n-bezier),
background-color .3s var(--n-bezier);
background: #0000;
color: var(--n-item-text-color);
`, [c('&::before', `
z-index: -1;
content: "";
position: absolute;
left: 0;
right: 4px;
top: 4px;
bottom: 0;
border-radius: var(--n-scroll-item-border-radius);
transition:
background-color .3s var(--n-bezier);
`), cNotM('disabled', [c('&:hover::before', `
background-color: var(--n-item-color-hover);
`), cM('selected', `
color: var(--n-item-color-active);
`, [c('&::before', 'background-color: var(--n-item-color-hover);')])]), cM('disabled', `
color: var(--n-item-text-color-disabled);
cursor: not-allowed;
`, [cM('selected', [c('&::before', `
background-color: var(--n-item-color-disabled);
`)])])])]), cM('date', {
gridTemplateAreas: `
"left-calendar"
"footer"
"action"
`
}), cM('week', {
gridTemplateAreas: `
"left-calendar"
"footer"
"action"
`
}), cM('daterange', {
gridTemplateAreas: `
"left-calendar divider right-calendar"
"footer footer footer"
"action action action"
`
}), cM('datetime', {
gridTemplateAreas: `
"header"
"left-calendar"
"footer"
"action"
`
}), cM('datetimerange', {
gridTemplateAreas: `
"header header header"
"left-calendar divider right-calendar"
"footer footer footer"
"action action action"
`
}), cM('month', {
gridTemplateAreas: `
"left-calendar"
"footer"
"action"
`
}), cB('date-panel-footer', {
gridArea: 'footer'
}), cB('date-panel-actions', {
gridArea: 'action'
}), cB('date-panel-header', {
gridArea: 'header'
}), cB('date-panel-header', `
box-sizing: border-box;
width: 100%;
align-items: center;
padding: var(--n-panel-header-padding);
display: flex;
justify-content: space-between;
border-bottom: 1px solid var(--n-panel-header-divider-color);
`, [c('>', [c('*:not(:last-child)', {
marginRight: '10px'
}), c('*', {
flex: 1,
width: 0
}), cB('time-picker', {
zIndex: 1
})])]), cB('date-panel-month', `
box-sizing: border-box;
display: grid;
grid-template-columns: var(--n-calendar-title-grid-template-columns);
align-items: center;
justify-items: center;
padding: var(--n-calendar-title-padding);
height: var(--n-calendar-title-height);
`, [cE('prev, next, fast-prev, fast-next', `
line-height: 0;
cursor: pointer;
width: var(--n-arrow-size);
height: var(--n-arrow-size);
color: var(--n-arrow-color);
`), cE('month-year', `
user-select: none;
-webkit-user-select: none;
flex-grow: 1;
position: relative;
`, [cE('text', `
font-size: var(--n-calendar-title-font-size);
line-height: var(--n-calendar-title-font-size);
font-weight: var(--n-calendar-title-font-weight);
padding: 6px 8px;
text-align: center;
color: var(--n-calendar-title-text-color);
cursor: pointer;
transition: background-color .3s var(--n-bezier);
border-radius: var(--n-panel-border-radius);
`, [cM('active', `
background-color: var(--n-calendar-title-color-hover);
`), c('&:hover', `
background-color: var(--n-calendar-title-color-hover);
`)])])]), cB('date-panel-weekdays', `
display: grid;
margin: auto;
grid-template-columns: repeat(7, var(--n-item-cell-width));
grid-template-rows: repeat(1, var(--n-item-cell-height));
align-items: center;
justify-items: center;
margin-bottom: 4px;
border-bottom: 1px solid var(--n-calendar-days-divider-color);
`, [cE('day', `
user-select: none;
-webkit-user-select: none;
line-height: 15px;
width: var(--n-item-size);
text-align: center;
font-size: var(--n-calendar-days-font-size);
color: var(--n-item-text-color);
`)]), cB('date-panel-dates', `
margin: auto;
display: grid;
grid-template-columns: repeat(7, var(--n-item-cell-width));
grid-template-rows: repeat(6, var(--n-item-cell-height));
align-items: center;
justify-items: center;
flex-wrap: wrap;
`, [cB('date-panel-date', `
user-select: none;
-webkit-user-select: none;
position: relative;
width: var(--n-item-size);
height: var(--n-item-size);
line-height: var(--n-item-size);
text-align: center;
font-size: var(--n-item-font-size);
border-radius: var(--n-item-border-radius);
z-index: 0;
cursor: pointer;
transition:
background-color .2s var(--n-bezier),
color .2s var(--n-bezier);
`, [cE('trigger', `
position: absolute;
left: calc(var(--n-item-size) / 2 - var(--n-item-cell-width) / 2);
top: calc(var(--n-item-size) / 2 - var(--n-item-cell-height) / 2);
width: var(--n-item-cell-width);
height: var(--n-item-cell-height);
`), cM('current', [cE('sup', `
position: absolute;
top: 2px;
right: 2px;
content: "";
height: 4px;
width: 4px;
border-radius: 2px;
background-color: var(--n-item-color-active);
transition:
background-color .2s var(--n-bezier);
`)]), c('&::after', `
content: "";
z-index: -1;
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
border-radius: inherit;
transition: background-color .3s var(--n-bezier);
`), cM('covered, start, end', [cNotM('excluded', [c('&::before', `
content: "";
z-index: -2;
position: absolute;
left: calc((var(--n-item-size) - var(--n-item-cell-width)) / 2);
right: calc((var(--n-item-size) - var(--n-item-cell-width)) / 2);
top: 0;
bottom: 0;
background-color: var(--n-item-color-included);
`), c('&:nth-child(7n + 1)::before', {
borderTopLeftRadius: 'var(--n-item-border-radius)',
borderBottomLeftRadius: 'var(--n-item-border-radius)'
}), c('&:nth-child(7n + 7)::before', {
borderTopRightRadius: 'var(--n-item-border-radius)',
borderBottomRightRadius: 'var(--n-item-border-radius)'
})])]), cM('selected', {
color: 'var(--n-item-text-color-active)'
}, [c('&::after', {
backgroundColor: 'var(--n-item-color-active)'
}), cM('start', [c('&::before', {
left: '50%'
})]), cM('end', [c('&::before', {
right: '50%'
})]), cE('sup', {
backgroundColor: 'var(--n-panel-color)'
})]), cM('excluded', {
color: 'var(--n-item-text-color-disabled)'
}, [cM('selected', [c('&::after', {
backgroundColor: 'var(--n-item-color-disabled)'
})])]), cM('disabled', {
cursor: 'not-allowed',
color: 'var(--n-item-text-color-disabled)'
}, [cM('covered', [c('&::before', {
backgroundColor: 'var(--n-item-color-disabled)'
})]), cM('selected', [c('&::before', {
backgroundColor: 'var(--n-item-color-disabled)'
}), c('&::after', {
backgroundColor: 'var(--n-item-color-disabled)'
})])]), cM('week-hovered', [c('&::before', `
background-color: var(--n-item-color-included);
`), c('&:nth-child(7n + 1)::before', `
border-top-left-radius: var(--n-item-border-radius);
border-bottom-left-radius: var(--n-item-border-radius);
`), c('&:nth-child(7n + 7)::before', `
border-top-right-radius: var(--n-item-border-radius);
border-bottom-right-radius: var(--n-item-border-radius);
`)]), cM('week-selected', `
color: var(--n-item-text-color-active)
`, [c('&::before', `
background-color: var(--n-item-color-active);
`), c('&:nth-child(7n + 1)::before', `
border-top-left-radius: var(--n-item-border-radius);
border-bottom-left-radius: var(--n-item-border-radius);
`), c('&:nth-child(7n + 7)::before', `
border-top-right-radius: var(--n-item-border-radius);
border-bottom-right-radius: var(--n-item-border-radius);
`)])])]), cNotM('week', [cB('date-panel-dates', [cB('date-panel-date', [cNotM('disabled', [cNotM('selected', [c('&:hover', `
background-color: var(--n-item-color-hover);
`)])])])])]), cM('week', [cB('date-panel-dates', [cB('date-panel-date', [c('&::before', `
content: "";
z-index: -2;
position: absolute;
left: calc((var(--n-item-size) - var(--n-item-cell-width)) / 2);
right: calc((var(--n-item-size) - var(--n-item-cell-width)) / 2);
top: 0;
bottom: 0;
transition: background-color .3s var(--n-bezier);
`)])])]), cE('vertical-divider', `
grid-area: divider;
height: 100%;
width: 1px;
background-color: var(--n-calendar-divider-color);
`), cB('date-panel-footer', `
border-top: 1px solid var(--n-panel-action-divider-color);
padding: var(--n-panel-extra-footer-padding);
`), cB('date-panel-actions', `
flex: 1;
padding: var(--n-panel-action-padding);
display: flex;
align-items: center;
justify-content: space-between;
border-top: 1px solid var(--n-panel-action-divider-color);
`, [cE('prefix, suffix', `
display: flex;
margin-bottom: -8px;
`), cE('suffix', `
align-self: flex-end;
`), cE('prefix', `
flex-wrap: wrap;
`), cB('button', `
margin-bottom: 8px;
`, [c('&:not(:last-child)', `
margin-right: 8px;
`)])])]), c('[data-n-date].transition-disabled', {
transition: 'none !important'
}, [c('&::before, &::after', {
transition: 'none !important'
})])]);