@simple-reporting/base 1.0.36 → 1.0.38

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 (275) hide show
  1. package/dev/.ddev/config.yaml +1 -1
  2. package/dev/.idea/codeStyles/Project.xml +61 -0
  3. package/dev/.idea/codeStyles/codeStyleConfig.xml +5 -0
  4. package/dev/.idea/copilot.data.migration.ask2agent.xml +6 -0
  5. package/dev/.idea/deployment.xml +14 -0
  6. package/dev/.idea/inspectionProfiles/Project_Default.xml +6 -0
  7. package/dev/.idea/modules.xml +8 -0
  8. package/dev/.idea/nsfd_report-demo-mms.iml +8 -0
  9. package/dev/.idea/php.xml +19 -0
  10. package/dev/.idea/prettier.xml +6 -0
  11. package/dev/.idea/vcs.xml +6 -0
  12. package/dev/.idea/watcherTasks.xml +4 -0
  13. package/dev/livingdocs.config.json +1192 -27
  14. package/dev/package.json +2 -3
  15. package/dev/src/App.vue +1 -2
  16. package/dev/src/Autoload.ts +1 -1
  17. package/dev/src/Dialog.vue +12 -61
  18. package/dev/src/assets/fonts/FontAwesome/font.scss +2 -0
  19. package/dev/src/assets/fonts/Inter/inter.scss +2 -4
  20. package/dev/src/assets/images/accordion-minus.svg +4 -0
  21. package/dev/src/assets/images/accordion-plus.svg +4 -0
  22. package/dev/src/assets/images/arrow-left.svg +5 -0
  23. package/dev/src/assets/images/arrow-right.svg +5 -0
  24. package/dev/src/assets/images/arrow-up.svg +5 -0
  25. package/dev/src/assets/images/chevron-down.svg +1 -0
  26. package/dev/src/assets/images/chevron-left.svg +1 -0
  27. package/dev/src/assets/images/chevron-right.svg +1 -0
  28. package/dev/src/assets/images/chevron-up.svg +1 -0
  29. package/dev/src/assets/images/close.svg +5 -0
  30. package/dev/src/assets/images/download.svg +6 -0
  31. package/dev/src/assets/images/facebook.svg +1 -0
  32. package/dev/src/assets/images/instagram.svg +1 -0
  33. package/dev/src/assets/images/language.svg +1 -0
  34. package/dev/src/assets/images/linkedIn.svg +1 -0
  35. package/dev/src/assets/images/logo.svg +1 -0
  36. package/dev/src/assets/images/menu-light.svg +3 -0
  37. package/dev/src/assets/images/menu.svg +3 -0
  38. package/dev/src/assets/images/nav-arrow-left.svg +3 -0
  39. package/dev/src/assets/images/nav-arrow-right.svg +3 -0
  40. package/dev/src/assets/images/search.svg +5 -0
  41. package/dev/src/assets/images/twitter.svg +1 -0
  42. package/dev/src/assets/images/xing.svg +1 -0
  43. package/dev/src/assets/scss/app.scss +9 -0
  44. package/dev/src/assets/scss/components/button.scss +37 -0
  45. package/dev/src/assets/scss/components/dialog.scss +84 -0
  46. package/dev/src/assets/scss/components/fontawesome.scss +56 -0
  47. package/dev/src/assets/scss/components/note/accordion.scss +55 -41
  48. package/dev/src/assets/scss/editor.scss +5 -5
  49. package/dev/src/assets/scss/general.scss +29 -2
  50. package/dev/src/assets/scss/margins.scss +57 -0
  51. package/dev/src/assets/scss/pdf.scss +0 -32
  52. package/dev/src/assets/scss/placeholders/breakout-grid.scss +34 -0
  53. package/dev/src/assets/scss/placeholders/button.scss +230 -0
  54. package/dev/src/assets/scss/placeholders/fontawesome.scss +7 -0
  55. package/dev/src/assets/scss/placeholders/grid.scss +354 -0
  56. package/dev/src/assets/scss/web.scss +17 -21
  57. package/dev/src/assets/scss/xbrl.scss +1 -0
  58. package/dev/src/components/Button/Default/Action.vue +65 -0
  59. package/dev/src/components/Button/Default/Content.vue +225 -0
  60. package/dev/src/components/Button/Default/ExternalLink.vue +63 -0
  61. package/dev/src/components/Button/Default/InternalLink.vue +64 -0
  62. package/dev/src/components/Button/Default.vue +101 -0
  63. package/dev/src/components/Page/MainNavigation.vue +96 -6
  64. package/dev/src/components/Page/MetaNavigation.vue +116 -0
  65. package/dev/src/components/Page/PrevNext.vue +140 -70
  66. package/dev/src/components/PageFooter.vue +405 -0
  67. package/dev/src/components/PageHeader.vue +828 -0
  68. package/dev/src/components/{Page/Main.vue → PageMain.vue} +11 -0
  69. package/dev/src/composables/globalLinks.ts +46 -0
  70. package/dev/src/composables/isDesktopView.ts +18 -0
  71. package/dev/src/composables/mainNavigation.ts +11 -0
  72. package/dev/src/entries/pdf.ts +5 -5
  73. package/dev/src/i18n/index.ts +1 -1
  74. package/dev/src/locales/de.json +40 -0
  75. package/dev/src/locales/en.json +40 -0
  76. package/dev/src/router/index.ts +1 -2
  77. package/dev/src/views/DevView.vue +1 -835
  78. package/dev/src/views/PageNotFound.vue +3 -69
  79. package/dev/srl.config.json +34 -49
  80. package/livingdocs/010.Titles/010.title-h1/scss/_spacing-variations.scss +17 -0
  81. package/livingdocs/010.Titles/010.title-h1/scss/general.scss +4 -0
  82. package/livingdocs/010.Titles/020.title-h2/scss/_spacing-variations.scss +12 -0
  83. package/livingdocs/010.Titles/020.title-h2/scss/general.scss +4 -0
  84. package/livingdocs/010.Titles/020.title-h2/title-h2.html +2 -1
  85. package/livingdocs/010.Titles/030.title-h3/scss/_spacing-variations.scss +13 -0
  86. package/livingdocs/010.Titles/030.title-h3/scss/general.scss +5 -1
  87. package/livingdocs/010.Titles/030.title-h3/title-h3.html +2 -1
  88. package/livingdocs/010.Titles/040.title-h4/scss/_spacing-variations.scss +12 -0
  89. package/livingdocs/010.Titles/040.title-h4/scss/general.scss +5 -1
  90. package/livingdocs/010.Titles/040.title-h4/title-h4.html +2 -1
  91. package/livingdocs/010.Titles/050.title-h5/scss/_spacing-variations.scss +11 -0
  92. package/livingdocs/010.Titles/050.title-h5/scss/general.scss +4 -0
  93. package/livingdocs/010.Titles/060.title-h6/scss/_spacing-variations.scss +10 -0
  94. package/livingdocs/010.Titles/060.title-h6/scss/general.scss +4 -0
  95. package/livingdocs/020.Text/010.lead/scss/_spacing-variations.scss +5 -0
  96. package/livingdocs/020.Text/010.lead/scss/general.scss +4 -0
  97. package/livingdocs/020.Text/020.paragraph/scss/_spacing-variations.scss +22 -0
  98. package/livingdocs/020.Text/020.paragraph/scss/general.scss +4 -0
  99. package/livingdocs/020.Text/060.quote-with-portrait/scss/_spacing-variations.scss +7 -0
  100. package/livingdocs/020.Text/060.quote-with-portrait/scss/general.scss +4 -1
  101. package/livingdocs/020.Text/060.quote-with-portrait/scss/pdf.scss +4 -10
  102. package/livingdocs/020.Text/060.quote-with-portrait/scss/web.scss +0 -1
  103. package/livingdocs/020.Text/070.footnote-container/scss/_spacing-variations.scss +22 -0
  104. package/livingdocs/020.Text/070.footnote-container/scss/general.scss +8 -0
  105. package/livingdocs/020.Text/070.footnote-container/scss/pdf.scss +0 -8
  106. package/livingdocs/020.Text/070.footnote-container/scss/web.scss +0 -5
  107. package/livingdocs/020.Text/070.footnote-container/scss/xbrl.scss +9 -1
  108. package/livingdocs/020.Text/080.footnote-item/scss/_spacing-variations.scss +4 -0
  109. package/livingdocs/020.Text/080.footnote-item/scss/general.scss +28 -1
  110. package/livingdocs/020.Text/080.footnote-item/scss/web.scss +0 -20
  111. package/livingdocs/020.Text/080.footnote-item/scss/xbrl.scss +26 -1
  112. package/livingdocs/030.Lists/010.unordered-list/ld-conf.json +3 -3
  113. package/livingdocs/030.Lists/010.unordered-list/scss/_spacing-variations.scss +22 -0
  114. package/livingdocs/030.Lists/010.unordered-list/scss/general.scss +3 -5
  115. package/livingdocs/030.Lists/010.unordered-list/scss/pdf.scss +3 -1
  116. package/livingdocs/030.Lists/010.unordered-list/scss/web.scss +15 -1
  117. package/livingdocs/030.Lists/010.unordered-list/scss/word.scss +1 -6
  118. package/livingdocs/030.Lists/010.unordered-list/scss/xbrl.scss +2 -1
  119. package/livingdocs/030.Lists/020.ordered-list/ld-conf.json +3 -3
  120. package/livingdocs/030.Lists/030.alphanumeric-list/ld-conf.json +3 -3
  121. package/livingdocs/030.Lists/040.list-item-unordered-list/ld-conf.json +23 -0
  122. package/livingdocs/030.Lists/040.list-item-unordered-list/list-item-unordered-list.html +8 -0
  123. package/livingdocs/030.Lists/040.list-item-unordered-list/scss/_spacing-variations.scss +4 -0
  124. package/livingdocs/030.Lists/040.list-item-unordered-list/scss/general.scss +14 -0
  125. package/livingdocs/030.Lists/{040.list-item → 040.list-item-unordered-list}/scss/pdf.scss +7 -1
  126. package/livingdocs/030.Lists/{040.list-item/scss/general.scss → 040.list-item-unordered-list/scss/web.scss} +17 -6
  127. package/livingdocs/030.Lists/040.list-item-unordered-list/scss/word.scss +5 -0
  128. package/livingdocs/030.Lists/040.list-item-unordered-list/scss/xbrl.scss +2 -0
  129. package/livingdocs/030.Lists/050.list-item-ordered-list/ld-conf.json +23 -0
  130. package/livingdocs/030.Lists/050.list-item-ordered-list/list-item-ordered-list.html +8 -0
  131. package/livingdocs/030.Lists/060.list-item-alphanumeric-list/ld-conf.json +23 -0
  132. package/livingdocs/030.Lists/060.list-item-alphanumeric-list/list-item-alphanumeric-list.html +8 -0
  133. package/livingdocs/040.Media/010.table/scss/_spacing-variations.scss +19 -0
  134. package/livingdocs/040.Media/010.table/scss/general.scss +270 -251
  135. package/livingdocs/040.Media/010.table/scss/pdf.scss +2 -18
  136. package/livingdocs/040.Media/010.table/scss/web.scss +0 -19
  137. package/livingdocs/040.Media/010.table/scss/xbrl.scss +4 -3
  138. package/livingdocs/040.Media/020.image/scss/_spacing-variations.scss +7 -0
  139. package/livingdocs/040.Media/020.image/scss/editor.scss +0 -1
  140. package/livingdocs/040.Media/020.image/scss/general.scss +6 -2
  141. package/livingdocs/040.Media/020.image/scss/pdf.scss +0 -4
  142. package/livingdocs/040.Media/020.image/scss/web.scss +0 -5
  143. package/livingdocs/040.Media/020.image/scss/xbrl.scss +1 -3
  144. package/livingdocs/040.Media/030.video/scss/_spacing-variations.scss +7 -0
  145. package/livingdocs/040.Media/030.video/scss/general.scss +19 -0
  146. package/livingdocs/040.Media/030.video/scss/pdf.scss +0 -10
  147. package/livingdocs/040.Media/030.video/scss/web.scss +0 -11
  148. package/livingdocs/040.Media/030.video/scss/xbrl.scss +1 -4
  149. package/livingdocs/060.Buttons/020.button/scss/general.scss +14 -75
  150. package/livingdocs/070.Container/020.columns-container/columns-container.html +1 -1
  151. package/livingdocs/070.Container/030.background-container/background-container.html +3 -0
  152. package/livingdocs/070.Container/030.background-container/ld-conf.json +4 -0
  153. package/livingdocs/070.Container/030.background-container/properties.json +1 -0
  154. package/livingdocs/070.Container/030.background-container/scss/_spacing-variations.scss +3 -0
  155. package/livingdocs/070.Container/030.background-container/scss/general.scss +9 -0
  156. package/livingdocs/070.Container/030.background-container/scss/pdf.scss +13 -0
  157. package/livingdocs/070.Container/030.background-container/scss/web.scss +1 -0
  158. package/livingdocs/070.Container/030.background-container/scss/word.scss +1 -0
  159. package/livingdocs/070.Container/030.background-container/scss/xbrl.scss +3 -0
  160. package/livingdocs/080.CV/010.cv/cv.html +2 -1
  161. package/livingdocs/080.CV/010.cv/scss/_spacing-variations.scss +5 -0
  162. package/livingdocs/080.CV/010.cv/scss/app.scss +16 -1
  163. package/livingdocs/080.CV/010.cv/scss/general.scss +4 -0
  164. package/livingdocs/080.CV/010.cv/scss/pdf.scss +2 -3
  165. package/livingdocs/080.CV/010.cv/scss/web.scss +17 -1
  166. package/livingdocs/080.CV/020.cv-time-span/scss/_spacing-variations.scss +14 -0
  167. package/livingdocs/080.CV/020.cv-time-span/scss/general.scss +4 -0
  168. package/livingdocs/080.CV/020.cv-time-span/scss/web.scss +0 -1
  169. package/livingdocs/100.Misc/010.anchor/scss/editor.scss +0 -1
  170. package/livingdocs/100.Misc/020.accordion/accordion.html +54 -7
  171. package/livingdocs/100.Misc/020.accordion/accordion.vue +83 -0
  172. package/livingdocs/100.Misc/020.accordion/scss/editor.scss +12 -0
  173. package/livingdocs/110.PDF/010.pdf-pagebreak/scss/editor.scss +0 -1
  174. package/livingdocs/110.PDF/021.pdf-columnbreak/scss/editor.scss +0 -1
  175. package/livingdocs/110.PDF/030.pdf-publication-title/scss/editor.scss +0 -1
  176. package/livingdocs/110.PDF/040.pdf-chapter-title/scss/editor.scss +0 -1
  177. package/livingdocs/110.PDF/050.pdf-chapter-navigation-container/scss/editor.scss +1 -1
  178. package/livingdocs/110.PDF/075.pdf-landscape-container/ld-conf.json +7 -0
  179. package/livingdocs/110.PDF/075.pdf-landscape-container/pdf-landscape-container.html +9 -0
  180. package/livingdocs/110.PDF/075.pdf-landscape-container/properties.json +15 -0
  181. package/livingdocs/110.PDF/075.pdf-landscape-container/scss/pdf.scss +19 -0
  182. package/livingdocs/110.PDF/100.pdf-toc-item/pdf-toc-item.html +3 -2
  183. package/livingdocs/110.PDF/100.pdf-toc-item/scss/general.scss +6 -5
  184. package/livingdocs/110.PDF/100.pdf-toc-item/scss/pdf.scss +9 -1
  185. package/livingdocs/130.Hosting_Components/010.download-center/download-center.html +7 -0
  186. package/livingdocs/130.Hosting_Components/010.download-center/download-center.vue +68 -0
  187. package/livingdocs/130.Hosting_Components/010.download-center/ld-conf.json +4 -0
  188. package/livingdocs/130.Hosting_Components/010.download-center/properties.json +1 -0
  189. package/livingdocs/130.Hosting_Components/010.download-center/scss/_spacing-variations.scss +3 -0
  190. package/livingdocs/130.Hosting_Components/010.download-center/scss/editor.scss +15 -0
  191. package/livingdocs/130.Hosting_Components/010.download-center/scss/general.scss +1 -0
  192. package/livingdocs/130.Hosting_Components/010.download-center/scss/pdf.scss +1 -0
  193. package/livingdocs/130.Hosting_Components/010.download-center/scss/web.scss +42 -0
  194. package/livingdocs/130.Hosting_Components/020.search/ld-conf.json +4 -0
  195. package/livingdocs/130.Hosting_Components/020.search/properties.json +1 -0
  196. package/livingdocs/130.Hosting_Components/020.search/scss/_spacing-variations.scss +4 -0
  197. package/livingdocs/130.Hosting_Components/020.search/scss/editor.scss +14 -0
  198. package/livingdocs/130.Hosting_Components/020.search/scss/general.scss +1 -0
  199. package/livingdocs/130.Hosting_Components/020.search/scss/pdf.scss +1 -0
  200. package/livingdocs/130.Hosting_Components/020.search/scss/web.scss +200 -0
  201. package/livingdocs/130.Hosting_Components/020.search/search.html +7 -0
  202. package/livingdocs/130.Hosting_Components/020.search/search.vue +484 -0
  203. package/livingdocs/999.Properties/breakout-grid/web.scss +5 -0
  204. package/livingdocs/999.Properties/grid/scss/app.scss +1 -0
  205. package/livingdocs/999.Properties/grid/scss/general.scss +31 -0
  206. package/livingdocs/999.Properties/grid/scss/pdf.scss +9 -0
  207. package/livingdocs/999.Properties/grid/scss/web.scss +1 -0
  208. package/livingdocs/999.Properties/grid/scss/xbrl.scss +2 -0
  209. package/livingdocs/999.Properties/icon/properties.json +2 -2
  210. package/package.json +1 -1
  211. package/plugins/viteSrlPlugin.js +16 -1
  212. package/scripts/build.js +1 -0
  213. package/scripts/config.js +6 -2
  214. package/scss/button.scss +25 -0
  215. package/scss/fa/font-free.scss +17 -0
  216. package/scss/fa/font-pro.scss +41 -0
  217. package/scss/fa/index.scss +118 -0
  218. package/scss/fa/source-free.scss +14 -0
  219. package/scss/fa/source-pro.scss +15 -0
  220. package/scss/index.scss +1 -0
  221. package/srl/.srl/components/Srl/Aria/TabChain.vue +6 -5
  222. package/srl/.srl/components/Srl/Article/Accordion.vue +37 -24
  223. package/srl/.srl/components/Srl/Article/Dialog/Button.vue +6 -5
  224. package/srl/.srl/components/Srl/Article/Root.vue +4 -1
  225. package/srl/.srl/components/Srl/Category/Accordion/Content.vue +2 -2
  226. package/srl/.srl/components/Srl/Category/Accordion/Toggle.vue +17 -8
  227. package/srl/.srl/components/Srl/Category/Accordion.vue +8 -5
  228. package/srl/.srl/components/Srl/Menu/Item.vue +20 -5
  229. package/srl/.srl/components/Srl/Page/Dialog.vue +31 -14
  230. package/srl/.srl/types/nswow.d.ts +6 -1
  231. package/srl/.srl/utils/index.ts +2 -0
  232. package/srl/.srl/utils/pageState.ts +24 -23
  233. package/srl/srl/button.scss +2 -0
  234. package/srl/srl/fa/font-free.scss +17 -0
  235. package/srl/srl/fa/font-pro.scss +41 -0
  236. package/srl/srl/fa/index.scss +118 -0
  237. package/srl/srl/fa/source-free.scss +14 -0
  238. package/srl/srl/fa/source-pro.scss +15 -0
  239. package/dev/src/assets/fonts/Inter/Inter-Regular.ttf +0 -0
  240. package/dev/src/assets/fonts/Inter/Inter-SemiBold.ttf +0 -0
  241. package/dev/src/assets/fonts/Roboto/roboto-v30-latin-300.woff2 +0 -0
  242. package/dev/src/assets/fonts/Roboto/roboto-v30-latin-700.woff2 +0 -0
  243. package/dev/src/assets/fonts/Roboto/roboto-v30-latin-italic.woff2 +0 -0
  244. package/dev/src/assets/fonts/Roboto/roboto-v30-latin-regular.woff2 +0 -0
  245. package/dev/src/assets/images/mms-logo-white.svg +0 -105
  246. package/dev/src/assets/scss/components/icons.scss +0 -287
  247. package/dev/src/assets/scss/components/round-button.scss +0 -75
  248. package/dev/src/assets/scss/placeholders.scss +0 -588
  249. package/dev/src/components/Page/Footer.vue +0 -45
  250. package/dev/src/components/Page/Header.vue +0 -40
  251. package/dev/src/views/HomeView.vue +0 -5
  252. package/livingdocs/030.Lists/020.ordered-list/scss/general.scss +0 -6
  253. package/livingdocs/030.Lists/020.ordered-list/scss/pdf.scss +0 -5
  254. package/livingdocs/030.Lists/020.ordered-list/scss/word.scss +0 -9
  255. package/livingdocs/030.Lists/020.ordered-list/scss/xbrl.scss +0 -1
  256. package/livingdocs/030.Lists/030.alphanumeric-list/scss/general.scss +0 -6
  257. package/livingdocs/030.Lists/030.alphanumeric-list/scss/pdf.scss +0 -5
  258. package/livingdocs/030.Lists/030.alphanumeric-list/scss/word.scss +0 -9
  259. package/livingdocs/030.Lists/030.alphanumeric-list/scss/xbrl.scss +0 -1
  260. package/livingdocs/030.Lists/040.list-item/ld-conf.json +0 -5
  261. package/livingdocs/030.Lists/040.list-item/list-item.html +0 -5
  262. package/livingdocs/030.Lists/040.list-item/scss/web.scss +0 -27
  263. package/livingdocs/030.Lists/040.list-item/scss/word.scss +0 -19
  264. package/livingdocs/030.Lists/040.list-item/scss/xbrl.scss +0 -1
  265. /package/livingdocs/030.Lists/{020.ordered-list → 040.list-item-unordered-list}/scss/app.scss +0 -0
  266. /package/livingdocs/030.Lists/{020.ordered-list → 040.list-item-unordered-list}/scss/editor.scss +0 -0
  267. /package/livingdocs/{030.Lists/030.alphanumeric-list → 070.Container/030.background-container}/scss/app.scss +0 -0
  268. /package/livingdocs/{030.Lists/030.alphanumeric-list → 070.Container/030.background-container}/scss/editor.scss +0 -0
  269. /package/livingdocs/{030.Lists/040.list-item → 130.Hosting_Components/010.download-center}/scss/app.scss +0 -0
  270. /package/{dev/livingdocs/.gitkeep → livingdocs/130.Hosting_Components/010.download-center/scss/word.scss} +0 -0
  271. /package/livingdocs/{030.Lists/020.ordered-list/scss/web.scss → 130.Hosting_Components/010.download-center/scss/xbrl.scss} +0 -0
  272. /package/livingdocs/{030.Lists/040.list-item/scss/editor.scss → 130.Hosting_Components/020.search/scss/app.scss} +0 -0
  273. /package/livingdocs/{030.Lists/030.alphanumeric-list/scss/web.scss → 130.Hosting_Components/020.search/scss/word.scss} +0 -0
  274. /package/livingdocs/{060.Buttons/.gitkeep → 130.Hosting_Components/020.search/scss/xbrl.scss} +0 -0
  275. /package/livingdocs/999.Properties/{width → grid}/properties.json +0 -0
