UNPKG

@porsche-design-system/components-js

Version:

Porsche Design System is a component library designed to help developers create the best experience for software or services distributed by Dr. Ing. h.c. F. Porsche AG.

148 lines (128 loc) 5.89 kB
'use strict'; var agGridCommunity = require('ag-grid-community'); var styles = require('../styles.cjs'); var themeMode = require('../types/theme-mode.cjs'); const checkboxCheckedShapeImage = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m20.22,7.47l-1.47-1.42-9.26,9.02-4.24-4.15-1.47,1.42,5.71,5.6,10.73-10.47Z"/></svg>`; const checkboxIndeterminateShapeImage = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m20,11v2H4v-2h16Z"/></svg>`; const radioCheckedShapeImage = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><circle cx="12" cy="12" r="6"/></svg>`; const checkboxStyle = agGridCommunity.createPart({ feature: 'checkboxStyle', params: { checkboxUncheckedBackgroundColor: { ref: 'backgroundColor' }, checkboxCheckedShapeColor: { ref: 'backgroundColor' }, checkboxCheckedShapeImage: { svg: checkboxCheckedShapeImage }, checkboxIndeterminateShapeImage: { svg: checkboxIndeterminateShapeImage }, radioCheckedShapeImage: { svg: radioCheckedShapeImage }, checkboxCheckedBackgroundColor: styles.themeLightPrimary, checkboxCheckedBorderColor: styles.themeLightPrimary, checkboxUncheckedBorderColor: styles.themeLightContrastMedium, checkboxIndeterminateBorderColor: styles.themeLightContrastMedium, checkboxIndeterminateBackgroundColor: styles.themeLightBackgroundBase, checkboxIndeterminateShapeColor: styles.themeLightPrimary, checkboxUncheckedHoverBorderColor: styles.themeLightPrimary, checkboxCheckedHoverBorderColor: styles.themeLightContrastHigh, checkboxCheckedHoverBackgroundColor: styles.themeLightContrastHigh, checkboxDisabledColor: styles.themeLightStateDisabled, }, modeParams: { [themeMode.pdsThemeModeDark]: { checkboxUncheckedBackgroundColor: { ref: 'backgroundColor' }, checkboxCheckedShapeColor: { ref: 'backgroundColor' }, checkboxCheckedShapeImage: { svg: checkboxCheckedShapeImage }, checkboxIndeterminateShapeImage: { svg: checkboxIndeterminateShapeImage }, radioCheckedShapeImage: { svg: radioCheckedShapeImage }, checkboxCheckedBackgroundColor: styles.themeDarkPrimary, checkboxCheckedBorderColor: styles.themeDarkPrimary, checkboxUncheckedBorderColor: styles.themeDarkContrastMedium, checkboxIndeterminateBorderColor: styles.themeDarkContrastMedium, checkboxIndeterminateBackgroundColor: styles.themeDarkBackgroundBase, checkboxIndeterminateShapeColor: styles.themeDarkPrimary, checkboxUncheckedHoverBorderColor: styles.themeDarkPrimary, checkboxCheckedHoverBorderColor: styles.themeDarkContrastHigh, checkboxCheckedHoverBackgroundColor: styles.themeDarkContrastHigh, checkboxDisabledColor: styles.themeDarkStateDisabled, }, }, css: ` .ag-checkbox-input-wrapper, .ag-radio-button-input-wrapper { flex: none; position: relative; width: var(--ag-icon-size); height: var(--ag-icon-size); background-color: var(--ag-checkbox-unchecked-background-color); border: solid var(--ag-checkbox-border-width) var(--ag-checkbox-unchecked-border-color); :where(input) { cursor: pointer; appearance: none; opacity: 0; margin: 0; display: block; width: 100%; height: 100%; } &::after { content: ''; position: absolute; inset: 0; display: block; mask-position: center; mask-repeat: no-repeat; pointer-events: none; } &.ag-checked { background-color: var(--ag-checkbox-checked-background-color); border-color: var(--ag-checkbox-checked-border-color); &::after { background-color: var(--ag-checkbox-checked-shape-color); } } &:focus-within, &:active { box-shadow: var(--ag-focus-shadow); } &.ag-disabled { opacity: 1; filter: unset; border-color: var(--ag-checkbox-disabled-color); &.ag-checked { background-color: var(--ag-checkbox-disabled-color); } &:hover input { cursor: not-allowed; } } &:not(.ag-disabled):hover { border-color: var(--ag-checkbox-unchecked-hover-border-color) !important; } &.ag-checked:not(.ag-disabled):hover { border-color: var(--ag-checkbox-checked-hover-border-color) !important; background-color: var(--ag-checkbox-checked-hover-background-color) !important; } } .ag-checkbox-input-wrapper { border-radius: var(--ag-checkbox-border-radius); &.ag-checked::after { mask-image: var(--ag-checkbox-checked-shape-image); } &.ag-indeterminate { background-color: var(--ag-checkbox-indeterminate-background-color); border-color: var(--ag-checkbox-indeterminate-border-color); &::after { background-color: var(--ag-checkbox-indeterminate-shape-color); mask-image: var(--ag-checkbox-indeterminate-shape-image); } } } .ag-radio-button-input-wrapper { border-radius: 50%; &.ag-checked::after { mask-image: var(--ag-radio-checked-shape-image); } } `, }); exports.checkboxCheckedShapeImage = checkboxCheckedShapeImage; exports.checkboxIndeterminateShapeImage = checkboxIndeterminateShapeImage; exports.checkboxStyle = checkboxStyle; exports.radioCheckedShapeImage = radioCheckedShapeImage;