@ulu/frontend 0.1.0-beta.21 → 0.1.0-beta.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/ulu-frontend.min.css +1 -1
  3. package/docs-dev/changelog/index.html +82 -0
  4. package/docs-dev/demos/accordion/index.html +60 -0
  5. package/docs-dev/demos/button/index.html +60 -0
  6. package/docs-dev/demos/callout/index.html +60 -0
  7. package/docs-dev/demos/captioned-figure/index.html +60 -0
  8. package/docs-dev/demos/card/index.html +60 -0
  9. package/docs-dev/demos/css-icons/index.html +60 -0
  10. package/docs-dev/demos/data-grid/index.html +60 -0
  11. package/docs-dev/demos/data-table/index.html +85 -25
  12. package/docs-dev/demos/details-group/index.html +60 -0
  13. package/docs-dev/demos/file-save/index.html +60 -0
  14. package/docs-dev/demos/flipcard/index.html +60 -0
  15. package/docs-dev/demos/form-theme/index.html +60 -0
  16. package/docs-dev/demos/index.html +60 -0
  17. package/docs-dev/demos/list-inline/index.html +60 -0
  18. package/docs-dev/demos/list-lines/index.html +60 -0
  19. package/docs-dev/demos/menu-stack/index.html +60 -0
  20. package/docs-dev/demos/modals/index.html +60 -0
  21. package/docs-dev/demos/nav-strip/index.html +60 -0
  22. package/docs-dev/demos/overlay-section/index.html +60 -0
  23. package/docs-dev/demos/popovers/index.html +60 -0
  24. package/docs-dev/demos/print/index.html +60 -0
  25. package/docs-dev/demos/pull-quote/index.html +60 -0
  26. package/docs-dev/demos/rule/index.html +60 -0
  27. package/docs-dev/demos/scrollpoints/index.html +60 -0
  28. package/docs-dev/demos/spoke-spinner/index.html +60 -0
  29. package/docs-dev/demos/sticky-list/index.html +5043 -0
  30. package/docs-dev/demos/tabs/index.html +60 -0
  31. package/docs-dev/demos/tag/index.html +60 -0
  32. package/docs-dev/demos/theme-toggle/index.html +60 -0
  33. package/docs-dev/demos/tiles/index.html +60 -0
  34. package/docs-dev/demos/tooltip/index.html +60 -0
  35. package/docs-dev/guide/building-stylesheet/index.html +60 -0
  36. package/docs-dev/guide/developing-ulu-scss-module/index.html +60 -0
  37. package/docs-dev/guide/index.html +60 -0
  38. package/docs-dev/index.html +60 -0
  39. package/docs-dev/javascript/events/index.html +60 -0
  40. package/docs-dev/javascript/index.html +60 -0
  41. package/docs-dev/javascript/settings/index.html +60 -0
  42. package/docs-dev/javascript/ui-breakpoints/index.html +60 -0
  43. package/docs-dev/javascript/ui-collapsible/index.html +60 -0
  44. package/docs-dev/javascript/ui-details-group/index.html +60 -0
  45. package/docs-dev/javascript/ui-dialog/index.html +60 -0
  46. package/docs-dev/javascript/ui-flipcard/index.html +60 -0
  47. package/docs-dev/javascript/ui-grid/index.html +60 -0
  48. package/docs-dev/javascript/ui-modal-builder/index.html +60 -0
  49. package/docs-dev/javascript/ui-overflow-scroller/index.html +60 -0
  50. package/docs-dev/javascript/ui-overflow-scroller-pager/index.html +60 -0
  51. package/docs-dev/javascript/ui-page/index.html +60 -0
  52. package/docs-dev/javascript/ui-popover/index.html +60 -0
  53. package/docs-dev/javascript/ui-print/index.html +60 -0
  54. package/docs-dev/javascript/ui-print-details/index.html +60 -0
  55. package/docs-dev/javascript/ui-programmatic-modal/index.html +60 -0
  56. package/docs-dev/javascript/ui-proxy-click/index.html +60 -0
  57. package/docs-dev/javascript/ui-resizer/index.html +60 -0
  58. package/docs-dev/javascript/ui-scroll-slider/index.html +60 -0
  59. package/docs-dev/javascript/ui-scrollpoint/index.html +60 -0
  60. package/docs-dev/javascript/ui-slider/index.html +60 -0
  61. package/docs-dev/javascript/ui-tabs/index.html +60 -0
  62. package/docs-dev/javascript/ui-theme-toggle/index.html +60 -0
  63. package/docs-dev/javascript/ui-tooltip/index.html +60 -0
  64. package/docs-dev/javascript/utils-class-logger/index.html +60 -0
  65. package/docs-dev/javascript/utils-dom/index.html +60 -0
  66. package/docs-dev/javascript/utils-file-save/index.html +60 -0
  67. package/docs-dev/javascript/utils-floating-ui/index.html +60 -0
  68. package/docs-dev/javascript/utils-id/index.html +60 -0
  69. package/docs-dev/javascript/utils-pause-youtube-video/index.html +60 -0
  70. package/docs-dev/sass/base/color/index.html +60 -0
  71. package/docs-dev/sass/base/elements/index.html +60 -0
  72. package/docs-dev/sass/base/index/index.html +60 -0
  73. package/docs-dev/sass/base/index.html +60 -0
  74. package/docs-dev/sass/base/keyframes/index.html +60 -0
  75. package/docs-dev/sass/base/layout/index.html +60 -0
  76. package/docs-dev/sass/base/normalize/index.html +60 -0
  77. package/docs-dev/sass/base/print/index.html +60 -0
  78. package/docs-dev/sass/base/root/index.html +60 -0
  79. package/docs-dev/sass/base/typography/index.html +60 -0
  80. package/docs-dev/sass/components/accordion/index.html +60 -0
  81. package/docs-dev/sass/components/adaptive-spacing/index.html +60 -0
  82. package/docs-dev/sass/components/badge/index.html +60 -0
  83. package/docs-dev/sass/components/basic-hero/index.html +60 -0
  84. package/docs-dev/sass/components/button/index.html +60 -0
  85. package/docs-dev/sass/components/button-verbose/index.html +60 -0
  86. package/docs-dev/sass/components/callout/index.html +60 -0
  87. package/docs-dev/sass/components/captioned-figure/index.html +60 -0
  88. package/docs-dev/sass/components/card/index.html +60 -0
  89. package/docs-dev/sass/components/card-grid/index.html +60 -0
  90. package/docs-dev/sass/components/css-icon/index.html +60 -0
  91. package/docs-dev/sass/components/data-grid/index.html +60 -0
  92. package/docs-dev/sass/components/data-table/index.html +60 -0
  93. package/docs-dev/sass/components/fill-context/index.html +60 -0
  94. package/docs-dev/sass/components/flipcard/index.html +101 -10
  95. package/docs-dev/sass/components/flipcard-grid/index.html +60 -0
  96. package/docs-dev/sass/components/form-theme/index.html +60 -0
  97. package/docs-dev/sass/components/hero/index.html +60 -0
  98. package/docs-dev/sass/components/horizontal-rule/index.html +60 -0
  99. package/docs-dev/sass/components/image-grid/index.html +60 -0
  100. package/docs-dev/sass/components/index/index.html +71 -10
  101. package/docs-dev/sass/components/index.html +60 -0
  102. package/docs-dev/sass/components/links/index.html +60 -0
  103. package/docs-dev/sass/components/list-inline/index.html +60 -0
  104. package/docs-dev/sass/components/list-lines/index.html +60 -0
  105. package/docs-dev/sass/components/list-ordered/index.html +60 -0
  106. package/docs-dev/sass/components/list-unordered/index.html +60 -0
  107. package/docs-dev/sass/components/menu-stack/index.html +60 -0
  108. package/docs-dev/sass/components/modal/index.html +60 -0
  109. package/docs-dev/sass/components/nav-strip/index.html +60 -0
  110. package/docs-dev/sass/components/overlay-section/index.html +60 -0
  111. package/docs-dev/sass/components/pager/index.html +60 -0
  112. package/docs-dev/sass/components/placeholder-block/index.html +60 -0
  113. package/docs-dev/sass/components/popover/index.html +60 -0
  114. package/docs-dev/sass/components/pull-quote/index.html +60 -0
  115. package/docs-dev/sass/components/ratio-box/index.html +60 -0
  116. package/docs-dev/sass/components/rule/index.html +60 -0
  117. package/docs-dev/sass/components/scroll-slider/index.html +60 -0
  118. package/docs-dev/sass/components/skip-link/index.html +60 -0
  119. package/docs-dev/sass/components/slider/index.html +60 -0
  120. package/docs-dev/sass/components/spoke-spinner/index.html +60 -0
  121. package/docs-dev/sass/components/sticky-list/index.html +5423 -0
  122. package/docs-dev/sass/components/tabs/index.html +60 -0
  123. package/docs-dev/sass/components/tag/index.html +60 -0
  124. package/docs-dev/sass/components/tile-button/index.html +60 -0
  125. package/docs-dev/sass/components/tile-grid/index.html +60 -0
  126. package/docs-dev/sass/components/tile-grid-overlay/index.html +60 -0
  127. package/docs-dev/sass/components/vignette/index.html +60 -0
  128. package/docs-dev/sass/components/wysiwyg/index.html +60 -0
  129. package/docs-dev/sass/core/breakpoint/index.html +60 -0
  130. package/docs-dev/sass/core/button/index.html +60 -0
  131. package/docs-dev/sass/core/color/index.html +60 -0
  132. package/docs-dev/sass/core/cssvar/index.html +60 -0
  133. package/docs-dev/sass/core/element/index.html +60 -0
  134. package/docs-dev/sass/core/index.html +60 -0
  135. package/docs-dev/sass/core/layout/index.html +60 -0
  136. package/docs-dev/sass/core/path/index.html +60 -0
  137. package/docs-dev/sass/core/selector/index.html +60 -0
  138. package/docs-dev/sass/core/typography/index.html +60 -0
  139. package/docs-dev/sass/core/units/index.html +60 -0
  140. package/docs-dev/sass/core/utils/index.html +61 -1
  141. package/docs-dev/sass/helpers/color/index.html +60 -0
  142. package/docs-dev/sass/helpers/display/index.html +60 -0
  143. package/docs-dev/sass/helpers/index/index.html +60 -0
  144. package/docs-dev/sass/helpers/index.html +60 -0
  145. package/docs-dev/sass/helpers/print/index.html +60 -0
  146. package/docs-dev/sass/helpers/typography/index.html +60 -0
  147. package/docs-dev/sass/helpers/units/index.html +60 -0
  148. package/docs-dev/sass/helpers/utilities/index.html +60 -0
  149. package/docs-dev/sass/index.html +60 -0
  150. package/package.json +1 -1
  151. package/scss/_utils.scss +1 -1
  152. package/scss/components/_flipcard.scss +7 -2
  153. package/scss/components/_index.scss +6 -0
  154. package/scss/components/_sticky-list.scss +207 -0
