@ulu/frontend 0.1.0-beta.11 → 0.1.0-beta.110

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 (342) hide show
  1. package/CHANGELOG.md +669 -0
  2. package/GEMINI.md +9 -0
  3. package/README.dev.md +3 -3
  4. package/README.md +14 -4
  5. package/dist/ulu-frontend.min.css +1 -1
  6. package/dist/ulu-frontend.min.js +36 -29
  7. package/docs-dev/.nojekyll +1 -0
  8. package/docs-dev/assets/main.js +832 -421
  9. package/docs-dev/assets/placeholder/icon-calendar.svg +1 -0
  10. package/docs-dev/assets/placeholder/icon-check.svg +1 -0
  11. package/docs-dev/assets/style.css +629 -233
  12. package/docs-dev/changelog/index.html +7445 -0
  13. package/docs-dev/changelog/updates-and-changes/index.html +5109 -0
  14. package/docs-dev/demos/accordion/index.html +1442 -364
  15. package/docs-dev/demos/badge/index.html +5835 -0
  16. package/docs-dev/demos/badge-stack/index.html +5816 -0
  17. package/docs-dev/demos/basic-hero/index.html +111 -0
  18. package/docs-dev/demos/breadcrumb/index.html +5870 -0
  19. package/docs-dev/demos/breakpoints-manager/index.html +5846 -0
  20. package/docs-dev/demos/button/index.html +1490 -356
  21. package/docs-dev/demos/button-group/index.html +5832 -0
  22. package/docs-dev/demos/button-verbose/index.html +5838 -0
  23. package/docs-dev/demos/callout/index.html +1469 -349
  24. package/docs-dev/demos/captioned-figure/index.html +1446 -353
  25. package/docs-dev/demos/card/index.html +1518 -786
  26. package/docs-dev/demos/card-grid/index.html +5957 -0
  27. package/docs-dev/demos/card-new/index.html +5088 -0
  28. package/docs-dev/demos/card-old/index.html +5223 -0
  29. package/docs-dev/demos/card.1/index.html +5223 -0
  30. package/docs-dev/demos/card.TRASH/index.html +5541 -0
  31. package/docs-dev/demos/counter-list/index.html +5840 -0
  32. package/docs-dev/demos/css-icons/index.html +1466 -350
  33. package/docs-dev/demos/data-grid/index.html +1446 -353
  34. package/docs-dev/demos/data-table/index.html +1621 -395
  35. package/docs-dev/demos/details-group/index.html +5867 -0
  36. package/docs-dev/demos/donut-chart/index.html +5874 -0
  37. package/docs-dev/demos/file-save/index.html +1446 -353
  38. package/docs-dev/demos/flipcard/index.html +1446 -353
  39. package/docs-dev/demos/form-theme/index.html +1453 -360
  40. package/docs-dev/demos/headline-label/index.html +5802 -0
  41. package/docs-dev/demos/hero/index.html +12 -4
  42. package/docs-dev/demos/image-grid/index.html +12 -4
  43. package/docs-dev/demos/index.html +1447 -354
  44. package/docs-dev/demos/list-inline/index.html +1446 -353
  45. package/docs-dev/demos/list-lines/index.html +1446 -353
  46. package/docs-dev/demos/menu-stack/index.html +1550 -389
  47. package/docs-dev/demos/modals/index.html +1616 -400
  48. package/docs-dev/demos/nav-strip/index.html +1446 -353
  49. package/docs-dev/demos/overlay-section/index.html +1532 -369
  50. package/docs-dev/demos/panel/index.html +5862 -0
  51. package/docs-dev/demos/popovers/index.html +1710 -375
  52. package/docs-dev/demos/print/index.html +1446 -353
  53. package/docs-dev/demos/progress-bar/index.html +5964 -0
  54. package/docs-dev/demos/progress-circle/index.html +6137 -0
  55. package/docs-dev/demos/progress-donut/index.html +6107 -0
  56. package/docs-dev/demos/pull-quote/index.html +1446 -353
  57. package/docs-dev/demos/rail/index.html +5910 -0
  58. package/docs-dev/demos/rule/index.html +1455 -350
  59. package/docs-dev/demos/scroll-slider/index.html +72 -106
  60. package/docs-dev/demos/scrollpoints/index.html +1447 -354
  61. package/docs-dev/demos/skeleton/index.html +5858 -0
  62. package/docs-dev/demos/slider/index.html +12 -4
  63. package/docs-dev/demos/spoke-spinner/index.html +1446 -353
  64. package/docs-dev/demos/sticky-list/index.html +5823 -0
  65. package/docs-dev/demos/tabs/index.html +1474 -345
  66. package/docs-dev/demos/tag/index.html +1463 -358
  67. package/docs-dev/demos/theme-toggle/index.html +5879 -0
  68. package/docs-dev/demos/tile-grid-overlay/index.html +12 -4
  69. package/docs-dev/demos/tiles/index.html +1446 -353
  70. package/docs-dev/demos/tooltip/index.html +1446 -353
  71. package/docs-dev/demos/wysiwyg/index.html +5852 -0
  72. package/docs-dev/guide/building-stylesheet/index.html +1446 -353
  73. package/docs-dev/guide/developing-ulu-scss-module/index.html +1446 -353
  74. package/docs-dev/guide/index.html +1446 -353
  75. package/docs-dev/guide/updates-and-changes/index.html +5033 -0
  76. package/docs-dev/index.html +1446 -353
  77. package/docs-dev/javascript/events/index.html +1141 -940
  78. package/docs-dev/javascript/index.html +1446 -353
  79. package/docs-dev/javascript/settings/index.html +5629 -0
  80. package/docs-dev/javascript/ui-breakpoints/index.html +1270 -719
  81. package/docs-dev/javascript/ui-collapsible/index.html +1135 -824
  82. package/docs-dev/javascript/ui-details-group/index.html +5382 -0
  83. package/docs-dev/javascript/ui-dialog/index.html +1167 -841
  84. package/docs-dev/javascript/ui-flipcard/index.html +833 -2058
  85. package/docs-dev/javascript/ui-grid/index.html +835 -1962
  86. package/docs-dev/javascript/ui-modal-builder/index.html +988 -1919
  87. package/docs-dev/javascript/ui-overflow-scroller/index.html +811 -1912
  88. package/docs-dev/javascript/ui-overflow-scroller-pager/index.html +1643 -928
  89. package/docs-dev/javascript/ui-page/index.html +1643 -928
  90. package/docs-dev/javascript/ui-popover/index.html +1484 -773
  91. package/docs-dev/javascript/ui-print/index.html +1637 -930
  92. package/docs-dev/javascript/ui-print-details/index.html +1643 -928
  93. package/docs-dev/javascript/ui-programmatic-modal/index.html +1643 -928
  94. package/docs-dev/javascript/ui-proxy-click/index.html +1395 -595
  95. package/docs-dev/javascript/ui-resizer/index.html +1986 -1006
  96. package/docs-dev/javascript/ui-scroll-slider/index.html +1514 -767
  97. package/docs-dev/javascript/ui-scrollpoint/index.html +1649 -941
  98. package/docs-dev/javascript/ui-slider/index.html +1723 -817
  99. package/docs-dev/javascript/ui-tabs/index.html +1537 -859
  100. package/docs-dev/javascript/ui-theme-toggle/index.html +5634 -0
  101. package/docs-dev/javascript/ui-tooltip/index.html +1649 -938
  102. package/docs-dev/javascript/utils-class-logger/index.html +1644 -929
  103. package/docs-dev/javascript/utils-css/index.html +5448 -0
  104. package/docs-dev/javascript/utils-dom/index.html +1320 -685
  105. package/docs-dev/javascript/utils-file-save/index.html +1643 -928
  106. package/docs-dev/javascript/utils-floating-ui/index.html +1643 -928
  107. package/docs-dev/javascript/utils-id/index.html +1643 -928
  108. package/docs-dev/javascript/utils-pause-youtube-video/index.html +1643 -928
  109. package/docs-dev/javascript/utils-system/index.html +5751 -0
  110. package/docs-dev/sass/base/color/index.html +1451 -360
  111. package/docs-dev/sass/base/elements/index.html +1645 -930
  112. package/docs-dev/sass/base/index/index.html +1452 -361
  113. package/docs-dev/sass/base/index.html +1446 -353
  114. package/docs-dev/sass/base/keyframes/index.html +1452 -361
  115. package/docs-dev/sass/base/layout/index.html +1452 -361
  116. package/docs-dev/sass/base/normalize/index.html +1644 -929
  117. package/docs-dev/sass/base/print/index.html +1452 -361
  118. package/docs-dev/sass/base/root/index.html +1455 -364
  119. package/docs-dev/sass/base/typography/index.html +1451 -360
  120. package/docs-dev/sass/components/accordion/index.html +1538 -406
  121. package/docs-dev/sass/components/adaptive-spacing/index.html +1451 -360
  122. package/docs-dev/sass/components/badge/index.html +1468 -359
  123. package/docs-dev/sass/components/badge-stack/index.html +5991 -0
  124. package/docs-dev/sass/components/basic-hero/index.html +5985 -0
  125. package/docs-dev/sass/components/breadcrumb/index.html +6032 -0
  126. package/docs-dev/sass/components/button/index.html +1451 -360
  127. package/docs-dev/sass/components/button-group/index.html +5983 -0
  128. package/docs-dev/sass/components/button-verbose/index.html +1523 -357
  129. package/docs-dev/sass/components/callout/index.html +1572 -422
  130. package/docs-dev/sass/components/captioned-figure/index.html +1591 -385
  131. package/docs-dev/sass/components/card/index.html +1511 -363
  132. package/docs-dev/sass/components/card-grid/index.html +1451 -360
  133. package/docs-dev/sass/components/counter-list/index.html +6067 -0
  134. package/docs-dev/sass/components/css-icon/index.html +1452 -361
  135. package/docs-dev/sass/components/data-grid/index.html +1465 -367
  136. package/docs-dev/sass/components/data-table/index.html +1648 -369
  137. package/docs-dev/sass/components/fill-context/index.html +1451 -360
  138. package/docs-dev/sass/components/flipcard/index.html +1479 -357
  139. package/docs-dev/sass/components/flipcard-grid/index.html +1451 -360
  140. package/docs-dev/sass/components/form-theme/index.html +1652 -566
  141. package/docs-dev/sass/components/headline-label/index.html +6013 -0
  142. package/docs-dev/sass/components/hero/index.html +1497 -358
  143. package/docs-dev/sass/components/horizontal-rule/index.html +1451 -360
  144. package/docs-dev/sass/components/image-grid/index.html +1451 -360
  145. package/docs-dev/sass/components/index/index.html +1466 -362
  146. package/docs-dev/sass/components/index.html +1446 -353
  147. package/docs-dev/sass/components/links/index.html +1451 -360
  148. package/docs-dev/sass/components/list-inline/index.html +1451 -360
  149. package/docs-dev/sass/components/list-lines/index.html +1451 -360
  150. package/docs-dev/sass/components/list-ordered/index.html +1451 -360
  151. package/docs-dev/sass/components/list-unordered/index.html +1451 -360
  152. package/docs-dev/sass/components/menu-stack/index.html +1476 -371
  153. package/docs-dev/sass/components/modal/index.html +1486 -360
  154. package/docs-dev/sass/components/nav-strip/index.html +1459 -368
  155. package/docs-dev/sass/components/overlay-section/index.html +1459 -368
  156. package/docs-dev/sass/components/pager/index.html +1451 -360
  157. package/docs-dev/sass/components/panel/index.html +6213 -0
  158. package/docs-dev/sass/components/placeholder-block/index.html +1451 -360
  159. package/docs-dev/sass/components/popover/index.html +1497 -370
  160. package/docs-dev/sass/components/progress-bar/index.html +6192 -0
  161. package/docs-dev/sass/components/progress-circle/index.html +6084 -0
  162. package/docs-dev/sass/components/pull-quote/index.html +1463 -372
  163. package/docs-dev/sass/components/rail/index.html +6003 -0
  164. package/docs-dev/sass/components/ratio-box/index.html +1459 -368
  165. package/docs-dev/sass/components/rule/index.html +1452 -361
  166. package/docs-dev/sass/components/scroll-slider/index.html +1447 -368
  167. package/docs-dev/sass/components/skeleton/index.html +6041 -0
  168. package/docs-dev/sass/components/skip-link/index.html +1451 -360
  169. package/docs-dev/sass/components/slider/index.html +1491 -412
  170. package/docs-dev/sass/components/spoke-spinner/index.html +1453 -362
  171. package/docs-dev/sass/components/sticky-list/index.html +6203 -0
  172. package/docs-dev/sass/components/table-sticky/index.html +5707 -0
  173. package/docs-dev/sass/components/tabs/index.html +1472 -366
  174. package/docs-dev/sass/components/tag/index.html +1563 -378
  175. package/docs-dev/sass/components/tile-button/index.html +1451 -360
  176. package/docs-dev/sass/components/tile-grid/index.html +1451 -360
  177. package/docs-dev/sass/components/tile-grid-overlay/index.html +1451 -360
  178. package/docs-dev/sass/components/vignette/index.html +1457 -360
  179. package/docs-dev/sass/components/wysiwyg/index.html +1477 -368
  180. package/docs-dev/sass/core/breakpoint/index.html +1530 -387
  181. package/docs-dev/sass/core/button/index.html +1483 -390
  182. package/docs-dev/sass/core/color/index.html +1666 -443
  183. package/docs-dev/sass/core/cssvar/index.html +1451 -360
  184. package/docs-dev/sass/core/element/index.html +1790 -417
  185. package/docs-dev/sass/core/index.html +1451 -360
  186. package/docs-dev/sass/core/layout/index.html +1491 -381
  187. package/docs-dev/sass/core/path/index.html +1451 -360
  188. package/docs-dev/sass/core/selector/index.html +1451 -360
  189. package/docs-dev/sass/core/typography/index.html +1591 -442
  190. package/docs-dev/sass/core/units/index.html +1453 -356
  191. package/docs-dev/sass/core/utils/index.html +2744 -504
  192. package/docs-dev/sass/helpers/color/index.html +1643 -928
  193. package/docs-dev/sass/helpers/display/index.html +1644 -929
  194. package/docs-dev/sass/helpers/index/index.html +1643 -928
  195. package/docs-dev/sass/helpers/index.html +1446 -353
  196. package/docs-dev/sass/helpers/print/index.html +759 -298
  197. package/docs-dev/sass/helpers/typography/index.html +1643 -928
  198. package/docs-dev/sass/helpers/units/index.html +1643 -928
  199. package/docs-dev/sass/helpers/utilities/index.html +1643 -924
  200. package/docs-dev/sass/index.html +1446 -353
  201. package/js/events/index.js +17 -5
  202. package/js/index.js +1 -0
  203. package/js/settings.js +97 -0
  204. package/js/ui/breakpoints.js +19 -16
  205. package/js/ui/collapsible.js +8 -1
  206. package/js/ui/details-group.js +112 -0
  207. package/js/ui/dialog.js +103 -44
  208. package/js/ui/dialog.todo +2 -36
  209. package/js/ui/flipcard.js +37 -57
  210. package/js/ui/grid.js +15 -13
  211. package/js/ui/index.js +1 -0
  212. package/js/ui/modal-builder.js +127 -70
  213. package/js/ui/overflow-scroller.js +6 -4
  214. package/js/ui/page.js +2 -2
  215. package/js/ui/popover.js +38 -38
  216. package/js/ui/print.js +16 -25
  217. package/js/ui/programmatic-modal.js +9 -3
  218. package/js/ui/proxy-click.js +50 -36
  219. package/js/ui/resizer.js +408 -39
  220. package/js/ui/scroll-slider.js +24 -30
  221. package/js/ui/scrollpoint.js +29 -64
  222. package/js/ui/slider.js +108 -63
  223. package/js/ui/tabs.js +23 -36
  224. package/js/ui/theme-toggle.js +332 -94
  225. package/js/ui/tooltip.js +27 -32
  226. package/js/utils/class-logger.js +3 -3
  227. package/js/utils/css.js +13 -0
  228. package/js/utils/dom.js +23 -64
  229. package/js/utils/font-awesome.js +19 -0
  230. package/js/utils/index.js +2 -1
  231. package/js/utils/system.js +155 -0
  232. package/package.json +23 -8
  233. package/scss/README.md +9 -0
  234. package/scss/_breakpoint.scss +39 -5
  235. package/scss/_button.scss +7 -5
  236. package/scss/_color.scss +71 -40
  237. package/scss/_element.scss +124 -2
  238. package/scss/_layout.scss +7 -8
  239. package/scss/_typography.scss +15 -0
  240. package/scss/_units.scss +3 -2
  241. package/scss/_utils.scss +387 -16
  242. package/scss/base/_elements.scss +0 -1
  243. package/scss/base/_index.scss +1 -1
  244. package/scss/base/_keyframes.scss +15 -0
  245. package/scss/base/_layout.scss +1 -0
  246. package/scss/base/_print.scss +2 -0
  247. package/scss/base/_root.scss +2 -0
  248. package/scss/components/README.todos +1 -0
  249. package/scss/components/_accordion.scss +154 -109
  250. package/scss/components/_badge-stack.scss +84 -0
  251. package/scss/components/_badge.scss +30 -7
  252. package/scss/components/_basic-hero.scss +112 -0
  253. package/scss/components/_breadcrumb.scss +110 -0
  254. package/scss/components/_button-group.scss +90 -0
  255. package/scss/components/_button-verbose.scss +100 -18
  256. package/scss/components/_callout.scss +112 -53
  257. package/scss/components/_captioned-figure.scss +17 -0
  258. package/scss/components/_card.scss +224 -66
  259. package/scss/components/_counter-list.scss +151 -0
  260. package/scss/components/_css-icon.scss +27 -17
  261. package/scss/components/_data-grid.scss +55 -12
  262. package/scss/components/_data-table.scss +31 -0
  263. package/scss/components/_flipcard.scss +8 -3
  264. package/scss/components/_form-theme.scss +106 -95
  265. package/scss/components/_headline-label.scss +83 -0
  266. package/scss/components/_hero.scss +12 -10
  267. package/scss/components/_index.scss +73 -0
  268. package/scss/components/_menu-stack.scss +69 -32
  269. package/scss/components/_modal.scss +51 -23
  270. package/scss/components/_nav-strip.scss +2 -0
  271. package/scss/components/_overlay-section.scss +2 -5
  272. package/scss/components/_panel.scss +246 -0
  273. package/scss/components/_popover.scss +165 -64
  274. package/scss/components/_progress-bar.scss +254 -0
  275. package/scss/components/_progress-circle.scss +175 -0
  276. package/scss/components/_pull-quote.scss +13 -13
  277. package/scss/components/_rail.scss +127 -0
  278. package/scss/components/_ratio-box.scss +2 -5
  279. package/scss/components/_rule.scss +1 -0
  280. package/scss/components/_scroll-slider.scss +1 -5
  281. package/scss/components/_skeleton.scss +126 -0
  282. package/scss/components/_slider.scss +49 -72
  283. package/scss/components/_spoke-spinner.scss +2 -2
  284. package/scss/components/_sticky-list.scss +206 -0
  285. package/scss/components/_tabs.scss +22 -4
  286. package/scss/components/_tag.scss +49 -7
  287. package/scss/components/_vignette.scss +3 -5
  288. package/scss/components/_wysiwyg.scss +21 -13
  289. package/scss/helpers/_display.scss +15 -18
  290. package/scss/helpers/_print.scss +12 -7
  291. package/scss/helpers/_utilities.scss +56 -34
  292. package/types/events/index.d.ts +10 -1
  293. package/types/events/index.d.ts.map +1 -1
  294. package/types/index.d.ts +1 -0
  295. package/types/settings.d.ts +70 -0
  296. package/types/settings.d.ts.map +1 -0
  297. package/types/ui/breakpoints.d.ts +14 -14
  298. package/types/ui/breakpoints.d.ts.map +1 -1
  299. package/types/ui/collapsible.d.ts.map +1 -1
  300. package/types/ui/details-group.d.ts +38 -0
  301. package/types/ui/details-group.d.ts.map +1 -0
  302. package/types/ui/dialog.d.ts +20 -14
  303. package/types/ui/dialog.d.ts.map +1 -1
  304. package/types/ui/flipcard.d.ts +16 -10
  305. package/types/ui/flipcard.d.ts.map +1 -1
  306. package/types/ui/grid.d.ts +4 -6
  307. package/types/ui/grid.d.ts.map +1 -1
  308. package/types/ui/index.d.ts +1 -0
  309. package/types/ui/modal-builder.d.ts +116 -11
  310. package/types/ui/modal-builder.d.ts.map +1 -1
  311. package/types/ui/overflow-scroller.d.ts +2 -2
  312. package/types/ui/overflow-scroller.d.ts.map +1 -1
  313. package/types/ui/popover.d.ts +6 -7
  314. package/types/ui/popover.d.ts.map +1 -1
  315. package/types/ui/print.d.ts +0 -4
  316. package/types/ui/print.d.ts.map +1 -1
  317. package/types/ui/programmatic-modal.d.ts.map +1 -1
  318. package/types/ui/proxy-click.d.ts +19 -3
  319. package/types/ui/proxy-click.d.ts.map +1 -1
  320. package/types/ui/resizer.d.ts +116 -16
  321. package/types/ui/resizer.d.ts.map +1 -1
  322. package/types/ui/scroll-slider.d.ts +5 -7
  323. package/types/ui/scroll-slider.d.ts.map +1 -1
  324. package/types/ui/scrollpoint.d.ts +3 -8
  325. package/types/ui/scrollpoint.d.ts.map +1 -1
  326. package/types/ui/slider.d.ts +33 -14
  327. package/types/ui/slider.d.ts.map +1 -1
  328. package/types/ui/tabs.d.ts +6 -8
  329. package/types/ui/tabs.d.ts.map +1 -1
  330. package/types/ui/theme-toggle.d.ts +51 -7
  331. package/types/ui/theme-toggle.d.ts.map +1 -1
  332. package/types/ui/tooltip.d.ts +3 -5
  333. package/types/ui/tooltip.d.ts.map +1 -1
  334. package/types/utils/css.d.ts +11 -0
  335. package/types/utils/css.d.ts.map +1 -0
  336. package/types/utils/dom.d.ts +12 -32
  337. package/types/utils/dom.d.ts.map +1 -1
  338. package/types/utils/font-awesome.d.ts +5 -0
  339. package/types/utils/font-awesome.d.ts.map +1 -0
  340. package/types/utils/index.d.ts +1 -0
  341. package/types/utils/system.d.ts +113 -0
  342. package/types/utils/system.d.ts.map +1 -0
