@ulu/frontend 0.0.3 → 0.0.5

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 (246) hide show
  1. package/package.json +11 -10
  2. package/scss/_grid.scss +0 -1
  3. package/scss/_typography.scss +0 -1
  4. package/scss/helpers/_units.scss +1 -6
  5. package/scss/stylesheets/full.scss +1 -4
  6. package/trash/js-old/deprecated/doc-ready.js +0 -28
  7. package/trash/js-old/deprecated/jquery-prototypes.js +0 -309
  8. package/trash/js-old/deprecated/mini-collapsible-popper-positioning.js +0 -126
  9. package/trash/js-old/deprecated/mini-collapsible.js +0 -607
  10. package/trash/js-old/deprecated/script-loader.js +0 -60
  11. package/trash/js-old/events/index.js +0 -42
  12. package/trash/js-old/helpers/css-breakpoint.js +0 -247
  13. package/trash/js-old/helpers/file-save.js +0 -48
  14. package/trash/js-old/helpers/node-data-manager.js +0 -74
  15. package/trash/js-old/helpers/pause-youtube-video.js +0 -42
  16. package/trash/js-old/index.js +0 -15
  17. package/trash/js-old/polyfills/element-closest.js +0 -17
  18. package/trash/js-old/ui/flipcard.js +0 -202
  19. package/trash/js-old/ui/grid.js +0 -67
  20. package/trash/js-old/ui/modals.js +0 -219
  21. package/trash/js-old/ui/programmatic-modal.js +0 -91
  22. package/trash/js-old/ui/resizer.js +0 -60
  23. package/trash/js-old/ui/slider.js +0 -469
  24. package/trash/js-old/ui/tabs.js +0 -109
  25. package/trash/js-old/ui/tooltip.js +0 -82
  26. package/trash/js-old/utils/array.js +0 -28
  27. package/trash/js-old/utils/dom.js +0 -122
  28. package/trash/js-old/utils/logger.js +0 -69
  29. package/trash/js-old/utils/object.js +0 -22
  30. package/trash/js-old/utils/performance.js +0 -43
  31. package/trash/js-old/utils/regex.js +0 -10
  32. package/trash/js-old/utils/string.js +0 -107
  33. package/trash/js-old/waypoints/README.md +0 -3
  34. package/trash/js-old/waypoints/anchor-menu.js +0 -76
  35. package/trash/js-old/waypoints/element-waypoint.js +0 -75
  36. package/trash/js-old/waypoints/examples/page-link-menu.md +0 -106
  37. package/trash/js-old/waypoints/state-in-attribute.js +0 -32
  38. package/trash/js-old-230729/deprecated/doc-ready.js +0 -28
  39. package/trash/js-old-230729/deprecated/jquery-prototypes.js +0 -309
  40. package/trash/js-old-230729/deprecated/mini-collapsible-popper-positioning.js +0 -126
  41. package/trash/js-old-230729/deprecated/mini-collapsible.js +0 -607
  42. package/trash/js-old-230729/deprecated/script-loader.js +0 -60
  43. package/trash/js-old-230729/events/index.js +0 -42
  44. package/trash/js-old-230729/helpers/css-breakpoint.js +0 -247
  45. package/trash/js-old-230729/helpers/file-save.js +0 -48
  46. package/trash/js-old-230729/helpers/node-data-manager.js +0 -74
  47. package/trash/js-old-230729/helpers/pause-youtube-video.js +0 -42
  48. package/trash/js-old-230729/helpers/scrollbar-width-property.js +0 -10
  49. package/trash/js-old-230729/index.js +0 -15
  50. package/trash/js-old-230729/polyfills/element-closest.js +0 -17
  51. package/trash/js-old-230729/ui/flipcard.js +0 -202
  52. package/trash/js-old-230729/ui/grid.js +0 -67
  53. package/trash/js-old-230729/ui/modals.js +0 -219
  54. package/trash/js-old-230729/ui/overflow-scroller-pager.js +0 -58
  55. package/trash/js-old-230729/ui/overflow-scroller.js +0 -160
  56. package/trash/js-old-230729/ui/programmatic-modal.js +0 -91
  57. package/trash/js-old-230729/ui/resizer.js +0 -60
  58. package/trash/js-old-230729/ui/slider.js +0 -468
  59. package/trash/js-old-230729/ui/tabs.js +0 -109
  60. package/trash/js-old-230729/ui/tooltip.js +0 -82
  61. package/trash/js-old-230729/utils/array.js +0 -28
  62. package/trash/js-old-230729/utils/dom.js +0 -122
  63. package/trash/js-old-230729/utils/logger.js +0 -69
  64. package/trash/js-old-230729/utils/object.js +0 -22
  65. package/trash/js-old-230729/utils/performance.js +0 -43
  66. package/trash/js-old-230729/utils/regex.js +0 -10
  67. package/trash/js-old-230729/utils/string.js +0 -107
  68. package/trash/js-old-230729/waypoints/README.md +0 -3
  69. package/trash/js-old-230729/waypoints/anchor-menu.js +0 -76
  70. package/trash/js-old-230729/waypoints/element-waypoint.js +0 -75
  71. package/trash/js-old-230729/waypoints/examples/page-link-menu.md +0 -106
  72. package/trash/js-old-230729/waypoints/state-in-attribute.js +0 -32
  73. package/trash/logo-1.svg +0 -13
  74. package/trash/logo.svg +0 -16
  75. package/trash/scss-before-cqc-update/README.md +0 -58
  76. package/trash/scss-before-cqc-update/_breakpoint.scss +0 -190
  77. package/trash/scss-before-cqc-update/_button.scss +0 -229
  78. package/trash/scss-before-cqc-update/_calculate.scss +0 -65
  79. package/trash/scss-before-cqc-update/_color.scss +0 -211
  80. package/trash/scss-before-cqc-update/_cssvar.scss +0 -116
  81. package/trash/scss-before-cqc-update/_element.scss +0 -275
  82. package/trash/scss-before-cqc-update/_index.scss +0 -29
  83. package/trash/scss-before-cqc-update/_layout.scss +0 -247
  84. package/trash/scss-before-cqc-update/_path.scss +0 -59
  85. package/trash/scss-before-cqc-update/_selector.scss +0 -82
  86. package/trash/scss-before-cqc-update/_typography.scss +0 -322
  87. package/trash/scss-before-cqc-update/_units.scss +0 -48
  88. package/trash/scss-before-cqc-update/_utility.scss +0 -13
  89. package/trash/scss-before-cqc-update/_utils.scss +0 -211
  90. package/trash/scss-before-cqc-update/base/_color.scss +0 -14
  91. package/trash/scss-before-cqc-update/base/_elements.scss +0 -189
  92. package/trash/scss-before-cqc-update/base/_index.scss +0 -63
  93. package/trash/scss-before-cqc-update/base/_keyframes.scss +0 -74
  94. package/trash/scss-before-cqc-update/base/_layout.scss +0 -88
  95. package/trash/scss-before-cqc-update/base/_normalize.scss +0 -316
  96. package/trash/scss-before-cqc-update/base/_typography.scss +0 -42
  97. package/trash/scss-before-cqc-update/components/README.md +0 -5
  98. package/trash/scss-before-cqc-update/components/README.todos +0 -15
  99. package/trash/scss-before-cqc-update/components/_button.scss +0 -96
  100. package/trash/scss-before-cqc-update/components/_grid.scss +0 -671
  101. package/trash/scss-before-cqc-update/components/_index.scss +0 -70
  102. package/trash/scss-before-cqc-update/components/_links.scss +0 -35
  103. package/trash/scss-before-cqc-update/components/_list-lines.scss +0 -74
  104. package/trash/scss-before-cqc-update/components/_list-ordered.scss +0 -17
  105. package/trash/scss-before-cqc-update/components/_list-unordered.scss +0 -22
  106. package/trash/scss-before-cqc-update/components/_rule.scss +0 -94
  107. package/trash/scss-before-cqc-update/helpers/_color.scss +0 -15
  108. package/trash/scss-before-cqc-update/helpers/_display.scss +0 -73
  109. package/trash/scss-before-cqc-update/helpers/_index.scss +0 -68
  110. package/trash/scss-before-cqc-update/helpers/_print.scss +0 -59
  111. package/trash/scss-before-cqc-update/helpers/_typography.scss +0 -73
  112. package/trash/scss-before-cqc-update/helpers/_units.scss +0 -79
  113. package/trash/scss-before-cqc-update/helpers/_utilities.scss +0 -88
  114. package/trash/scss-before-cqc-update/stylesheets/README.md +0 -3
  115. package/trash/scss-before-cqc-update/stylesheets/full.scss +0 -17
  116. package/trash/scss-old/README.md +0 -58
  117. package/trash/scss-old/_breakpoint.scss +0 -140
  118. package/trash/scss-old/_button.scss +0 -223
  119. package/trash/scss-old/_calculate.scss +0 -64
  120. package/trash/scss-old/_color.scss +0 -200
  121. package/trash/scss-old/_element.scss +0 -262
  122. package/trash/scss-old/_grid.scss +0 -558
  123. package/trash/scss-old/_index.scss +0 -25
  124. package/trash/scss-old/_layout.scss +0 -170
  125. package/trash/scss-old/_path.scss +0 -58
  126. package/trash/scss-old/_selector.scss +0 -81
  127. package/trash/scss-old/_typography.scss +0 -320
  128. package/trash/scss-old/_units.scss +0 -47
  129. package/trash/scss-old/_utility.scss +0 -12
  130. package/trash/scss-old/_utils.scss +0 -186
  131. package/trash/scss-old/base/_color.scss +0 -13
  132. package/trash/scss-old/base/_elements.scss +0 -183
  133. package/trash/scss-old/base/_index.scss +0 -62
  134. package/trash/scss-old/base/_keyframes.scss +0 -74
  135. package/trash/scss-old/base/_layout.scss +0 -81
  136. package/trash/scss-old/base/_normalize.scss +0 -316
  137. package/trash/scss-old/base/_typography.scss +0 -42
  138. package/trash/scss-old/components/README.md +0 -5
  139. package/trash/scss-old/components/README.todos +0 -15
  140. package/trash/scss-old/components/_button.scss +0 -74
  141. package/trash/scss-old/components/_index.scss +0 -63
  142. package/trash/scss-old/components/_links.scss +0 -34
  143. package/trash/scss-old/components/_list-lines.scss +0 -73
  144. package/trash/scss-old/components/_list-ordered.scss +0 -16
  145. package/trash/scss-old/components/_list-unordered.scss +0 -21
  146. package/trash/scss-old/components/_rule.scss +0 -84
  147. package/trash/scss-old/helpers/_color.scss +0 -14
  148. package/trash/scss-old/helpers/_display.scss +0 -68
  149. package/trash/scss-old/helpers/_index.scss +0 -67
  150. package/trash/scss-old/helpers/_print.scss +0 -59
  151. package/trash/scss-old/helpers/_typography.scss +0 -73
  152. package/trash/scss-old/helpers/_units.scss +0 -68
  153. package/trash/scss-old/helpers/_utilities.scss +0 -82
  154. package/trash/scss-old/packages/README.md +0 -3
  155. package/trash/scss-old/packages/everything.scss +0 -17
  156. package/trash/scss-old-2/README.md +0 -58
  157. package/trash/scss-old-2/_breakpoint.scss +0 -139
  158. package/trash/scss-old-2/_button.scss +0 -223
  159. package/trash/scss-old-2/_calculate.scss +0 -64
  160. package/trash/scss-old-2/_color.scss +0 -202
  161. package/trash/scss-old-2/_element.scss +0 -263
  162. package/trash/scss-old-2/_grid.scss +0 -558
  163. package/trash/scss-old-2/_index.scss +0 -25
  164. package/trash/scss-old-2/_layout.scss +0 -170
  165. package/trash/scss-old-2/_path.scss +0 -58
  166. package/trash/scss-old-2/_selector.scss +0 -81
  167. package/trash/scss-old-2/_typography.scss +0 -320
  168. package/trash/scss-old-2/_units.scss +0 -47
  169. package/trash/scss-old-2/_utility.scss +0 -12
  170. package/trash/scss-old-2/_utils.scss +0 -186
  171. package/trash/scss-old-2/base/_color.scss +0 -13
  172. package/trash/scss-old-2/base/_elements.scss +0 -182
  173. package/trash/scss-old-2/base/_index.scss +0 -62
  174. package/trash/scss-old-2/base/_keyframes.scss +0 -73
  175. package/trash/scss-old-2/base/_layout.scss +0 -83
  176. package/trash/scss-old-2/base/_normalize.scss +0 -315
  177. package/trash/scss-old-2/base/_typography.scss +0 -41
  178. package/trash/scss-old-2/components/README.md +0 -5
  179. package/trash/scss-old-2/components/README.todos +0 -15
  180. package/trash/scss-old-2/components/_button.scss +0 -95
  181. package/trash/scss-old-2/components/_index.scss +0 -63
  182. package/trash/scss-old-2/components/_links.scss +0 -33
  183. package/trash/scss-old-2/components/_list-lines.scss +0 -73
  184. package/trash/scss-old-2/components/_list-ordered.scss +0 -16
  185. package/trash/scss-old-2/components/_list-unordered.scss +0 -21
  186. package/trash/scss-old-2/components/_rule.scss +0 -84
  187. package/trash/scss-old-2/helpers/_color.scss +0 -14
  188. package/trash/scss-old-2/helpers/_display.scss +0 -67
  189. package/trash/scss-old-2/helpers/_index.scss +0 -67
  190. package/trash/scss-old-2/helpers/_print.scss +0 -58
  191. package/trash/scss-old-2/helpers/_typography.scss +0 -72
  192. package/trash/scss-old-2/helpers/_units.scss +0 -68
  193. package/trash/scss-old-2/helpers/_utilities.scss +0 -81
  194. package/trash/scss-old-2/packages/README.md +0 -3
  195. package/trash/scss-old-2/packages/everything.scss +0 -17
  196. package/trash/scss-old-230729/README.md +0 -58
  197. package/trash/scss-old-230729/_breakpoint.scss +0 -139
  198. package/trash/scss-old-230729/_button.scss +0 -223
  199. package/trash/scss-old-230729/_calculate.scss +0 -64
  200. package/trash/scss-old-230729/_color.scss +0 -202
  201. package/trash/scss-old-230729/_element.scss +0 -273
  202. package/trash/scss-old-230729/_grid.scss +0 -694
  203. package/trash/scss-old-230729/_index.scss +0 -25
  204. package/trash/scss-old-230729/_layout.scss +0 -193
  205. package/trash/scss-old-230729/_path.scss +0 -58
  206. package/trash/scss-old-230729/_selector.scss +0 -81
  207. package/trash/scss-old-230729/_typography.scss +0 -320
  208. package/trash/scss-old-230729/_units.scss +0 -47
  209. package/trash/scss-old-230729/_utility.scss +0 -12
  210. package/trash/scss-old-230729/_utils.scss +0 -186
  211. package/trash/scss-old-230729/base/_color.scss +0 -13
  212. package/trash/scss-old-230729/base/_elements.scss +0 -188
  213. package/trash/scss-old-230729/base/_index.scss +0 -62
  214. package/trash/scss-old-230729/base/_keyframes.scss +0 -73
  215. package/trash/scss-old-230729/base/_layout.scss +0 -83
  216. package/trash/scss-old-230729/base/_normalize.scss +0 -315
  217. package/trash/scss-old-230729/base/_typography.scss +0 -41
  218. package/trash/scss-old-230729/components/README.md +0 -5
  219. package/trash/scss-old-230729/components/README.todos +0 -15
  220. package/trash/scss-old-230729/components/_button.scss +0 -95
  221. package/trash/scss-old-230729/components/_index.scss +0 -63
  222. package/trash/scss-old-230729/components/_links.scss +0 -34
  223. package/trash/scss-old-230729/components/_list-lines.scss +0 -73
  224. package/trash/scss-old-230729/components/_list-ordered.scss +0 -16
  225. package/trash/scss-old-230729/components/_list-unordered.scss +0 -21
  226. package/trash/scss-old-230729/components/_rule.scss +0 -93
  227. package/trash/scss-old-230729/helpers/_color.scss +0 -14
  228. package/trash/scss-old-230729/helpers/_display.scss +0 -73
  229. package/trash/scss-old-230729/helpers/_index.scss +0 -67
  230. package/trash/scss-old-230729/helpers/_print.scss +0 -58
  231. package/trash/scss-old-230729/helpers/_typography.scss +0 -72
  232. package/trash/scss-old-230729/helpers/_units.scss +0 -68
  233. package/trash/scss-old-230729/helpers/_utilities.scss +0 -87
  234. package/trash/scss-old-230729/packages/README.md +0 -3
  235. package/trash/scss-old-230729/packages/everything.scss +0 -17
  236. package/trash/vue/directives/background-image-url.js +0 -12
  237. package/trash/vue/helpers/add-required-components.js +0 -14
  238. package/trash/vue/ui/CollapsibleRegion/CollapsibleRegion.vue +0 -277
  239. package/trash/vue/ui/CollapsibleRegion/Demo.vue +0 -101
  240. package/trash/vue/ui/Dropdown/Dropdown.vue +0 -184
  241. package/trash/vue/ui/Modals/components/Modal.vue +0 -49
  242. package/trash/vue/ui/Modals/components/Modals.vue +0 -103
  243. package/trash/vue/ui/Modals/plugin.js +0 -215
  244. package/trash/vue/ui/Modals/readme.note +0 -10
  245. package/trash/vue/ui/Modals/reference/example-usage.vue +0 -27
  246. package/trash/vue/ui/Modals/reference/wcag-example/dialog.js +0 -324