@@ -586,6 +586,21 @@
586
586
  </li>
587
587
 
588
588
 
589
+ <li class="nav-tree__item ">
590
+
591
+ <a class="nav-tree__link " href="/frontend/demos/sticky-list/">
592
+
593
+
594
+ <span class="nav-tree__text">
595
+ Sticky List
596
+ </span>
597
+
598
+ </a>
599
+
600
+
601
+ </li>
602
+
603
+
589
604
  <li class="nav-tree__item ">
590
605
 
591
606
  <a class="nav-tree__link " href="/frontend/demos/tabs/">
@@ -1725,6 +1740,21 @@
1725
1740
  </li>
1726
1741
 
1727
1742
 
1743
+ <li class="nav-tree__item ">
1744
+
1745
+ <a class="nav-tree__link " href="/frontend/sass/components/sticky-list/">
1746
+
1747
+
1748
+ <span class="nav-tree__text">
1749
+ Sticky-list
1750
+ </span>
1751
+
1752
+ </a>
1753
+
1754
+
1755
+ </li>
1756
+
1757
+
1728
1758
  <li class="nav-tree__item ">
1729
1759
 
1730
1760
  <a class="nav-tree__link " href="/frontend/sass/components/tabs/">
@@ -3012,6 +3042,21 @@
3012
3042
  </li>