package/js/ui/print.js CHANGED
@@ -2,18 +2,14 @@
2
2
  * @module ui/print
3
3
  */
4
4
 
5
- import { getName } from "../events/index.js";
6
- import { getDatasetOptionalJson, getElement } from "../utils/dom.js";
5
+ import { ComponentInitializer } from "../utils/system.js";
6
+ import { getElement } from "@ulu/utils/browser/dom.js";
7
7
  import { printElement } from "@ulu/utils/browser/print.js";
8
8
 
9
- export const attrs = {
10
- trigger: "data-ulu-print",
11
- init: "data-ulu-print-init",
12
- };
13
-
14
- const attrSelector = key => `[${ attrs[key] }]`;
15
- const attrSelectorInitial = key => `${ attrSelector(key) }:not([${ attrs.init }])`;
16
- const queryAllInitial = key => document.querySelectorAll(attrSelectorInitial(key));
9
+ const initializer = new ComponentInitializer({
10
+ type: "print",
11
+ baseAttribute: "data-ulu-print"
12
+ });
17
13
 
18
14
  /**
19
15
  * Default options
@@ -30,27 +26,22 @@ const defaults = {
30
26
  * - This will only initialize elements once, it is safe to call on page changes
31
27
  */
32
28
  export function init() {
33
- document.addEventListener(getName("pageModified"), setup);
34
- setup();
35
- }
36
-
37
- /**
38
- * Setup all triggers currently on the page
39
- */
40
- function setup() {
41
- const triggers = queryAllInitial("trigger");
42
- triggers.forEach(trigger => {
43
- const options = getDatasetOptionalJson(trigger, "uluPrint");
44
- setupTrigger(trigger, options);
29
+ initializer.init({
30
+ withData: true,
31
+ events: ["pageModified"],
32
+ setup({ element, data, initialize }) {
33
+ setupTrigger(element, data);
34
+ initialize();
35
+ }
45
36
  });
46
37
  }
47
38
 
48
39
  /**
49
40
  * Setup a single trigger (can be used manually without attr if needed)
50
41
  */
51
- function setupTrigger(trigger, options) {
52
- const config = Object.assign({}, defaults, options);
53
- trigger.addEventListener("click", (event) => {
42
+ function setupTrigger(trigger, userOptions) {
43
+ const config = Object.assign({}, defaults, userOptions);
44
+ trigger.addEventListener("click", () => {
54
45
  // Option to print a specific element
55
46
  if (config.element) {
56
47
  const element = getElement(config.element);
@@ -6,6 +6,7 @@
6
6
  import { getName, dispatch } from "../events/index.js";
7
7
  import { newId } from "../utils/id.js";
8
8
  import { buildModal } from "./modal-builder.js";
9
+ import { getElement } from "@ulu/utils/browser/dom.js";
9
10
 
10
11
  export class ProgrammaticModalManager {
11
12
  static defaults = {
@@ -43,12 +44,17 @@ export class ProgrammaticModalManager {
43
44
  });
44
45
  }
45
46
  createAndOpen(config, afterCreate) {
46
- const { selector, noClickTrigger, removeOnClose } = config;
47
- const content = document.querySelector(selector);
47
+ const { noClickTrigger, removeOnClose, element, classes } = config;
48
+ const content = getElement(element);
48
49
  if (!content.id) {
49
50
  content.id = newId();
50
51
  }
51
52
 
53
+ // Added to match original jquery module api
54
+ if (classes) {
55
+ content.classList.add(...classes);
56
+ }
57
+
52
58
  let trigger;
53
59
  if (!noClickTrigger) {
54
60
  trigger = this.cachedTrigger;
@@ -57,7 +63,7 @@ export class ProgrammaticModalManager {
57
63
  }
58
64
 
59
65
  if (!content) {
60
- console.error("No element found from config.selector. ", config);
66
+ console.error("No element found from config.element. ", config);
61
67
  return;
62
68
  }
63
69
  const { modal } = buildModal(content, config.modal);
@@ -1,26 +1,27 @@
1
1
  /**
2
2
  * @module ui/proxy-click
3
+ * @description Used for cards and things that look like they should be clickable
4
+ * even though the link in their content is the only clickable element. This way
5
+ * the entire cards content doesn't need to be in a link (which isn't accessible).
6
+ *
7
+ * The script allows only for clicks with a duration of 250ms to avoid conflict
8
+ * with a user selecting text. Works with either links or buttons because it just
9
+ * uses the elements .click(). Uses data-attributes for selection by default.
3
10
  */
4
11
 
12
+ import { ComponentInitializer } from "../utils/system.js";
5
13
 
6
- // Used for cards and things that look like they should be clickable even
7
- // though the link in their content is the only clickable element. This way the
8
- // entire cards content doesn't need to be in a link (which isn't accessible)
9
- // - The script allows only for clicks with a duration of 250ms to avoid
10
- // conflict with a user selecting text.
11
- // - Works with either links or buttons because it just uses the elements .click()
12
- // - Uses data-attributes for selection
13
- import { getName } from "../events/index.js";
14
- import { getDatasetOptionalJson } from "../utils/dom.js";
15
-
16
- const attrs = {
17
- trigger: "data-ulu-proxy-click",
18
- init: "data-ulu-proxy-click-init",
19
- };
20
-
21
- const attrSelector = key => `[${ attrs[key] }]`;
22
- const attrSelectorInitial = key => `${ attrSelector(key) }:not([${ attrs.init }])`;
14
+ /**
15
+ * Proxy Click Component Initializer
16
+ */
17
+ export const initializer = new ComponentInitializer({
18
+ type: "proxy-click",
19
+ baseAttribute: "data-ulu-proxy-click"
20
+ });
23
21
 
22
+ /**
23
+ * Default options
24
+ */
24
25
  export const defaults = {
25
26
  selector: "[data-ulu-proxy-click-source]",
26
27
  selectorPreventBase: "input, select, textarea, button, a, [tabindex='-1']",
@@ -32,7 +33,7 @@ export const defaults = {
32
33
  let currentDefaults = { ...defaults };
33
34
 
34
35
  /**
35
- * @param {Object} options Change options used as default for dialogs, can then be overriden by data attribute settings on element
36
+ * @param {Object} options Change options used as default for dialogs, can then be overridden by data attribute settings on element
36
37
  */
37
38
  export function setDefaults(options) {
38
39
  currentDefaults = Object.assign({}, currentDefaults, options);
@@ -42,26 +43,39 @@ export function setDefaults(options) {
42
43
  * - This will only initialize elements once, it is safe to call on page changes
43
44
  */
44
45
  export function init() {
45
- document.addEventListener(getName("pageModified"), () => setup());
46
- setup();
47
- }
48
-
49
- export function setup(context = document) {
50
- const proxies = context.querySelectorAll(attrSelectorInitial("trigger"));
51
- proxies.forEach(proxy => {
52
- const elOptions = getDatasetOptionalJson(proxy, "siteProxyClick");
53
- const options = Object.assign({}, currentDefaults, elOptions);
54
- const child = proxy.querySelector(options.selector);
55
- if (child) {
56
- attachHandlers(proxy, child, options);
57
- proxy.setAttribute(attrs.init, "");
58
- } else {
59
- console.error("Unable to locate proxy click source", options.selector);
46
+ initializer.init({
47
+ withData: true,
48
+ events: ["pageModified"],
49
+ setup({ element, data, initialize }) {
50
+ setupProxy(element, data);
51
+ initialize();
60
52
  }
61
53
  });
62
54
  }
63
- export function attachHandlers(proxy, child, options) {
64
- const { selectorPreventBase: spb, selectorPrevent: sp } = options;
55
+
56
+ /**
57
+ * Setup a single proxy click
58
+ * @param {Node} proxy The container who's click should proxy the click of inner element with options.selector (defaults to [data-ulu-proxy-click-source])
59
+ * @param {Object} userOptions Options to override defaults
60
+ */
61
+ export function setupProxy(proxy, userOptions) {
62
+ const options = Object.assign({}, currentDefaults, userOptions);
63
+ const child = proxy.querySelector(options.selector);
64
+ if (child) {
65
+ attachHandlers(proxy, child, options);
66
+ } else {
67
+ console.error("Unable to locate proxy click source", options.selector);
68
+ }
69
+ }
70
+
71
+ /**
72
+ * Main function for attaching behaviors that enable proxy click
73
+ * @param {Node} proxy The container who's click should proxy the click of inner element with options.selector (defaults to [data-ulu-proxy-click-source])
74
+ * @param {Node} child The element who is being proxied and will get clicked if the proxy is clicked (as long as not an interactive element within proxy)
75
+ * @param {Object} config Merged/final options object
76
+ */
77
+ export function attachHandlers(proxy, child, config) {
78
+ const { selectorPreventBase: spb, selectorPrevent: sp } = config;
65
79
  const selectorPrevent = `${ spb }${ sp ? `, ${ sp }` : "" }`;
66
80
  let start, shouldProxy;
67
81
  proxy.addEventListener("mousedown", ({ target, timeStamp }) => {
@@ -72,7 +86,7 @@ export function attachHandlers(proxy, child, options) {
72
86
  }
73
87
  });
74
88
  proxy.addEventListener("mouseup", ({ timeStamp }) => {
75
- if (shouldProxy && timeStamp - start < options.mousedownDurationPrevent) {
89
+ if (shouldProxy && timeStamp - start < config.mousedownDurationPrevent) {
76
90
  child.click();
77
91
  }
78
92
  });