@@ -0,0 +1,63 @@
1
+ <script setup lang="ts">
2
+ import { computed, ref, type VNode } from 'vue'
3
+
4
+ const props = defineProps<{
5
+ label: string;
6
+ title?: string;
7
+ href?: string;
8
+ callback?: () => void;
9
+ img?: {
10
+ src: string
11
+ alt?: string
12
+ }
13
+ imgBefore?: {
14
+ src: string
15
+ alt?: string
16
+ }
17
+ imgAfter?: {
18
+ src: string
19
+ alt?: string
20
+ }
21
+ icon?: string
22
+ iconBefore?: string
23
+ iconAfter?: string
24
+ svg?: VNode | string;
25
+ svgBefore?: VNode | string;
26
+ svgAfter?: VNode | string;
27
+ }>();
28
+
29
+ const classes = computed(() => {
30
+ return {
31
+ 'srl-button': true,
32
+ 'srl-button--icon': props.icon || props.img || props.svg,
33
+ 'srl-has-icon': props.iconBefore || props.iconAfter || props.imgBefore || props.imgAfter || props.svgBefore || props.svgAfter,
34
+ }
35
+ })
36
+
37
+ const $el = ref<HTMLAnchorElement>()
38
+ defineExpose({
39
+ $el
40
+ })
41
+ </script>
42
+
43
+ <template>
44
+ <a
45
+ ref="$el"
46
+ :href="href"
47
+ :title="props.title"
48
+ :aria-label="props.icon ? props.label : undefined"
49
+ :class="classes">
50
+ <ButtonDefaultContent
51
+ :label="props.label"
52
+ :img="props.img"
53
+ :imgBefore="props.imgBefore"
54
+ :imgAfter="props.imgAfter"
55
+ :icon="props.icon"
56
+ :iconBefore="props.iconBefore"
57
+ :iconAfter="props.iconAfter"
58
+ :svg="props.svg"
59
+ :svgBefore="props.svgBefore"
60
+ :svgAfter="props.svgAfter"
61
+ />
62
+ </a>
63
+ </template>
@@ -0,0 +1,64 @@
1
+ <script setup lang="ts">
2
+ import { computed, ref, type VNode } from 'vue'
3
+
4
+ const props = defineProps<{
5
+ label: string;
6
+ title?: string;
7
+ href: string;
8
+ callback?: () => void;
9
+ img?: {
10
+ src: string
11
+ alt?: string
12
+ }
13
+ imgBefore?: {
14
+ src: string
15
+ alt?: string
16
+ }
17
+ imgAfter?: {
18
+ src: string
19
+ alt?: string
20
+ }
21
+ icon?: string
22
+ iconBefore?: string
23
+ iconAfter?: string
24
+ svg?: VNode | string;
25
+ svgBefore?: VNode | string;
26
+ svgAfter?: VNode | string;
27
+ }>();
28
+
29
+ const classes = computed(() => {
30
+ return {
31
+ 'srl-button': true,
32
+ 'srl-button--icon': props.icon || props.img || props.svg,
33
+ 'srl-has-icon': props.iconBefore || props.iconAfter || props.imgBefore || props.imgAfter || props.svgBefore || props.svgAfter,
34
+ }
35
+ })
36
+
37
+ const $el = ref<HTMLAnchorElement>()
38
+ defineExpose({
39
+ $el
40
+ })
41
+ </script>
42
+
43
+ <template>
44
+ <router-link
45
+ ref="$el"
46
+ :to="props.href"
47
+ :title="props.title"
48
+ :aria-label="props.icon ? props.label : undefined"
49
+ :class="classes"
50
+ >
51
+ <ButtonDefaultContent
52
+ :label ="props.label"
53
+ :img="props.img"
54
+ :imgBefore="props.imgBefore"
55
+ :imgAfter="props.imgAfter"
56
+ :icon="props.icon"
57
+ :iconBefore="props.iconBefore"
58
+ :iconAfter="props.iconAfter"
59
+ :svg="props.svg"
60
+ :svgBefore="props.svgBefore"
61
+ :svgAfter="props.svgAfter"
62
+ />
63
+ </router-link>
64
+ </template>
@@ -0,0 +1,101 @@
1
+ <script setup lang="ts">
2
+ import { isRouterPath } from '#utils'
3
+ import { computed, onMounted, ref, type VNode } from 'vue'
4
+
5
+ const props = withDefaults(defineProps<{
6
+ label: string;
7
+ title?: string;
8
+ href?: string;
9
+ type?: 'button' | 'link' | 'submit';
10
+ callback?: () => void;
11
+ img?: {
12
+ src: string
13
+ alt?: string
14
+ }
15
+ imgBefore?: {
16
+ src: string
17
+ alt?: string
18
+ }
19
+ imgAfter?: {
20
+ src: string
21
+ alt?: string
22
+ }
23
+ icon?: string
24
+ iconBefore?: string
25
+ iconAfter?: string
26
+ svg?: VNode | string;
27
+ svgBefore?: VNode | string;
28
+ svgAfter?: VNode | string;
29
+ }>(), {
30
+ type: 'button',
31
+ callback: () => {},
32
+ })
33
+
34
+ const title = computed(() => props.title || props.label || undefined )
35
+
36
+ const child = ref<ButtonDefaultInternalLink | ButtonDefaultExternalLink | ButtonDefaultAction>()
37
+
38
+ const $el = ref<HTMLAnchorElement | HTMLButtonElement>()
39
+
40
+ onMounted(() => {
41
+ if (child.value && child.value.$el) {
42
+ $el.value = child.value.$el
43
+ }
44
+ })
45
+
46
+ defineExpose({
47
+ $el
48
+ })
49
+ </script>
50
+
51
+ <template>
52
+ <ButtonDefaultInternalLink
53
+ v-if="props.href && isRouterPath(props.href)"
54
+ ref="child"
55
+ :title="title"
56
+ :label="props.label"
57
+ :href="props.href"
58
+ :img="props.img"
59
+ :imgBefore="props.imgBefore"
60
+ :imgAfter="props.imgAfter"
61
+ :icon="props.icon"
62
+ :iconBefore="props.iconBefore"
63
+ :iconAfter="props.iconAfter"
64
+ :svg="props.svg"
65
+ :svgBefore="props.svgBefore"
66
+ :svgAfter="props.svgAfter"
67
+ />
68
+ <ButtonDefaultExternalLink
69
+ v-else-if="props.href"
70
+ ref="child"
71
+ :title="title"
72
+ :label="props.label"
73
+ :href="href"
74
+ :img="props.img"
75
+ :imgBefore="props.imgBefore"
76
+ :imgAfter="props.imgAfter"
77
+ :icon="props.icon"
78
+ :iconBefore="props.iconBefore"
79
+ :iconAfter="props.iconAfter"
80
+ :svg="props.svg"
81
+ :svgBefore="props.svgBefore"
82
+ :svgAfter="props.svgAfter"
83
+ />
84
+ <ButtonDefaultAction
85
+ v-else-if="props.callback"
86
+ ref="child"
87
+ :title="title"
88
+ :label="props.label"
89
+ :type="props.type"
90
+ :callback="props.callback"
91
+ :img="props.img"
92
+ :imgBefore="props.imgBefore"
93
+ :imgAfter="props.imgAfter"
94
+ :icon="props.icon"
95
+ :iconBefore="props.iconBefore"
96
+ :iconAfter="props.iconAfter"
97
+ :svg="props.svg"
98
+ :svgBefore="props.svgBefore"
99
+ :svgAfter="props.svgAfter"
100
+ />
101
+ </template>
@@ -1,15 +1,105 @@
1
1
  <script lang="ts" setup>