3013
3043
 
3014
3044
 
3045
+ <li class="nav-tree__item ">
3046
+
3047
+ <a class="nav-tree__link " href="/frontend/demos/sticky-list/">
3048
+
3049
+
3050
+ <span class="nav-tree__text">
3051
+ Sticky List
3052
+ </span>
3053
+
3054
+ </a>
3055
+
3056
+
3057
+ </li>
3058
+
3059
+
3015
3060
  <li class="nav-tree__item ">
3016
3061
 
3017
3062
  <a class="nav-tree__link " href="/frontend/demos/tabs/">
@@ -4151,6 +4196,21 @@
4151
4196
  </li>
4152
4197
 
4153
4198
 
4199
+ <li class="nav-tree__item ">
4200
+
4201
+ <a class="nav-tree__link " href="/frontend/sass/components/sticky-list/">
4202
+
4203
+
4204
+ <span class="nav-tree__text">
4205
+ Sticky-list
4206
+ </span>
4207
+
4208
+ </a>
4209
+
4210
+
4211
+ </li>
4212
+
4213
+
4154
4214
  <li class="nav-tree__item ">
4155
4215
 
4156
4216
  <a class="nav-tree__link " href="/frontend/sass/components/tabs/">
@@ -586,6 +586,21 @@
586
586
  </li>
