match-components.test.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import { run, html, css, defaults } from './util/run'
  2. it('should be possible to matchComponents', () => {
  3. let config = {
  4. content: [
  5. {
  6. raw: html`<div class="card-[#0088cc] hover:card-[#f0f]">
  7. <div class="card-header font-bold"></div>
  8. <div class="shadow"></div>
  9. <div class="card-footer text-center"></div>
  10. </div>`,
  11. },
  12. ],
  13. corePlugins: {
  14. preflight: false,
  15. },
  16. plugins: [
  17. function ({ matchComponents }) {
  18. matchComponents({
  19. card: (value) => {
  20. return [
  21. { color: value },
  22. {
  23. '.card-header': {
  24. borderTopWidth: 3,
  25. borderTopColor: value,
  26. },
  27. },
  28. {
  29. '.card-footer': {
  30. borderBottomWidth: 3,
  31. borderBottomColor: value,
  32. },
  33. },
  34. ]
  35. },
  36. })
  37. },
  38. ],
  39. }
  40. return run('@tailwind base; @tailwind components; @tailwind utilities', config).then((result) => {
  41. return expect(result.css).toMatchFormattedCss(css`
  42. ${defaults}
  43. .card-\[\#0088cc\] {
  44. color: #08c;
  45. }
  46. .card-\[\#0088cc\] .card-header {
  47. border-top-width: 3px;
  48. border-top-color: #08c;
  49. }
  50. .card-\[\#0088cc\] .card-footer {
  51. border-bottom-width: 3px;
  52. border-bottom-color: #08c;
  53. }
  54. .text-center {
  55. text-align: center;
  56. }
  57. .font-bold {
  58. font-weight: 700;
  59. }
  60. .shadow {
  61. --tw-shadow: 0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;
  62. --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color),
  63. 0 1px 2px -1px var(--tw-shadow-color);
  64. box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000),
  65. var(--tw-shadow);
  66. }
  67. .hover\:card-\[\#f0f\]:hover {
  68. color: #f0f;
  69. }
  70. .hover\:card-\[\#f0f\]:hover .card-header {
  71. border-top-width: 3px;
  72. border-top-color: #f0f;
  73. }
  74. .hover\:card-\[\#f0f\]:hover .card-footer {
  75. border-bottom-width: 3px;
  76. border-bottom-color: #f0f;
  77. }
  78. `)
  79. })
  80. })