2
+ import { computed, ref } from 'vue'
3
+ import { isDesktopView } from '@/composables/isDesktopView.ts'
4
+ import SvgNavArrowRight from '@/assets/images/nav-arrow-right.svg?raw'
5
+ import SvgNavArrowLeft from '@/assets/images/nav-arrow-left.svg?component'
6
+
2
7
  const props = defineProps<{
3
8
  mainNavigation: NsWowNavigationItem[]
4
9
  }>()
10
+
11
+ const emit = defineEmits([
12
+ 'toggle',
13
+ 'routerChange',
14
+ 'focusMain',
15
+ ])
16
+
17
+ function toggle(data) {
18
+ emit('toggle', data)
19
+ }
20
+
21
+ function routerChange() {
22
+ emit('routerChange')
23
+ }
24
+
25
+ function focusMain() {
26
+ emit('focusMain')
27
+ }
28
+
29
+ function addArrowRightIcon(item: NsWowNavigationItem) {
30
+ if (item.children && item.children.length > 0) {
31
+ item.svgAfter = SvgNavArrowRight as string
32
+ item.children.forEach((subItem) => {
33
+ addArrowRightIcon(subItem)
34
+ })
35
+ }
36
+ return item
37
+ }
38
+
39
+ const navigation = computed<NsWowNavigationItem[]>(() => {
40
+ const nav = []
41
+ props.mainNavigation.forEach((item) => {
42
+ const newItem = { ...item }
43
+ if (isDesktopView.value) {
44
+ newItem.children?.forEach((subItem) => {
45
+ addArrowRightIcon(subItem)
46
+ })
47
+ } else {
48
+ addArrowRightIcon(newItem)
49
+ }
50
+ nav.push(newItem)
51
+ })
52
+
53
+ return nav
54
+ })
55
+
56
+ const menu = ref<SrlMenu>()
57
+
58
+ function close() {
59
+ focusMain()
60
+ }
61
+
62
+ function tab(e: KeyboardEvent) {
63
+ if (isDesktopView.value) {
64
+ close()
65
+ } else {
66
+ e.preventDefault()
67
+ menu.value.closeAll()
68
+ const elem = document.querySelector<HTMLElement>('#srl-meta-navigation > ul')
69
+ elem?.focus()
70
+ }
71
+ }
72
+
73
+ defineExpose({
74
+ menu,
75
+ })
5
76
  </script>