587
587
 
588
588
 
589
+ <li class="nav-tree__item ">
590
+
591
+ <a class="nav-tree__link " href="/frontend/demos/sticky-list/">
592
+
593
+
594
+ <span class="nav-tree__text">
595
+ Sticky List
596
+ </span>
597
+
598
+ </a>
599
+
600
+
601
+ </li>
602
+
603
+
589
604
  <li class="nav-tree__item ">
590
605
 
591
606
  <a class="nav-tree__link " href="/frontend/demos/tabs/">
@@ -1725,6 +1740,21 @@
1725
1740
  </li>
1726
1741
 
1727
1742
 
1743
+ <li class="nav-tree__item ">
1744
+
1745
+ <a class="nav-tree__link " href="/frontend/sass/components/sticky-list/">
1746
+
1747
+
1748
+ <span class="nav-tree__text">
1749
+ Sticky-list
1750
+ </span>
1751
+
1752
+ </a>
1753
+
1754
+
1755
+ </li>
1756
+
1757
+
1728
1758
  <li class="nav-tree__item ">
1729
1759
 
1730
1760
  <a class="nav-tree__link " href="/frontend/sass/components/tabs/">
@@ -3012,6 +3042,21 @@
3012
3042
  </li>
3013
3043
 
3014
3044
 
3045
+ <li class="nav-tree__item ">
3046
+
3047
+ <a class="nav-tree__link " href="/frontend/demos/sticky-list/">
3048
+
3049
+
3050
+ <span class="nav-tree__text">
3051
+ Sticky List
3052
+ </span>
3053
+
3054
+ </a>
3055
+
3056
+
3057
+ </li>
3058
+
3059
+
3015
3060
  <li class="nav-tree__item ">
3016
3061
 
3017
3062
  <a class="nav-tree__link " href="/frontend/demos/tabs/">
@@ -4151,6 +4196,21 @@
4151
4196
  </li>
4152
4197
 
4153
4198
 
4199
+ <li class="nav-tree__item ">
4200
+
4201
+ <a class="nav-tree__link " href="/frontend/sass/components/sticky-list/">
4202
+
4203
+
4204
+ <span class="nav-tree__text">
4205
+ Sticky-list
4206
+ </span>
4207
+
4208
+ </a>
4209
+
4210
+
4211
+ </li>
4212
+
4213
+
4154
4214
  <li class="nav-tree__item ">
4155
4215
 
4156
4216
  <a class="nav-tree__link " href="/frontend/sass/components/tabs/">
@@ -586,6 +586,21 @@
586
586
  </li>
587
587
 
588
588
 
589
+ <li class="nav-tree__item ">
590
+
591
+ <a class="nav-tree__link " href="/frontend/demos/sticky-list/">
592
+
593
+
594
+ <span class="nav-tree__text">
595
+ Sticky List
596
+ </span>
597
+
598
+ </a>
599
+
600
+
601
+ </li>
602
+
603
+
589
604
  <li class="nav-tree__item ">
