@graupl/graupl 1.0.0-beta.1 → 1.0.0-beta.11

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 (382) hide show
  1. package/dist/css/base/button.css +1 -1
  2. package/dist/css/base/button.css.map +1 -1
  3. package/dist/css/base/form.css +1 -1
  4. package/dist/css/base/form.css.map +1 -1
  5. package/dist/css/base/link.css +1 -1
  6. package/dist/css/base/link.css.map +1 -1
  7. package/dist/css/base/table.css +1 -1
  8. package/dist/css/base/table.css.map +1 -1
  9. package/dist/css/base.css +1 -1
  10. package/dist/css/base.css.map +1 -1
  11. package/dist/css/component/accordion.css +4 -1
  12. package/dist/css/component/accordion.css.map +1 -1
  13. package/dist/css/component/alert.css +1 -1
  14. package/dist/css/component/alert.css.map +1 -1
  15. package/dist/css/component/card.css +1 -1
  16. package/dist/css/component/card.css.map +1 -1
  17. package/dist/css/component/carousel.css +1 -1
  18. package/dist/css/component/carousel.css.map +1 -1
  19. package/dist/css/component/input-group.css +1 -1
  20. package/dist/css/component/input-group.css.map +1 -1
  21. package/dist/css/component/list.css +2 -0
  22. package/dist/css/component/list.css.map +1 -0
  23. package/dist/css/component/menu.css +1 -1
  24. package/dist/css/component/menu.css.map +1 -1
  25. package/dist/css/component/navigation.css +1 -1
  26. package/dist/css/component/navigation.css.map +1 -1
  27. package/dist/css/component.css +4 -1
  28. package/dist/css/component.css.map +1 -1
  29. package/dist/css/graupl.css +4 -1
  30. package/dist/css/graupl.css.map +1 -1
  31. package/dist/css/init.css.map +1 -1
  32. package/dist/css/layout/columns.css +1 -1
  33. package/dist/css/layout/columns.css.map +1 -1
  34. package/dist/css/layout/container.css +1 -1
  35. package/dist/css/layout/container.css.map +1 -1
  36. package/dist/css/layout/flex-columns.css +1 -1
  37. package/dist/css/layout/flex-columns.css.map +1 -1
  38. package/dist/css/layout.css +4 -1
  39. package/dist/css/layout.css.map +1 -1
  40. package/dist/css/normalize.css +1 -1
  41. package/dist/css/normalize.css.map +1 -1
  42. package/dist/css/state/focus.css +1 -1
  43. package/dist/css/state/focus.css.map +1 -1
  44. package/dist/css/state.css +1 -1
  45. package/dist/css/state.css.map +1 -1
  46. package/dist/css/theme/color.css +1 -1
  47. package/dist/css/theme/color.css.map +1 -1
  48. package/dist/css/theme/typography.css +1 -1
  49. package/dist/css/theme/typography.css.map +1 -1
  50. package/dist/css/theme.css +1 -1
  51. package/dist/css/theme.css.map +1 -1
  52. package/dist/css/utilities/alignment.css +1 -1
  53. package/dist/css/utilities/alignment.css.map +1 -1
  54. package/dist/css/utilities/background.css +2 -0
  55. package/dist/css/utilities/background.css.map +1 -0
  56. package/dist/css/utilities/border.css +2 -0
  57. package/dist/css/utilities/border.css.map +1 -0
  58. package/dist/css/utilities/color.css +1 -1
  59. package/dist/css/utilities/color.css.map +1 -1
  60. package/dist/css/utilities/container.css +2 -0
  61. package/dist/css/utilities/container.css.map +1 -0
  62. package/dist/css/utilities/display.css +1 -1
  63. package/dist/css/utilities/display.css.map +1 -1
  64. package/dist/css/utilities/flex.css +1 -1
  65. package/dist/css/utilities/flex.css.map +1 -1
  66. package/dist/css/utilities/gradient.css +2 -0
  67. package/dist/css/utilities/gradient.css.map +1 -0
  68. package/dist/css/utilities/height.css +1 -1
  69. package/dist/css/utilities/height.css.map +1 -1
  70. package/dist/css/utilities/inset.css +1 -1
  71. package/dist/css/utilities/inset.css.map +1 -1
  72. package/dist/css/utilities/justification.css +1 -1
  73. package/dist/css/utilities/justification.css.map +1 -1
  74. package/dist/css/utilities/list.css +1 -1
  75. package/dist/css/utilities/list.css.map +1 -1
  76. package/dist/css/utilities/order.css +1 -1
  77. package/dist/css/utilities/order.css.map +1 -1
  78. package/dist/css/utilities/position.css +2 -0
  79. package/dist/css/utilities/position.css.map +1 -0
  80. package/dist/css/utilities/ratio.css +1 -1
  81. package/dist/css/utilities/ratio.css.map +1 -1
  82. package/dist/css/utilities/spacing.css +1 -1
  83. package/dist/css/utilities/spacing.css.map +1 -1
  84. package/dist/css/utilities/typography.css +1 -1
  85. package/dist/css/utilities/typography.css.map +1 -1
  86. package/dist/css/utilities/visibility.css +1 -1
  87. package/dist/css/utilities/visibility.css.map +1 -1
  88. package/dist/css/utilities/visually-hidden.css +2 -0
  89. package/dist/css/utilities/visually-hidden.css.map +1 -0
  90. package/dist/css/utilities/width.css +1 -1
  91. package/dist/css/utilities/width.css.map +1 -1
  92. package/dist/css/utilities/z-index.css +2 -0
  93. package/dist/css/utilities/z-index.css.map +1 -0
  94. package/dist/css/utilities.css +1 -1
  95. package/dist/css/utilities.css.map +1 -1
  96. package/dist/js/accordion.js +5 -0
  97. package/dist/js/accordion.js.map +1 -0
  98. package/dist/js/alert.js +5 -0
  99. package/dist/js/alert.js.map +1 -0
  100. package/dist/js/carousel.js +5 -0
  101. package/dist/js/carousel.js.map +1 -0
  102. package/dist/js/component/accordion.cjs.js +4 -2
  103. package/dist/js/component/accordion.cjs.js.map +1 -0
  104. package/dist/js/component/accordion.es.js +5 -0
  105. package/dist/js/component/accordion.es.js.map +1 -0
  106. package/dist/js/component/accordion.iife.js +4 -2
  107. package/dist/js/component/accordion.iife.js.map +1 -0
  108. package/dist/js/component/alert.cjs.js +4 -2
  109. package/dist/js/component/alert.cjs.js.map +1 -0
  110. package/dist/js/component/alert.es.js +5 -0
  111. package/dist/js/component/alert.es.js.map +1 -0
  112. package/dist/js/component/alert.iife.js +4 -2
  113. package/dist/js/component/alert.iife.js.map +1 -0
  114. package/dist/js/component/carousel.cjs.js +4 -2
  115. package/dist/js/component/carousel.cjs.js.map +1 -0
  116. package/dist/js/component/carousel.es.js +5 -0
  117. package/dist/js/component/carousel.es.js.map +1 -0
  118. package/dist/js/component/carousel.iife.js +4 -2
  119. package/dist/js/component/carousel.iife.js.map +1 -0
  120. package/dist/js/generator/accordion.cjs.js +5 -0
  121. package/dist/js/generator/accordion.cjs.js.map +1 -0
  122. package/dist/js/generator/accordion.es.js +5 -0
  123. package/dist/js/generator/accordion.es.js.map +1 -0
  124. package/dist/js/generator/accordion.iife.js +5 -0
  125. package/dist/js/generator/accordion.iife.js.map +1 -0
  126. package/dist/js/generator/carousel.cjs.js +5 -0
  127. package/dist/js/generator/carousel.cjs.js.map +1 -0
  128. package/dist/js/generator/carousel.es.js +5 -0
  129. package/dist/js/generator/carousel.es.js.map +1 -0
  130. package/dist/js/generator/carousel.iife.js +5 -0
  131. package/dist/js/generator/carousel.iife.js.map +1 -0
  132. package/dist/js/generator/navigation.cjs.js +3 -0
  133. package/dist/js/generator/navigation.cjs.js.map +1 -0
  134. package/dist/js/generator/navigation.es.js +3 -0
  135. package/dist/js/generator/navigation.es.js.map +1 -0
  136. package/dist/js/generator/navigation.iife.js +3 -0
  137. package/dist/js/generator/navigation.iife.js.map +1 -0
  138. package/dist/js/graupl.js +9 -0
  139. package/dist/js/graupl.js.map +1 -0
  140. package/dist/js/navigation.js +3 -0
  141. package/dist/js/navigation.js.map +1 -0
  142. package/package.json +43 -37
  143. package/scss/base/button.scss +1 -1
  144. package/scss/base/form.scss +1 -1
  145. package/scss/base/link.scss +1 -1
  146. package/scss/base/table.scss +1 -1
  147. package/scss/base.scss +1 -1
  148. package/scss/component/accordion.scss +1 -1
  149. package/scss/component/alert.scss +1 -1
  150. package/scss/component/card.scss +1 -1
  151. package/scss/component/carousel.scss +1 -1
  152. package/scss/component/input-group.scss +1 -1
  153. package/scss/component/list.scss +3 -0
  154. package/scss/component/menu.scss +1 -1
  155. package/scss/component/navigation.scss +1 -1
  156. package/scss/component.scss +1 -1
  157. package/scss/graupl.scss +1 -1
  158. package/scss/init.scss +1 -1
  159. package/scss/layout/columns.scss +1 -1
  160. package/scss/layout/container.scss +1 -1
  161. package/scss/layout/flex-columns.scss +1 -1
  162. package/scss/layout.scss +1 -1
  163. package/scss/normalize.scss +1 -1
  164. package/scss/state/focus.scss +1 -1
  165. package/scss/state.scss +1 -1
  166. package/scss/theme/color.scss +1 -1
  167. package/scss/theme/typography.scss +1 -1
  168. package/scss/theme.scss +1 -1
  169. package/scss/utilities/alignment.scss +1 -1
  170. package/scss/utilities/background.scss +3 -0
  171. package/scss/utilities/border.scss +3 -0
  172. package/scss/utilities/color.scss +1 -1
  173. package/scss/utilities/container.scss +3 -0
  174. package/scss/utilities/display.scss +1 -1
  175. package/scss/utilities/flex.scss +1 -1
  176. package/scss/utilities/gradient.scss +3 -0
  177. package/scss/utilities/height.scss +1 -1
  178. package/scss/utilities/inset.scss +1 -1
  179. package/scss/utilities/justification.scss +1 -1
  180. package/scss/utilities/list.scss +1 -1
  181. package/scss/utilities/order.scss +1 -1
  182. package/scss/utilities/position.scss +3 -0
  183. package/scss/utilities/ratio.scss +1 -1
  184. package/scss/utilities/spacing.scss +1 -1
  185. package/scss/utilities/typography.scss +1 -1
  186. package/scss/utilities/visibility.scss +1 -1
  187. package/scss/utilities/visually-hidden.scss +3 -0
  188. package/scss/utilities/width.scss +1 -1
  189. package/scss/utilities/z-index.scss +3 -0
  190. package/scss/utilities.scss +1 -1
  191. package/.browserslistrc +0 -3
  192. package/.czrc +0 -3
  193. package/.editorconfig +0 -13
  194. package/.github/CODE_OF_CONDUCT.md +0 -73
  195. package/.github/COMMIT_CONVENTION.md +0 -17
  196. package/.github/CONTRIBUTING.md +0 -86
  197. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -30
  198. package/.github/ISSUE_TEMPLATE/documentation.md +0 -20
  199. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
  200. package/.github/SECURITY.md +0 -26
  201. package/.github/dependabot.yml +0 -17
  202. package/.github/pull_request_template.md +0 -5
  203. package/.github/workflows/codeql-analysis.yml +0 -71
  204. package/.github/workflows/docs.yml +0 -59
  205. package/.github/workflows/test.yml +0 -27
  206. package/.husky/commit-msg +0 -3
  207. package/.husky/pre-commit +0 -4
  208. package/.prettierignore +0 -12
  209. package/.stylelintignore +0 -9
  210. package/.versionrc.cjs +0 -61
  211. package/CHANGELOG.md +0 -364
  212. package/build.js +0 -7
  213. package/commitlint.config.js +0 -5
  214. package/dist/css/utilities/postion.css +0 -2
  215. package/dist/css/utilities/postion.css.map +0 -1
  216. package/dist/js/component/accordion.esm.js +0 -1289
  217. package/dist/js/component/alert.esm.js +0 -529
  218. package/dist/js/component/carousel.esm.js +0 -1110
  219. package/dist/js/graupl.cjs.js +0 -5
  220. package/dist/js/graupl.esm.js +0 -1462
  221. package/dist/js/graupl.iife.js +0 -5
  222. package/docs/.vitepress/config.js +0 -78
  223. package/docs/.vitepress/theme/custom.scss +0 -35
  224. package/docs/.vitepress/theme/index.js +0 -4
  225. package/docs/compiling-graupl.md +0 -56
  226. package/docs/components/alert.md +0 -130
  227. package/docs/components/button.md +0 -84
  228. package/docs/components/card.md +0 -369
  229. package/docs/components/index.md +0 -1
  230. package/docs/components/inputgroup.md +0 -159
  231. package/docs/components/menu.md +0 -326
  232. package/docs/components/navigation.md +0 -158
  233. package/docs/content.md +0 -237
  234. package/docs/defaults.md +0 -121
  235. package/docs/forms.md +0 -79
  236. package/docs/functions.md +0 -9
  237. package/docs/getting-started.md +0 -1
  238. package/docs/index.md +0 -1
  239. package/docs/introduction.md +0 -25
  240. package/docs/layout.md +0 -200
  241. package/docs/mixins.md +0 -47
  242. package/docs/state.md +0 -67
  243. package/docs/theme.md +0 -258
  244. package/docs/utilities.md +0 -357
  245. package/eslint.config.js +0 -74
  246. package/index.html +0 -851
  247. package/index.js +0 -12
  248. package/lint-staged.config.js +0 -6
  249. package/postcss.config.cjs +0 -12
  250. package/prettier.config.js +0 -16
  251. package/scss/utilities/postion.scss +0 -3
  252. package/src/js/accordion/Accordion.js +0 -1163
  253. package/src/js/accordion/AccordionItem.js +0 -496
  254. package/src/js/accordion/index.js +0 -10
  255. package/src/js/alert/Alert.js +0 -581
  256. package/src/js/alert/index.js +0 -11
  257. package/src/js/carousel/Carousel.js +0 -1427
  258. package/src/js/carousel/index.js +0 -10
  259. package/src/js/domHelpers.js +0 -37
  260. package/src/js/eventHandlers.js +0 -39
  261. package/src/js/navigation/index.js +0 -36
  262. package/src/js/storage.js +0 -106
  263. package/src/js/validate.js +0 -225
  264. package/src/scss/_defaults.scss +0 -136
  265. package/src/scss/_index.scss +0 -15
  266. package/src/scss/_init.scss +0 -3
  267. package/src/scss/_normalize.scss +0 -197
  268. package/src/scss/_variables.scss +0 -53
  269. package/src/scss/base/_index.scss +0 -6
  270. package/src/scss/base/button/_defaults.scss +0 -60
  271. package/src/scss/base/button/_index.scss +0 -107
  272. package/src/scss/base/button/_mixins.scss +0 -166
  273. package/src/scss/base/button/_variables.scss +0 -176
  274. package/src/scss/base/form/_defaults.scss +0 -17
  275. package/src/scss/base/form/_index.scss +0 -93
  276. package/src/scss/base/form/_variables.scss +0 -153
  277. package/src/scss/base/link/_defaults.scss +0 -50
  278. package/src/scss/base/link/_index.scss +0 -134
  279. package/src/scss/base/link/_variables.scss +0 -262
  280. package/src/scss/base/table/_defaults.scss +0 -53
  281. package/src/scss/base/table/_index.scss +0 -121
  282. package/src/scss/base/table/_variables.scss +0 -135
  283. package/src/scss/component/_index.scss +0 -9
  284. package/src/scss/component/accordion/_defaults.scss +0 -40
  285. package/src/scss/component/accordion/_index.scss +0 -180
  286. package/src/scss/component/accordion/_variables.scss +0 -316
  287. package/src/scss/component/alert/_defaults.scss +0 -49
  288. package/src/scss/component/alert/_index.scss +0 -118
  289. package/src/scss/component/alert/_variables.scss +0 -170
  290. package/src/scss/component/card/_defaults.scss +0 -32
  291. package/src/scss/component/card/_index.scss +0 -178
  292. package/src/scss/component/card/_variables.scss +0 -186
  293. package/src/scss/component/carousel/_defaults.scss +0 -43
  294. package/src/scss/component/carousel/_index.scss +0 -188
  295. package/src/scss/component/carousel/_variables.scss +0 -104
  296. package/src/scss/component/input-group/_defaults.scss +0 -30
  297. package/src/scss/component/input-group/_index.scss +0 -47
  298. package/src/scss/component/input-group/_variables.scss +0 -66
  299. package/src/scss/component/menu/_defaults.scss +0 -66
  300. package/src/scss/component/menu/_index.scss +0 -305
  301. package/src/scss/component/menu/_variables.scss +0 -500
  302. package/src/scss/component/navigation/_defaults.scss +0 -29
  303. package/src/scss/component/navigation/_index.scss +0 -189
  304. package/src/scss/component/navigation/_variables.scss +0 -237
  305. package/src/scss/functions/_important.scss +0 -13
  306. package/src/scss/functions/_screen.scss +0 -30
  307. package/src/scss/functions/_theme.scss +0 -39
  308. package/src/scss/layout/_index.scss +0 -5
  309. package/src/scss/layout/columns/_defaults.scss +0 -19
  310. package/src/scss/layout/columns/_index.scss +0 -58
  311. package/src/scss/layout/columns/_variables.scss +0 -51
  312. package/src/scss/layout/container/_defaults.scss +0 -17
  313. package/src/scss/layout/container/_index.scss +0 -41
  314. package/src/scss/layout/container/_variables.scss +0 -50
  315. package/src/scss/layout/flex-columns/_defaults.scss +0 -18
  316. package/src/scss/layout/flex-columns/_index.scss +0 -80
  317. package/src/scss/layout/flex-columns/_variables.scss +0 -26
  318. package/src/scss/mixins/_animation.scss +0 -15
  319. package/src/scss/mixins/_layer.scss +0 -12
  320. package/src/scss/mixins/_screen.scss +0 -56
  321. package/src/scss/mixins/_utility.scss +0 -30
  322. package/src/scss/mixins/_visually-hidden.scss +0 -20
  323. package/src/scss/state/_index.scss +0 -3
  324. package/src/scss/state/focus/_defaults.scss +0 -10
  325. package/src/scss/state/focus/_index.scss +0 -13
  326. package/src/scss/state/focus/_mixins.scss +0 -15
  327. package/src/scss/state/focus/_variables.scss +0 -44
  328. package/src/scss/theme/_index.scss +0 -4
  329. package/src/scss/theme/color/_defaults.scss +0 -143
  330. package/src/scss/theme/color/_index.scss +0 -42
  331. package/src/scss/theme/color/_variables.scss +0 -129
  332. package/src/scss/theme/typography/_defaults.scss +0 -54
  333. package/src/scss/theme/typography/_index.scss +0 -111
  334. package/src/scss/theme/typography/_variables.scss +0 -231
  335. package/src/scss/utilities/_index.scss +0 -17
  336. package/src/scss/utilities/alignment/_defaults.scss +0 -62
  337. package/src/scss/utilities/alignment/_index.scss +0 -75
  338. package/src/scss/utilities/alignment/_variables.scss +0 -6
  339. package/src/scss/utilities/color/_defaults.scss +0 -35
  340. package/src/scss/utilities/color/_index.scss +0 -91
  341. package/src/scss/utilities/color/_variables.scss +0 -6
  342. package/src/scss/utilities/display/_defaults.scss +0 -32
  343. package/src/scss/utilities/display/_index.scss +0 -61
  344. package/src/scss/utilities/display/_variables.scss +0 -6
  345. package/src/scss/utilities/flex/_defaults.scss +0 -63
  346. package/src/scss/utilities/flex/_index.scss +0 -71
  347. package/src/scss/utilities/flex/_variables.scss +0 -6
  348. package/src/scss/utilities/height/_defaults.scss +0 -41
  349. package/src/scss/utilities/height/_index.scss +0 -98
  350. package/src/scss/utilities/height/_variables.scss +0 -6
  351. package/src/scss/utilities/inset/_defaults.scss +0 -41
  352. package/src/scss/utilities/inset/_index.scss +0 -37
  353. package/src/scss/utilities/inset/_variables.scss +0 -6
  354. package/src/scss/utilities/justification/_defaults.scss +0 -59
  355. package/src/scss/utilities/justification/_index.scss +0 -75
  356. package/src/scss/utilities/justification/_variables.scss +0 -6
  357. package/src/scss/utilities/list/_defaults.scss +0 -39
  358. package/src/scss/utilities/list/_index.scss +0 -56
  359. package/src/scss/utilities/list/_variables.scss +0 -6
  360. package/src/scss/utilities/order/_defaults.scss +0 -22
  361. package/src/scss/utilities/order/_index.scss +0 -63
  362. package/src/scss/utilities/order/_variables.scss +0 -6
  363. package/src/scss/utilities/position/_defaults.scss +0 -26
  364. package/src/scss/utilities/position/_index.scss +0 -37
  365. package/src/scss/utilities/position/_variables.scss +0 -6
  366. package/src/scss/utilities/ratio/_defaults.scss +0 -28
  367. package/src/scss/utilities/ratio/_index.scss +0 -52
  368. package/src/scss/utilities/ratio/_variables.scss +0 -9
  369. package/src/scss/utilities/spacing/_defaults.scss +0 -49
  370. package/src/scss/utilities/spacing/_index.scss +0 -169
  371. package/src/scss/utilities/spacing/_variables.scss +0 -6
  372. package/src/scss/utilities/typography/_defaults.scss +0 -30
  373. package/src/scss/utilities/typography/_index.scss +0 -224
  374. package/src/scss/utilities/typography/_variables.scss +0 -6
  375. package/src/scss/utilities/visibility/_defaults.scss +0 -25
  376. package/src/scss/utilities/visibility/_index.scss +0 -36
  377. package/src/scss/utilities/visibility/_variables.scss +0 -6
  378. package/src/scss/utilities/width/_defaults.scss +0 -41
  379. package/src/scss/utilities/width/_index.scss +0 -98
  380. package/src/scss/utilities/width/_variables.scss +0 -6
  381. package/stylelint.config.js +0 -21
  382. package/vite.config.js +0 -57