6
77
 
7
78
  <template>
8
- <nav id="srl-page-navigation" class="srl-navigation" tabindex="-1">
9
- <SrlMenu name="main-navigation" :menu="props.mainNavigation" class="srl-main-navigation" />
79
+ <nav
80
+ id="srl-page-navigation"
81
+ class="srl-main-navigation"
82
+ tabindex="-1"
83
+ >
84
+ <SrlMenu
85
+ ref="menu"
86
+ name="main-navigation"
87
+ :menu="navigation"
88
+ class="srl-main-navigation-menu"
89
+ :backPath="[{
90
+ label: 'Main Menu'
91
+ }]"
92
+ :backButtonLabel="function(backPath) {
93
+ return $t('page.navigation.back', {label: backPath[0].label})
94
+ }"
95
+ @routerChange="routerChange"
96
+ @close="close()"
97
+ @keydown.tab.stop="tab"
98
+ :backButtonEnabled="!isDesktopView"
99
+ :backButtonItem="{
100
+ svgBefore: SvgNavArrowLeft as string,
101
+ }"
102
+ @toggle="toggle"
103
+ />
10
104
  </nav>
11
105
  </template>
12
-
13
- <style lang="scss">
14
- @use 'srl';
15
- </style>
@@ -0,0 +1,116 @@
1
+ <script setup lang="ts">
2
+ import { useConfig, useLanguageSwitch } from '#composables'
3
+ import { useGlobalLinks } from '@/composables/globalLinks.ts'
4
+ import { isDesktopView } from '@/composables/isDesktopView.ts'
5
+ import { computed, ref } from 'vue'
6
+
7
+ import SvgDownload from 'assets/images/download.svg?component'
8
+ import SvgSearch from 'assets/images/search.svg?component'
9
+ import SvgChevronDown from 'assets/images/chevron-down.svg?component'
10
+
11
+ const config = useConfig()
12
+ const globalLinks = useGlobalLinks()
13
+ const languages = useLanguageSwitch()
14
+
15
+ const emit = defineEmits([
16
+ 'toggle',
17
+ 'routerChange',
18
+ 'focusMain',
19
+ ])
20
+
21
+ function toggle(data) {
22
+ emit('toggle', data)
23
+ }
24
+
25
+ function routerChange() {
26
+ emit('routerChange')
27
+ }
28
+
29
+ function focusMain() {
30
+ emit('focusMain')
31
+ }
32
+
33
+ const menu = ref<SrlMenu>()
34
+
35
+ const metaNav = computed<NsWowNavigationItem[]>(() => {
36
+ const nav = [];
37
+ if (config.value.settings.languages.length > 1) {
38
+ nav.push({
39
+ label: languages.value.current.label.toUpperCase(),
40
+ iconAfter: 'chevron-down',
41
+ children: languages.value.items.map((i) => {
42
+ return {
43
+ label: i.label.toUpperCase(),
44
+ href: i.href,
45
+ }
46
+ }),
47
+ attributes: {
48
+ class: 'srl-button'
49
+ }
50
+ })
51
+ }
52
+
53
+ if (globalLinks.value.downloads) {
54
+ nav.push({
55
+ label: 'Downloads',
56
+ href: globalLinks.value.downloads.href,
57
+ //svg: SvgDownload,
58
+ icon: 'download',
59
+ attributes: {
60
+ class: 'srl-button srl-button--icon'
61
+ }
62
+ })
63
+ }
64
+
65
+ if (globalLinks.value.search) {
66
+ nav.push({
67
+ label:globalLinks.value.search.label,
68
+ href: globalLinks.value.search.href,
69
+ //svg: SvgSearch,
70
+ icon: 'search',
71
+ attributes: {
72
+ class: 'srl-button srl-button--icon'
73
+ }
74
+ })
75
+ }
76
+
77
+ return nav;
78
+ })
79
+
80
+ function close() {
81
+ focusMain()
82
+ }
83
+
84
+ function tab(e: KeyboardEvent) {
85
+ if (isDesktopView.value) {
86
+ close()
87
+ } else {
88
+ e.preventDefault()
89
+ const elem = document.querySelector<HTMLElement>('#srl-page-navigation > ul')
90
+ elem?.focus()
91
+ }
92
+ }
93
+
94
+ defineExpose({
95
+ menu,
96
+ })
97
+ </script>
98
+
99
+ <template>
100
+ <nav
101
+ id="srl-meta-navigation"
102
+ class="srl-meta-navigation"
103
+ tabindex="-1"
104
+ >
105
+ <SrlMenu
106
+ ref="menu"
107
+ name="meta-navigation"
108
+ :menu="metaNav"
109
+ class="srl-meta-navigation__menu"
110
+ @toggle="toggle"
111
+ @routerChange="routerChange"
112
+ @close="close"
113
+ @keydown.tab="tab"
114
+ />
115
+ </nav>
116
+ </template>