590
605
 
591
606
  <a class="nav-tree__link " href="/frontend/demos/tabs/">
@@ -1725,6 +1740,21 @@
1725
1740
  </li>
1726
1741
 
1727
1742
 
1743
+ <li class="nav-tree__item ">
1744
+
1745
+ <a class="nav-tree__link " href="/frontend/sass/components/sticky-list/">
1746
+
1747
+
1748
+ <span class="nav-tree__text">
1749
+ Sticky-list
1750
+ </span>
1751
+
1752
+ </a>
1753
+
1754
+
1755
+ </li>
1756
+
1757
+
1728
1758
  <li class="nav-tree__item ">
1729
1759
 
1730
1760
  <a class="nav-tree__link " href="/frontend/sass/components/tabs/">
@@ -3012,6 +3042,21 @@
3012
3042
  </li>
3013
3043
 
3014
3044
 
3045
+ <li class="nav-tree__item ">
3046
+
3047
+ <a class="nav-tree__link " href="/frontend/demos/sticky-list/">
3048
+
3049
+
3050
+ <span class="nav-tree__text">
3051
+ Sticky List
3052
+ </span>
3053
+
3054
+ </a>
3055
+
3056
+
3057
+ </li>
3058
+
3059
+
3015
3060
  <li class="nav-tree__item ">
3016
3061
 
3017
3062
  <a class="nav-tree__link " href="/frontend/demos/tabs/">
@@ -4151,6 +4196,21 @@
4151
4196
  </li>
4152
4197
 
4153
4198
 
4199
+ <li class="nav-tree__item ">
4200
+
4201
+ <a class="nav-tree__link " href="/frontend/sass/components/sticky-list/">
4202
+
4203
+
4204
+ <span class="nav-tree__text">
4205
+ Sticky-list
4206
+ </span>
4207
+
4208
+ </a>
4209
+
4210
+
4211
+ </li>
4212
+
4213
+
4154
4214
  <li class="nav-tree__item ">
4155
4215
 
4156
4216
  <a class="nav-tree__link " href="/frontend/sass/components/tabs/">
@@ -586,6 +586,21 @@
586
586
  </li>
587
587
 
588
588
 
589
+ <li class="nav-tree__item ">
590
+
591
+ <a class="nav-tree__link " href="/frontend/demos/sticky-list/">
592
+
593
+
594
+ <span class="nav-tree__text">
595
+ Sticky List
596
+ </span>
597
+
598
+ </a>
599
+
600
+
601
+ </li>
602
+
603
+
589
604
  <li class="nav-tree__item ">
590
605
 
591
606
  <a class="nav-tree__link " href="/frontend/demos/tabs/">
@@ -1725,6 +1740,21 @@
1725
1740
  </li>
1726
1741
 
1727
1742
 
1743
+ <li class="nav-tree__item ">
1744
+
1745
+ <a class="nav-tree__link " href="/frontend/sass/components/sticky-list/">
1746
+
1747
+
1748
+ <span class="nav-tree__text">
1749
+ Sticky-list
1750
+ </span>
1751
+
1752
+ </a>
1753
+
1754
+
1755
+ </li>
1756
+
1757
+
1728
1758
  <li class="nav-tree__item ">
1729
1759
 
1730
1760
  <a class="nav-tree__link " href="/frontend/sass/components/tabs/">
@@ -3012,6 +3042,21 @@
3012
3042
  </li>
3013
3043
 
3014
3044
 
3045
+ <li class="nav-tree__item ">
3046
+
3047
+ <a class="nav-tree__link " href="/frontend/demos/sticky-list/">
3048
+
3049
+
3050
+ <span class="nav-tree__text">
3051
+ Sticky List
3052
+ </span>
3053
+
3054
+ </a>
3055
+
3056
+
3057
+ </li>
3058
+
3059
+
3015
3060
  <li class="nav-tree__item ">
3016
3061
 
3017
3062
  <a class="nav-tree__link " href="/frontend/demos/tabs/">
@@ -4151,6 +4196,21 @@
4151
4196
  </li>
4152
4197
 
4153
4198
 