@@ -1,581 +0,0 @@
1
- /**
2
- * @file
3
- * The alert class.
4
- */
5
-
6
- import { isValidClassList, isValidInstance, isValidType } from "../validate.js";
7
- import { addClass, removeClass } from "../domHelpers.js";
8
- import { keyPress, preventEvent } from "../eventHandlers.js";
9
- import storage from "../storage.js";
10
-
11
- class Alert {
12
- /**
13
- * The HTML elements for the alert in the DOM.
14
- *
15
- * @protected
16
- *
17
- * @type {Object<HTMLElement>}
18
- */
19
- _dom = {
20
- alert: null,
21
- controller: null,
22
- };
23
-
24
- /**
25
- * A flag to determine if the alert is hidden.
26
- *
27
- * @protected
28
- *
29
- * @type {boolean}
30
- */
31
- _hidden = false;
32
-
33
- /**
34
- * The class to use to show the alert.
35
- *
36
- * @protected
37
- *
38
- * @type {string|string[]}
39
- */
40
- _showClass = "";
41
-
42
- /**
43
- * The class to use to hide the alert.
44
- *
45
- * @protected
46
- *
47
- * @type {string|string[]}
48
- */
49
- _hideClass = "";
50
-
51
- /**
52
- * The class to use when transitioning the alert.
53
- *
54
- * @protected
55
- *
56
- * @type {string|string[]}
57
- */
58
- _transitionClass = "";
59
-
60
- /**
61
- * The time in milliseconds the transition will take.
62
- *
63
- * @protected
64
- *
65
- * @type {number}
66
- */
67
- _transitionTimer = 150;
68
-
69
- /**
70
- * The key used to generate IDs throughout the carousel.
71
- *
72
- * @protected
73
- *
74
- * @type {string}
75
- */
76
- _key = "";
77
-
78
- /**
79
- * An array of error messages generated by the alert.
80
- *
81
- * @protected
82
- *
83
- * @type {string[]}
84
- */
85
- _errors = [];
86
-
87
- /**
88
- * The event that is triggered when the alert is shown.
89
- *
90
- * @protected
91
- *
92
- * @event grauplAlertShow
93
- *
94
- * @type {CustomEvent}
95
- *
96
- * @property {boolean} bubbles - A flag to bubble the event.
97
- * @property {Object<Alert>} detail - The details object container the Alert itself.
98
- */
99
- _showEvent = new CustomEvent("grauplAlertShow", {
100
- bubbles: true,
101
- detail: { alert: this },
102
- });
103
-
104
- /**
105
- * The event that is triggered when the alert is hidden.
106
- *
107
- * @protected
108
- *
109
- * @event grauplAlertHide
110
- *
111
- * @type {CustomEvent}
112
- *
113
- * @property {boolean} bubbles - A flag to bubble the event.
114
- * @property {Object<Alert>} detail - The details object containing the Alert itself.
115
- */
116
- _hideEvent = new CustomEvent("grauplAlertHide", {
117
- bubbles: true,
118
- detail: { alert: this },
119
- });
120
-
121
- /**
122
- * Constructs a new `Alert`.
123
- *
124
- * @param {object} options - The options object.
125
- * @param {HTMLElement} options.alertElement - The alert element.
126
- * @param {?HTMLElement} [options.controllerElement = null] - The controller element.
127
- * @param {string|string[]|null} [options.showClass = show] - The class to add when the alert is shown.
128
- * @param {string|string[]|null} [options.hideClass = hide] - The class to add when
129
- * @param {string|string[]|null} [options.transitionClass = transitioning] - The class to add when the alert is transitioning between shown and hidden.
130
- * @param {number} [options.transitionTimer = 150] - The time in milliseconds the transition will take.
131
- * @param {boolean} [options.isHidden = false] - A flag to determine the initial state of the alert.
132
- * @param {?string} [options.key = null] - The key used to generate IDs throughout the alert.
133
- * @param {boolean} [options.initialize = false] - AA flag to initialize the alert immediately upon creation.
134
- */
135
- constructor({
136
- alertElement,
137
- controllerElement = null,
138
- showClass = "show",
139
- hideClass = "hide",
140
- transitionClass = "transitioning",
141
- transitionTimer = 150,
142
- isHidden = false,
143
- key = null,
144
- initialize = false,
145
- }) {
146
- this._dom.alert = alertElement;
147
- this._dom.controller = controllerElement;
148
- this._showClass = showClass || "";
149
- this._hideClass = hideClass || "";
150
- this._transitionClass = transitionClass || "";
151
- this._transitionTimer = transitionTimer;
152
- this._hidden = isHidden;
153
-
154
- // Set the key.
155
- this._key = key || "";
156
-
157
- if (initialize) {
158
- this.initialize();
159
- }
160
- }
161
-
162
- /**
163
- * Initializes the alert.
164
- */
165
- initialize() {
166
- try {
167
- if (!this._validate()) {
168
- throw new Error(
169
- `Graupl Alert: cannot initialize alert. The following errors have been found:\n - ${this.errors.join(
170
- "\n - "
171
- )}`
172
- );
173
- }
174
-
175
- // Set up the DOM.
176
- this._generateKey();
177
- this._setIds();
178
-
179
- // Handle events.
180
- this._handleClick();
181
- this._handleKeydown();
182
- this._handleKeyup();
183
-
184
- // Set up the storage.
185
- storage.initializeStorage("alerts");
186
- storage.pushToStorage("alerts", this.dom.alert.id, this);
187
- } catch (error) {
188
- console.error(error);
189
- }
190
- }
191
-
192
- /**
193
- * The HTML elements for the alert in the DOM.
194
- *
195
- * @readonly
196
- *
197
- * @see _dom
198
- *
199
- * @type {object}
200
- */
201
- get dom() {
202
- return this._dom;
203
- }
204
-
205
- /**
206
- * The class to use the show the alert.
207
- *
208
- * @type {string|string[]}
209
- *
210
- * @see _showClass
211
- */
212
- get showClass() {
213
- return this._showClass;
214
- }
215
-
216
- /**
217
- * The class to use to hide the alert.
218
- *
219
- * @type {string|string[]}
220
- *
221
- * @see _hideClass
222
- */
223
- get hideClass() {
224
- return this._hideClass;
225
- }
226
-
227
- /**
228
- * The class to use when transitioning the alert.
229
- *
230
- * @type {string|string[]}
231
- *
232
- * @see _transitionClass
233
- */
234
- get transitionClass() {
235
- return this._transitionClass;
236
- }
237
-
238
- /**
239
- * The time in milliseconds the transition will take.
240
- *
241
- * @type {number}
242
- *
243
- * @see _transitionTimer
244
- */
245
- get transitionTimer() {
246
- return this._transitionTimer;
247
- }
248
-
249
- /**
250
- * The key used to generate IDs throughout the accordion.
251
- *
252
- * @type {string}
253
- *
254
- * @see _key
255
- */
256
- get key() {
257
- return this._key;
258
- }
259
-
260
- set showClass(value) {
261
- isValidClassList({ showClass: value });
262
-
263
- if (this._showClass !== value) {
264
- this._showClass = value;
265
- }
266
- }
267
-
268
- set hideClass(value) {
269
- isValidClassList({ hideClass: value });
270
-
271
- if (this._hideClass !== value) {
272
- this._hideClass = value;
273
- }
274
- }
275
-
276
- set transitionClass(value) {
277
- isValidClassList({ transitionClass: value });
278
-
279
- if (this._transitionClass !== value) {
280
- this._transitionClass = value;
281
- }
282
- }
283
-
284
- set transitionTimer(value) {
285
- isValidType("number", { transitionTimer: value });
286
-
287
- if (this._transitionTimer !== value) {
288
- this._transitionTimer = value;
289
- }
290
- }
291
-
292
- set key(value) {
293
- isValidType("string", { value });
294
-
295
- if (this._key !== value) {
296
- this._key = value;
297
- }
298
- }
299
-
300
- /**
301
- * Validates all aspects of the alert to ensure proper functionality.
302
- *
303
- * @protected
304
- *
305
- * @return {boolean} - The result of the validation.
306
- */
307
- _validate() {
308
- let check = true;
309
-
310
- // HTML element checks.
311
- let htmlElementChecks;
312
-
313
- if (this._dom.controller !== null) {
314
- htmlElementChecks = isValidInstance(HTMLElement, {
315
- alertElement: this._dom.alert,
316
- controllerElement: this._dom.controller,
317
- });
318
- } else {
319
- htmlElementChecks = isValidInstance(HTMLElement, {
320
- alertElement: this._dom.alert,
321
- });
322
- }
323
-
324
- if (!htmlElementChecks.status) {
325
- this._errors.push(htmlElementChecks.message);
326
- check = false;
327
- }
328
-
329
- // Class list checks.
330
- if (this._showClass !== "") {
331
- const showClassCheck = isValidClassList({ showClass: this._showClass });
332
-
333
- if (!showClassCheck.status) {
334
- this._errors.push(showClassCheck.message);
335
- check = false;
336
- }
337
- }
338
-
339
- if (this._hideClass !== "") {
340
- const hideClassCheck = isValidClassList({ hideClass: this._hideClass });
341
-
342
- if (!hideClassCheck.status) {
343
- this._errors.push(hideClassCheck.message);
344
- check = false;
345
- }
346
- }
347
-
348
- if (this._transitionClass !== "") {
349
- const transitionClassCheck = isValidClassList({
350
- transitionClass: this._transitionClass,
351
- });
352
-
353
- if (!transitionClassCheck.status) {
354
- this._errors.push(transitionClassCheck.message);
355
- check = false;
356
- }
357
- }
358
-
359
- // Transition timer check.
360
- const transitionTimerCheck = isValidType("number", {
361
- transitionTimer: this._transitionTimer,
362
- });
363
-
364
- if (!transitionTimerCheck.status) {
365
- this._errors.push(transitionTimerCheck.message);
366
- check = false;
367
- }
368
-
369
- // Hidden check.
370
- const hiddenCheck = isValidType("boolean", { isHidden: this._hidden });
371
-
372
- if (!hiddenCheck.status) {
373
- this._errors.push(hiddenCheck.message);
374
- check = false;
375
- }
376
-
377
- return check;
378
- }
379
-
380
- /**
381
- * Generates a key for the alert.
382
- *
383
- * @param {boolean} [regenerate = false] - A flag to determine if the key should be regenerated.
384
- */
385
- _generateKey(regenerate = false) {
386
- if (this.key === "" || regenerate) {
387
- this.key = Math.random()
388
- .toString(36)
389
- .replace(/[^a-z]+/g, "")
390
- .substring(0, 10);
391
- }
392
- }
393
-
394
- /**
395
- * Sets the IDs of the alert and it's children if they do not already exist.
396
- *
397
- * The generated IDs use the key and follow the format:
398
- * - alert: `alert-${key}`
399
- * - controller: `alert-controller-${key}`
400
- */
401
- _setIds() {
402
- this.dom.alert.id = this.dom.alert.id || `alert-${this.key}`;
403
- this.dom.controller.id =
404
- this.dom.controller.id || `alert-controller-${this.key}`;
405
- }
406
-
407
- /**
408
- * Shows the alert.
409
- *
410
- * @fires grauplAlertShow
411
- *
412
- * @param {boolean} [emit = true] - A toggle to emit the show event once shown.
413
- */
414
- show(emit = true) {
415
- if (!this._hidden) {
416
- return;
417
- }
418
-
419
- // If we're dealing with transition classes, then we need to utilize
420
- // requestAnimationFrame to add the transition class, remove the hide class,
421
- // add the show class, and finally remove the transition class.
422
- if (this.transitionClass !== "") {
423
- addClass(this.transitionClass, this.dom.alert);
424
-
425
- requestAnimationFrame(() => {
426
- if (this.hideClass !== "") {
427
- removeClass(this.hideClass, this.dom.alert);
428
- }
429
-
430
- requestAnimationFrame(() => {
431
- if (this.showClass !== "") {
432
- addClass(this.showClass, this.dom.alert);
433
- }
434
-
435
- requestAnimationFrame(() => {
436
- removeClass(this.transitionClass, this.dom.alert);
437
- });
438
- });
439
- });
440
- } else {
441
- // Add the show class
442
- if (this.showClass !== "") {
443
- addClass(this.showClass, this.dom.alert);
444
- }
445
-
446
- // Remove the hide class.
447
- if (this.hideClass !== "") {
448
- removeClass(this.hideClass, this.dom.alert);
449
- }
450
- }
451
-
452
- this._hidden = false;
453
-
454
- if (emit) {
455
- this.dom.alert.dispatchEvent(this._hideEvent);
456
- }
457
- }
458
-
459
- /**
460
- * Hides the alert.
461
- *
462
- * @fires grauplAlertHide
463
- *
464
- * @param {boolean} [emit = true] - A toggle to emit the hide event once shown.
465
- */
466
- hide(emit = true) {
467
- if (this._hidden) {
468
- return;
469
- }
470
- // If we're dealing with transition classes, then we need to utilize
471
- // requestAnimationFrame to add the transition class, remove the show class,
472
- // add the hide class, and finally remove the transition class.
473
- if (this.transitionClass !== "") {
474
- addClass(this.transitionClass, this.dom.alert);
475
-
476
- requestAnimationFrame(() => {
477
- if (this.showClass !== "") {
478
- removeClass(this.showClass, this.dom.alert);
479
- }
480
-
481
- requestAnimationFrame(() => {
482
- if (this.transitionTimer > 0) {
483
- setTimeout(() => {
484
- if (this.hideClass !== "") {
485
- addClass(this.hideClass, this.dom.alert);
486
- }
487
-
488
- requestAnimationFrame(() => {
489
- removeClass(this.transitionClass, this.dom.alert);
490
- });
491
- }, this.transitionTimer);
492
- } else {
493
- if (this.hideClass !== "") {
494
- addClass(this.hideClass, this.dom.alert);
495
- }
496
-
497
- requestAnimationFrame(() => {
498
- removeClass(this.transitionClass, this.dom.alert);
499
- });
500
- }
501
- });
502
- });
503
- } else {
504
- // Add the hide class
505
- if (this.hideClass !== "") {
506
- addClass(this.hideClass, this.dom.alert);
507
- }
508
-
509
- // Remove the show class.
510
- if (this.showClass !== "") {
511
- removeClass(this.showClass, this.dom.alert);
512
- }
513
- }
514
-
515
- this._hidden = true;
516
-
517
- if (emit) {
518
- this.dom.alert.dispatchEvent(this._hideEvent);
519
- }
520
- }
521
-
522
- /**
523
- * Handles click events throughout the alert for proper use.
524
- *
525
- * - Adds a `pointerup` listener to the controller that will hide the alert.
526
- *
527
- * @protected
528
- */
529
- _handleClick() {
530
- if (this.dom.controller === null) {
531
- return;
532
- }
533
-
534
- this.dom.controller.addEventListener("pointerup", () => this.hide());
535
- }
536
-
537
- /**
538
- * Handles keydown events throughout the alert for proper use.
539
- *
540
- * This method exists to assist the _handleKeyup method.
541
- *
542
- * - Adds a `keydown` listener to the controller (if it exists).
543
- * - Blocks propagation on "Space" and "Enter" keys.
544
- */
545
- _handleKeydown() {
546
- if (this.dom.controller === null) {
547
- return;
548
- }
549
-
550
- this.dom.controller.addEventListener("keydown", (event) => {
551
- const key = keyPress(event);
552
-
553
- // Prevent default behavior for space and enter keys.
554
- if (key === "Space" || key === "Enter") {
555
- preventEvent(event);
556
- }
557
- });
558
- }
559
-
560
- /**
561
- * Handles keyup events throughout the alert for proper use.
562
- *
563
- * - Adds a `keyup` listener to the controller (if it exists).
564
- * - Hides the alert when the user hits "Space" or "Enter".
565
- */
566
- _handleKeyup() {
567
- if (this.dom.controller === null) {
568
- return;
569
- }
570
-
571
- this.dom.controller.addEventListener("keyup", (event) => {
572
- const key = keyPress(event);
573
-
574
- if (key === "Space" || key === "Enter") {
575
- this.hide();
576
- }
577
- });
578
- }
579
- }
580
-
581
- export default Alert;
@@ -1,11 +0,0 @@
1
- import Alert from "./Alert.js";
2
-
3
- document.addEventListener("DOMContentLoaded", () => {
4
- document.querySelectorAll(".alert").forEach((alertElement) => {
5
- new Alert({
6
- alertElement,
7
- controllerElement: alertElement.querySelector(".alert-dismisser") || null,
8
- initialize: true,
9
- });
10
- });
11
- });