@@ -1,277 +0,0 @@
1
- <!--
2
- Reference:
3
- - transitioning from auto: https://codepen.io/brundolf/pen/dvoGyw?editors=0010
4
- -->
5
- <template>
6
- <div
7
- class="CollapsibleRegion"
8
- @keydown.esc="handleEscape"
9
- :class="{
10
- 'CollapsibleRegion--open' : isOpen,
11
- 'CollapsibleRegion--closed' : !isOpen,
12
- 'CollapsibleRegion--transitioning' : isTransitioning
13
- }"
14
- >
15
- <button
16
- class="CollapsibleRegion__toggle"
17
- :id="toggleId"
18
- :aria-controls="contentId"
19
- :aria-expanded="isOpen"
20
- @click="toggle"
21
- >
22
- <slot name="toggle" :isOpen="isOpen" />
23
- </button>
24
- <div
25
- class="CollapsibleRegion__content"
26
- tabindex="-1"
27
- ref="content"
28
- :id="contentId"
29
- :aria-hidden="!isOpen"
30
- :aria-labelledby="toggleId"
31
- :style="contentStyles"
32
- v-show="!isHidden"
33
- >
34
- <!--
35
- Using inner container to allow no styles on content container
36
- as they interfere with getting accurate measurements of the content
37
- when it's hidden (scrollHeight)
38
- -->
39
- <div class="CollapsibleRegion__content-inner">
40
- <slot/>
41
- </div>
42
- </div>
43
- </div>
44
- </template>
45
-
46
- <script>
47
-
48
- let uid = 0;
49
-
50
- export default {
51
- name: 'CollapsibleRegion',
52
- props: {
53
- closeOnEscape: Boolean,
54
- /**
55
- * When the component is shown it should start visible or hidden
56
- */
57
- startOpen: Boolean,
58
- /**
59
- * Whether or not to transition the show and hide
60
- */
61
- transitionHeight: Boolean,
62
- /**
63
- * Transition should fade as it expands
64
- */
65
- transitionFades: Boolean,
66
- /**
67
- * Transition Timing Function
68
- */
69
- transitionTiming: {
70
- type: String,
71
- default: 'ease-out'
72
- },
73
- /**
74
- * Transition Duration (css duration string), use comma seperation if different for opacity (fade).
75
- * Note: This is used to calculate a fallback timer if transitions fail
76
- */
77
- transitionDuration: {
78
- type: String,
79
- default: '400ms',
80
- validator(value) {
81
- // Make sure that it's a valid css duration (ms|s)
82
- return value.includes('s')
83
- }
84
- },
85
- },
86
- data() {
87
- const isOpen = this.startOpen;
88
- // Calculate the duration needed for the fallback,
89
- // adding 500 to allow padding for delays in transitioning
90
- const transitionTimeout = Math.ceil(
91
- this.getUnitlessDuration(this.transitionDuration) + 500
92
- );
93
- // Note (isOpen vs isHidden): 'isOpen' is the actaul state of the content,
94
- // and 'isHidden' is just used for display none
95
- return {
96
- isOpen,
97
- toggleId: this.getUid(),
98
- contentId: this.getUid(),
99
- contentHeight: isOpen ? 'auto' : '0px',
100
- contentOpacity: this.transitionFades && !isOpen ? 0 : 1,
101
- transitionsDisabled: false,
102
- transitionTimeout: Math.ceil(this.getUnitlessDuration(this.transitionDuration) + 500),
103
- isTransitioning: false,
104
- isHidden: isOpen ? false : true,
105
- onCleanupTransition: null, // Transitions add function here used if needing to cancel
106
- };
107
-
108
- },
109
- computed: {
110
- contentStyles() {
111
- if (this.transitionHeight) {
112
- return {
113
- overflow: 'hidden',
114
- height: this.contentHeight,
115
- transitionDuration: this.transitionDuration,
116
- transitionTiming: this.transitionTiming,
117
- opacity: this.contentOpacity,
118
- transitionProperty: this.transitionsDisabled ? "none" : `height${ this.transitionFades ? ",opacity" : "" }`
119
- };
120
- }
121
- return {};
122
- }
123
- },
124
- methods: {
125
-
126
- /**
127
- * Function used to toggle the collapsible
128
- */
129
- toggle() {
130
- console.log('Toggle Click', this.isOpen);
131
- if (this.isOpen && !this.isTransitioning) {
132
- this.close();
133
- } else {
134
- this.open();
135
- }
136
- },
137
- handleEscape() {
138
- if (this.closeOnEscape && this.isOpen) {
139
- this.close();
140
- }
141
- },
142
- removeTransition(canceled) {
143
- if (this.onCleanupTransition) this.onCleanupTransition();
144
- this.isTransitioning = false;
145
- this.onCleanupTransition = null;
146
- },
147
- /**
148
- * Function that will handle setting the styles in a way that allows for
149
- * transitioning from display: none to height: auto. With optional fade.
150
- */
151
- open() {
152
- // If there are no animations
153
- if (!this.transitionHeight) {
154
- this.isOpen = true;
155
- this.isHidden = false;
156
- return;
157
- }
158
-
159
- this.removeTransition(true);
160
-
161
- let tid;
162
- const element = this.$refs.content;
163
- // When finished clear the fallback and set the height to auto
164
- // incase something else on the page changes this elements layout/height,
165
- // remove the one time listener, and call the ending callback
166
- // and user callbacks
167
- const complete = () => {
168
- this.contentHeight = 'auto';
169
- this.isOpen = true;
170
- this.removeTransition();
171
- this.$emit('collapsible-opened');
172
- };
173
- this.onCleanupTransition = () => {
174
- clearTimeout(tid);
175
- element.removeEventListener('transitionend', complete);
176
- };
177
- // Listen for the end of the transition we are about to trigger on
178
- element.addEventListener('transitionend', complete);
179
- this.isHidden = false;
180
- this.isTransitioning = true;
181
- this.$emit('collapsible-opening');
182
- // Waiting for vue to update the elements style.display from none
183
- // so we can measure it's hidden height, set it statically,
184
- // to then trigger the transition to that static height
185
- this.$nextTick(() => {
186
- this.contentHeight = element.scrollHeight + 'px';
187
- if (this.transitionFades) this.contentOpacity = 1;
188
- // Setting a fallback incase anything interupts the browsers
189
- // ability to fire the 'transitionend' event, the element will
190
- // still be functional
191
- tid = setTimeout(complete, this.transitionTimeout);
192
- });
193
- },
194
- /**
195
- * Function that will handle setting the styles in a way that allows for
196
- * transitioning from height: auto to display: none
197
- */
198
- close() {
199
- // If there are no animations
200
- if (!this.transitionHeight) {
201
- this.isOpen = false;
202
- this.isHidden = true;
203
- return;
204
- }
205
-
206
- this.removeTransition(true);
207
-
208
- let tid;
209
- // Measure the elements height, to set it from auto
210
- // to static so that we can transtion it
211
- const element = this.$refs.content;
212
- const height = element.scrollHeight;
213
- // Set the elements height to a static value so we can transition it
214
- // then on next tick when that value is set, start the transition
215
- const setup = () => {
216
- element.addEventListener('transitionend', complete);
217
- this.contentHeight = height + 'px';
218
- this.$nextTick(init);
219
- };
220
- // Enable transitions and then on next update start it
221
- // by setting the height to 0
222
- const init = () => {
223
- this.transitionsDisabled = false;
224
- this.$nextTick(() => {
225
- requestAnimationFrame(transition);
226
- });
227
- };
228
- const transition = () => {
229
- this.contentHeight = '0px';
230
- if (this.transitionFades) this.contentOpacity = 0;
231
- };
232
- const complete = () => {
233
- this.isOpen = false;
234
- this.isHidden = true;
235
- this.removeTransition();
236
- this.$emit('collapsible-closed');
237
- };
238
- const fallback = () => {
239
- transition();
240
- complete();
241
- };
242
- this.onCleanupTransition = () => {
243
- clearTimeout(tid);
244
- element.removeEventListener('transitionend', complete);
245
- };
246
- // Temporarily disable the transitions on the element,
247
- // on next tick when transistions are disabled (removing transiton-property)
248
- // attach the fallback and setup the transition
249
- this.transitionsDisabled = true;
250
- this.isTransitioning = true;
251
- this.$emit('collapsible-closing');
252
- this.$nextTick(() => {
253
- requestAnimationFrame(setup);
254
- tid = setTimeout(fallback, this.transitionTimeout);
255
- });
256
- },
257
- /**
258
- * Returns unitless duration
259
- * @param {String} duration - Css duration string
260
- */
261
- getUnitlessDuration(value) {
262
- // Grab only first value in string
263
- let duration = parseFloat( value.split(',')[0] );
264
- // If not milliseconds we need to convert assumed if
265
- // not milliseconds it's seconds (only other valid duration)
266
- return value.includes('ms') ? duration : duration * 1000;
267
- },
268
- /**
269
- * Recursive function to generate and test id uniqueness
270
- */
271
- getUid() {
272
- const id = `Ulu-C-${ ++uid }`;
273
- return document.getElementById(id) ? this.getUid() : id;
274
- }
275
- },
276
- }
277
- </script>
@@ -1,101 +0,0 @@
1
- <template>
2
- <div id="app">
3
- <h1>Vue Collapsibles</h1>
4
- <h2>Without Transitions (closes on escape)</h2>
5
- <CollapsibleRegion close-on-escape>
6
- <template #toggle="{ isOpen }">
7
- Click Me {{ isOpen }}
8
- </template>
9
- This is the hidden content
10
- </CollapsibleRegion>
11
- <h3>Start Visible</h3>
12
- <CollapsibleRegion start-open>
13
- <template #toggle>
14
- Click Me
15
- </template>
16
- This is the hidden content
17
- </CollapsibleRegion>
18
- <h2>With Transitions</h2>
19
- <CollapsibleRegion
20
- transition-height
21
- transition-fades
22
- transition-duration="200ms"
23
- >
24
- <template #toggle>
25
- Click Me
26
- </template>
27
- <p>
28
- {{ placeholder }}
29
- </p>
30
- <p>
31
- {{ placeholder }}
32
- </p>
33
- </CollapsibleRegion>
34
- <CollapsibleRegion
35
- transition-height
36
- transition-fades
37
- transition-duration="200ms"
38
- >
39
- <template #toggle>
40
- Click Me
41
- </template>
42
- <p>
43
- {{ placeholder }}
44
- </p>
45
- <p>
46
- {{ placeholder }}
47
- </p>
48
- </CollapsibleRegion>
49
- </div>
50
- </template>
51
-
52
- <script>
53
- import CollapsibleRegion from '@/CollapsibleRegion.vue';
54
- // import placeholder from "@/assets/text-placeholder.js";
55
- export default {
56
- name: 'App',
57
- components: {
58
- CollapsibleRegion
59
- },
60
- data() {
61
- return {
62
- placeholder: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec scelerisque quam eget dui fringilla, non fringilla mi eleifend. Vivamus non ex urna. Pellentesque lacinia tortor id dapibus volutpat. Morbi et ante non tortor eleifend dapibus. Ut vitae pulvinar sapien. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nullam sollicitudin, ante sed venenatis vestibulum, est elit dapibus ex, sed vulputate leo ante et ipsum. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam consequat imperdiet ligula facilisis gravida."
63
- }
64
- }
65
- }
66
- </script>
67
-
68
- <style lang="scss">
69
- body, html {
70
- padding: 0;
71
- margin: 0;
72
- background-color: rgb(23, 22, 27);
73
- }
74
- #app {
75
- font-family: Avenir, Helvetica, Arial, sans-serif;
76
- -webkit-font-smoothing: antialiased;
77
- -moz-osx-font-smoothing: grayscale;
78
- text-align: center;
79
- color: #2c3e50;
80
- margin-top: 60px;
81
- color: rgba(255, 255, 255, 0.795);
82
- }
83
- .CollapsibleRegion {
84
- margin: 3em;
85
- }
86
- // background-color: rgb(224, 226, 226);
87
- .CollapsibleRegion__toggle {
88
- padding: 1em 3em;
89
- // outline: none;
90
- border: none;
91
- background-color: rgb(29, 103, 199);
92
-
93
- width: 100%;
94
- font-weight: bold;
95
- }
96
- .CollapsibleRegion__content-inner {
97
- padding: 3em;
98
- background-color: rgb(39, 36, 49);
99
- }
100
-
101
- </style>
@@ -1,184 +0,0 @@
1
- <!--
2
- Dependencies:
3
- - vue-click-outside (npm)
4
- -->
5
- <template>
6
- <div
7
- class="dropdown"
8
- :class="{
9
- 'dropdown--select-style' : selectStyle,
10
- 'dropdown--select-style-inline' : selectStyleInline
11
- }"
12
- :data-dropdown-state="currentState"
13
- v-click-outside="hide"
14
- >
15
- <span
16
- class="dropdown__toggle"
17
- id="toggleId"
18
- :data-dropdown-state="currentState"
19
- :aria-controls="contentId"
20
- :aria-expanded="isOpen"
21
- @click="toggle"
22
- >
23
- <span class="dropdown__toggle-content">
24
- <slot name="button" />
25
- </span>
26
- <span class="dropdown__toggle-icon" v-if="selectStyle">
27
- <i class="dropdown__toggle-icon-glyph fas fa-caret-down"></i>
28
- </span>
29
- </span>
30
- <div
31
- class="dropdown__content"
32
- :id="contentId"
33
- :data-dropdown-state="currentState"
34
- :data-dropdown-position-x="positionX"
35
- :data-dropdown-position-y="positionY"
36
- :aria-labeledby="toggleId"
37
- :aria-hidden="!isOpen"
38
- :style="{ width: contentWidth }"
39
- >
40
- <slot />
41
- </div>
42
- </div>
43
- </template>
44
-
45
- <script>
46
- import ClickOutside from 'vue-click-outside';
47
-
48
- export default {
49
- name: 'dropdown',
50
- props: {
51
- positionX: {
52
- type: String,
53
- default: 'center'
54
- },
55
- positionY: {
56
- type: String,
57
- default: 'center'
58
- },
59
- selectStyle: {
60
- required: false,
61
- type: Boolean,
62
- default: false
63
- },
64
- selectStyleInline: {
65
- required: false,
66
- type: Boolean,
67
- default: false
68
- },
69
- contentWidth: {
70
- type: String,
71
- required: false,
72
- default: '200px'
73
- }
74
- },
75
- directives: {
76
- ClickOutside
77
- },
78
- data() {
79
- return {
80
- isOpen: false
81
- }
82
- },
83
- computed: {
84
- id() {
85
- return this._uid;
86
- },
87
- currentState() {
88
- return this.isOpen ? 'open' : 'closed';
89
- },
90
- toggleId() {
91
- return `dropown__toggle--id-${ this.id }`;
92
- },
93
- contentId() {
94
- return `dropown__content--id-${ this.id }`;
95
- }
96
- },
97
- methods: {
98
- toggle() {
99
- this.isOpen = !this.isOpen;
100
- },
101
- hide() {
102
- this.isOpen = false;
103
- }
104
- }
105
- }
106
- </script>
107
-
108
- <style lang="scss">
109
- $dropdown--border-radius: 6px !default;
110
- $dropdown--color: black !default;
111
- $dropdown--font-size: 1rem !default;
112
- .dropdown {
113
- position: relative;
114
-
115
- display: inline-block;
116
- &--select-style {
117
- padding: 0.35em 1em;
118
- background-color: white;
119
- border-radius: $dropdown--border-radius;
120
- color: $dropdown--color;
121
- margin: 0.5em 0;
122
- max-width: 15em;
123
- display: inline-block;
124
- }
125
- &--select-style-inline {
126
- background-color: transparent;
127
- font-size: $dropdown--font-size;
128
- color: inherit;
129
- }
130
- &__toggle {
131
- cursor: pointer;
132
- .dropdown--select-style & {
133
- display: flex;
134
- justify-content: space-between;
135
- }
136
- &-content {
137
- // display: block;
138
- // flex: 1 1;
139
- }
140
- &-icon {
141
- display: block;
142
- margin-left: 1em;
143
- .dropdown--select-style & {
144
- margin-left: 0.5em;
145
- }
146
- }
147
- }
148
- &__content {
149
- display: none;
150
- position: absolute;
151
- z-index: 2;
152
- top: 100%;
153
- margin-top: 0.3rem;
154
- background-color: white;
155
- box-shadow: 0 2px 4px rgba(0,0,0,0.4);
156
- border-radius: 6px;
157
- // overflow: auto;
158
- max-height: 300px;
159
- &[data-dropdown-position-x="center"] {
160
- left: 50%;
161
- transform: translateX(-50%);
162
- }
163
- &[data-dropdown-position-x="left"] {
164
- left: 0;
165
- }
166
- &[data-dropdown-position-x="right"] {
167
- right: 0;
168
- }
169
- &[data-dropdown-position-y="top"] {
170
- bottom: 100%;
171
- top: auto;
172
- margin-bottom: 0.3rem;
173
- }
174
- &[data-dropdown-state="open"] {
175
- display: block;
176
- }
177
- }
178
-
179
- // Contextually style certain global styles
180
- .button {
181
- margin: 0;
182
- }
183
- }
184
- </style>
@@ -1,49 +0,0 @@
1
- <template>
2
- <!-- Note: The top level is used for click outside -->
3
- <div class="modal">
4
- <div class="modal__panel">
5
- <div class="modal__header" id="modal__label">
6
- <span
7
- v-if="icon"
8
- class="modal__icon"
9
- :data-icon-name="icon"
10
- aria-hidden="true"
11
- ></span>
12
- <!-- Optionally use the title (pre-templated with prop) or pass markup using slot -->
13
- <span
14
- class="modal__title"
15
- v-if="title && title.length" key="title"
16
- >
17
- {{ title }}
18
- </span>
19
- <span
20
- class="modal__title"
21
- v-else key="title-slotted"
22
- >
23
- <slot name="title"></slot>
24
- </span>
25
- </div>
26
- <div class="modal__body">
27
- <!-- Default Slot -->
28
- <slot></slot>
29
- </div>
30
- <div class="modal__footer">
31
- <slot name="footer"></slot>
32
- </div>
33
- </div>
34
- </div>
35
- </template>
36
-
37
- <script>
38
-
39
- export default {
40
- name: 'modal',
41
- props: {
42
- title: String,
43
- icon: String
44
- },
45
- }
46
- </script>
47
-
48
- <style lang="scss">
49
- </style>
@@ -1,103 +0,0 @@
1
- <!--
2
- Version: 1.0.3
3
-
4
- Changes:
5
- - 1.0.1 | CSS Tweaks
6
- - 1.0.3 | Optional Click Outside Close
7
- -->
8
- <template>
9
- <div class="modals" v-if="Boolean(this.$root.active)">
10
- <div class="modals__back-drop" @click.self.prevent="closeModals">
11
- <div
12
- class="modals__modal"
13
- id="modals__modal"
14
- role="dialog"
15
- :aria-labelledby="labeledBy"
16
- >
17
- <component
18
- v-if="this.$root.active"
19
- :is="this.$root.active.component"
20
- @hook:mounted="modalMounted"
21
- @hook:destroyed="modalDestroy"
22
- />
23
- </div>
24
- </div>
25
- </div>
26
- </template>
27
-
28
- <script>
29
- export default {
30
- name: 'modals',
31
- data() {
32
- return {
33
- pageScrollY: 0
34
- }
35
- },
36
- computed: {
37
- labeledBy() {
38
- return this.$root.active && this.$root.active.labeledBy;
39
- },
40
- // modalState() {
41
- // return this.$root.active ? 'open' : 'closed'
42
- // }
43
- },
44
- methods: {
45
- modalMounted() {
46
- this.pageScrollY = window.pageYOffset || document.documentElement.scrollTop;
47
- window.addEventListener('scroll', this.disableScroll);
48
- this.$nextTick(() => {
49
- this.$root.$emit('modal-mount');
50
- });
51
- },
52
- modalDestroy() {
53
- window.removeEventListener('scroll', this.disableScroll);
54
- this.$nextTick(() => {
55
- this.$root.$emit('modal-destroy');
56
- });
57
- },
58
- closeModals() {
59
- if (this.$root.active.clickOutsideCloses) {
60
- this.$root.close();
61
- }
62
- },
63
- disableScroll() {
64
- window.scrollTo(0, this.scrollTop);
65
- }
66
- }
67
- }
68
- </script>
69
-
70
- <style lang="scss">
71
- .modals {
72
- box-sizing: border-box;
73
- position: fixed;
74
- left: 0;
75
- top: 0;
76
- width: 100%;
77
- height: 100vh;
78
- background: rgba(black, 0.5);
79
- z-index: 1000;
80
- opacity: 1;
81
- display: flex;
82
- backdrop-filter: blur(4px);
83
- }
84
- .modals__back-drop {
85
- flex: 1 1;
86
- box-sizing: border-box;
87
- // padding: 1rem;
88
- display: flex;
89
- align-items: center;
90
- justify-content: center;
91
- }
92
- .modals__modal {
93
- // flex: 0 0;
94
- box-sizing: border-box;
95
- // background: white;
96
- position: relative;
97
- // max-height: 75%;
98
- // transform: translateY((25% / 2)); // Half of 10% left
99
- // border-radius: 10px;
100
- // overflow: auto;
101
- // box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.45);
102
- }
103
- </style>