4199
+ <li class="nav-tree__item ">
4200
+
4201
+ <a class="nav-tree__link " href="/frontend/sass/components/sticky-list/">
4202
+
4203
+
4204
+ <span class="nav-tree__text">
4205
+ Sticky-list
4206
+ </span>
4207
+
4208
+ </a>
4209
+
4210
+
4211
+ </li>
4212
+
4213
+
4154
4214
  <li class="nav-tree__item ">
4155
4215
 
4156
4216
  <a class="nav-tree__link " href="/frontend/sass/components/tabs/">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ulu/frontend",
3
- "version": "0.1.0-beta.21",
3
+ "version": "0.1.0-beta.23",
4
4
  "description": "Modular Sass Theming Library",
5
5
  "browser": "js/index.js",
6
6
  "main": "index.js",
package/scss/_utils.scss CHANGED
@@ -20,7 +20,7 @@ $config: (
20
20
  "debug-maps": true,
21
21
  "file-header-comments": true,
22
22
  "responsive-change": 0.5vw,
23
- "pixel-em-base" : 16px
23
+ "pixel-em-base" : 16px,
24
24
  ) !default;
25
25
 
26
26
  /// Change modules $config
@@ -2,7 +2,7 @@
2
2
  ////
3
3
  /// @group flipcard
4
4
  ////
5
- /// Creates adaptive (changing at breakpoints)n between items (vertical/horizontal layout)
5
+ /// Flipcard (content revealed on backside of card after click)
6
6
 
7
7
  @use "sass:map";
8
8
  @use "../color";
@@ -32,7 +32,6 @@
32
32
  /// @prop {Color} title-color-image-hover [blue] Color of the front page text when using an image and hovered or focused.
33
33
  /// @prop {Boolean} bottom-shadow [true] Boolean that enables a bottom shadow to the image flipcard.
34
34
 
35
-
36
35
  $config: (
37
36
  "anim-delay" : 200ms,
38
37
  "anim-duration" : 430ms,
@@ -86,6 +85,12 @@ $config: (
86
85
  @return utils.require-map-get($config, $name, "flipcard [config]");
87
86
  }
88
87
 
88
+ /// Prints component styles
89
+ /// @demo flipcard
90
+ /// @example scss
91
+ /// @example
92
+ /// @include ulu.component-flipcard-styles();
93
+
89
94
  @mixin styles {
90
95
  $prefix: selector.class("flipcard");
91
96
 
@@ -38,6 +38,7 @@
38
38
  @forward "rule" as rule-*;
39
39
  @forward "scroll-slider" as scroll-slider-*;
40
40
  @forward "skip-link" as skip-link-*;
41
+ @forward "sticky-list" as sticky-list-*;
41
42
  @forward "slider" as slider-*;
42
43
  @forward "hero" as hero-*;
43
44
  @forward "tabs" as tabs-*;
@@ -88,6 +89,7 @@
88
89
  @use "rule";
89
90
  @use "scroll-slider";
90
91
  @use "skip-link";
92
+ @use "sticky-list";
91
93
  @use "slider";
92
94
  @use "hero";
93
95
  @use "tabs";
@@ -137,6 +139,7 @@ $all-includes: (
137
139
  "rule",
138
140
  "scroll-slider",
139
141
  "skip-link",
142
+ "sticky-list",
140
143
  "slider",
141
144
  "hero",
142
145
  "tabs",
@@ -295,6 +298,9 @@ $current-includes: $all-includes;
295
298
  @if (list.index($includes, "skip-link")) {
296
299
  @include skip-link.styles;
297
300
  }
301
+ @if (list.index($includes, "sticky-list")) {
302
+ @include sticky-list.styles;
303
+ }
298
304
  @if (list.index($includes, "slider")) {
299
305
  @include slider.styles;
300
306
  }
@@ -0,0 +1,207 @@
1
+
2
+ ////
3
+ /// @group sticky-list
4
+ ////
5
+ /// Sticky first column, sticky elements inside adjacent columns to first. (Sticky list with header)
6
+
7
+ @use "sass:map";
8
+ @use "sass:meta";
9
+ @use "sass:color" as sassColor;
10
+
11
+ @use "../color";
12
+ @use "../element";
13
+ @use "../breakpoint";
14
+ @use "../typography";
15
+ @use "../utils";
16
+ @use "../selector";
17
+
18
+ // Used for function fallback
19
+ $-fallbacks: (
20
+ "margin" : (
21
+ "function" : meta.get-function("get", false, "element"),
22
+ "property" : "margin"
23
+ ),
24
+ );
25
+
26
+ /// Module Settings
27
+ /// @type Map
28
+ /// @prop {Color} background-color [transparent] Background color for the entire slider section.
29
+ /// @prop {Number} margin [true] Margin on ends of component (defaults to element margin)
30
+ /// @prop {Number} mask-offset-bottom [55vh] The offset for the mask (on bottom)
31
+ /// @prop {Number} mask-offset-top [5rem] The offset for the mask (on top)
32
+ /// @prop {Number} sticky-top [45vh] When to stick
33
+ /// @prop {String} breakpoint ["medium"] The upward breakpoint that this is allowed to be sticky
34
+ /// @prop {String} type-size ["medium"] The typography size to use for title
35
+ /// @prop {Number} title-width [40%] The width of the title when this is displayed in columns
36
+ /// @prop {Number} title-min-width [8em] The min width for title when displayed in columns
37
+ /// @prop {CssValue} title-text-align [right] Text alignment for title when displayed in columns
38
+ /// @prop {Number} item-padding-x [0] Optional padding on the left/right for items
39
+ /// @prop {Number} gap [2rem] The gap between title and items when displayed in columns
40
+ /// @prop {Color} background-color [white] The background color used for the mask
41
+ /// @prop {List} background-contexts Adjust the background mask color by contextual selectors. Pass List of Maps with ("selector" [parent/contextual selector], "background-color", "item-padding-x" [optional])
42
+
43
+ $config: (
44
+ "margin" : true,
45
+ "mask-offset-bottom" : 55vh,
46
+ "mask-offset-top" : 5rem,
47
+ "sticky-top" : 45vh,
48
+ "breakpoint" : "medium",
49
+ "type-size" : "large",
50
+ "title-width" : 40%,
51
+ "title-min-width" : 8em,
52
+ "title-text-align" : right,
53
+ "item-padding-x" : 0,
54
+ "gap" : 2rem,
55
+ "background-color" : white,
56
+ "background-contexts" : (
57
+ (
58
+ "selector" : ".background-dark",
59
+ "background-color" : black,
60
+ "item-padding-x" : 1em
61
+ ),
62
+ )
63
+ );
64
+
65
+ /// Change modules $config
66
+ /// @param {Map} $changes Map of changes
67
+ /// @example scss
68
+ /// @include ulu.component-sticky-list-set(( "property" : value ));
69
+
70
+ @mixin set($changes) {
71
+ $config: map.merge($config, $changes) !global;
72
+ }
73
+
74
+ /// Set sizes map
75
+ /// @param {Map} $changes Map of changes
76
+ /// @param {String} $merge-mode Merge mode see utils.map-merge() [null|"deep"|"overwrite"]
77
+
78
+ @mixin set-sizes($changes, $merge-mode: null) {
79
+ $sizes: utils.map-merge($sizes, $changes, $merge-mode) !global;
80
+ }
81
+
82
+ /// Get a config option
83
+ /// @param {Map} $name Name of property
84
+ /// @example scss
85
+ /// @include ulu.component-sticky-list-get("property");
86
+
87
+ @function get($name) {
88
+ $value: utils.require-map-get($config, $name, "sticky-list [config]");
89
+ @return utils.function-fallback($name, $value, $-fallbacks);
90
+ }
91
+
92
+ /// Prints component styles
93
+ /// @demo sticky-list
94
+ /// @example scss
95
+ /// @include ulu.component-sticky-list-styles();
96
+ /// @example html {preview}
97
+ /// <div class="sticky-list">
98
+ /// <strong class="sticky-list__title">Example:</strong>
99
+ /// <ul class="sticky-list__list">
100
+ /// <li class="sticky-list__item">
101
+ /// Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras nec nisl magna
102
+ /// </li>
103
+ /// <li class="sticky-list__item">
104
+ /// Aenean sollicitudin mauris lectus, blandit suscipit lectus fringilla sed
105
+ /// </li>
106
+ /// <li class="sticky-list__item">
107
+ /// Suspendisse sollicitudin, justo sed efficitur tempor, risus
108
+ /// </li>
109
+ /// <li class="sticky-list__item">
110
+ /// Suspendisse sollicitudin, justo sed efficitur tempor, risus
111
+ /// </li>
112
+ /// <li class="sticky-list__item">
113
+ /// Suspendisse sollicitudin, justo sed efficitur tempor, risus
114
+ /// </li>
115
+ /// </ul>
116
+ /// </div>
117
+
118
+ @mixin styles {
119
+ $prefix: selector.class("sticky-list");
120
+ $mask-offset-top: get("mask-offset-top");
121
+ $mask-offset-bottom: get("mask-offset-bottom");
122
+ $type-size: get("type-size");
123
+ $sticky-top: get("sticky-top");
124
+
125
+ #{ $prefix } {
126
+ padding: get("margin") 0;
127
+ }
128
+ @include breakpoint.min(get("breakpoint")) {
129
+ #{ $prefix } {
130
+ display: flex;
131
+ align-items: flex-start;
132
+ gap: get("gap");
133
+ position: relative;
134
+ @if ($type-size and typography.has-size($type-size)) {
135
+ @include typography.size($type-size, $only-font-size: true);
136
+ } @else if ($type-size) {
137
+ @warn "Unable to find '#{$type-size}' typography size for title";
138
+ }
139
+ }
140
+ #{ $prefix }__title,
141
+ #{ $prefix } > :not(ul) {
142
+ display: block;
143
+ position: sticky;
144
+ top: $sticky-top;
145
+ flex-basis: get("title-width");
146
+ min-width: get("title-min-width");
147
+ padding-top: $mask-offset-top;
148
+ padding-bottom: $mask-offset-bottom;
149
+ text-align: get("title-text-align");
150
+ }
151
+ #{ $prefix }__list,
152
+ #{ $prefix } > ul {
153
+ list-style: none;
154
+ margin: 0;
155
+ display: flex;
156
+ flex-direction: column;
157
+ justify-content: space-between;
158
+ align-self: stretch;
159
+ }
160
+ #{ $prefix }__item,
161
+ #{ $prefix } > ul > li {
162
+ display: block;
163
+ position: sticky;
164
+ top: $sticky-top;
165
+ margin: 0 !important; // If in editor (to complicated for :not())
166
+ padding: $mask-offset-top get("item-padding-x") $mask-offset-bottom get("item-padding-x");
167
+ @include set-background(get("background-color"));
168
+ }
169
+ #{ $prefix }__item:first-child,
170
+ #{ $prefix } > ul > li:first-child {
171
+ margin-top: 0;
172
+ }
173
+ #{ $prefix }__item:last-child,
174
+ #{ $prefix } > ul > li:last-child {
175
+ margin-bottom: 0;
176
+ }
177
+ }
178
+
179
+ // Print out any contextual background styles
180
+ @each $props in get("background-contexts") {
181
+ @debug $props;
182
+ $selector: map.get($props, "selector");
183
+ $item-padding-x: map.get($props, "item-padding-x");
184
+ @include breakpoint.min(get("breakpoint")) {
185
+ #{ $selector } {
186
+ #{ $prefix }__item,
187
+ #{ $prefix } > ul > li {
188
+ @if ($item-padding-x) {
189
+ padding-left: $item-padding-x;
190
+ padding-right: $item-padding-x;
191
+ }
192
+ @include set-background(map.get($props, "background-color"));
193
+ }
194
+ }
195
+ }
196
+ }
197
+ }
198
+
199
+ /// Outputs background color mask CSS (gradient from transparent to original color)
200
+ /// @param {Color} $color The color to create the CSS for
201
+
202
+ @mixin set-background($color) {
203
+ $color: color.get($color);
204
+ $color-transparent: sassColor.change($color, $alpha: 0);
205
+ background-color: $color;
206
+ background: linear-gradient(180deg, $color-transparent 0%, $color get("mask-offset-top"));
207
+ }