@simple-reporting/base 1.0.37 → 1.0.39
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.
- package/dev/.ddev/config.yaml +1 -1
- package/dev/.idea/codeStyles/Project.xml +61 -0
- package/dev/.idea/codeStyles/codeStyleConfig.xml +5 -0
- package/dev/.idea/copilot.data.migration.ask2agent.xml +6 -0
- package/dev/.idea/deployment.xml +14 -0
- package/dev/.idea/inspectionProfiles/Project_Default.xml +6 -0
- package/dev/.idea/modules.xml +8 -0
- package/dev/.idea/nsfd_report-demo-mms.iml +8 -0
- package/dev/.idea/php.xml +19 -0
- package/dev/.idea/prettier.xml +6 -0
- package/dev/.idea/vcs.xml +6 -0
- package/dev/.idea/watcherTasks.xml +4 -0
- package/dev/livingdocs.config.json +1192 -27
- package/dev/package.json +3 -1
- package/dev/src/App.vue +1 -2
- package/dev/src/Autoload.ts +1 -1
- package/dev/src/Dialog.vue +12 -61
- package/dev/src/assets/fonts/FontAwesome/font.scss +2 -0
- package/dev/src/assets/fonts/Inter/inter.scss +2 -4
- package/dev/src/assets/images/accordion-minus.svg +4 -0
- package/dev/src/assets/images/accordion-plus.svg +4 -0
- package/dev/src/assets/images/arrow-left.svg +5 -0
- package/dev/src/assets/images/arrow-right.svg +5 -0
- package/dev/src/assets/images/arrow-up.svg +5 -0
- package/dev/src/assets/images/chevron-down.svg +1 -0
- package/dev/src/assets/images/chevron-left.svg +1 -0
- package/dev/src/assets/images/chevron-right.svg +1 -0
- package/dev/src/assets/images/chevron-up.svg +1 -0
- package/dev/src/assets/images/close.svg +5 -0
- package/dev/src/assets/images/download.svg +6 -0
- package/dev/src/assets/images/facebook.svg +1 -0
- package/dev/src/assets/images/instagram.svg +1 -0
- package/dev/src/assets/images/language.svg +1 -0
- package/dev/src/assets/images/linkedIn.svg +1 -0
- package/dev/src/assets/images/logo.svg +1 -0
- package/dev/src/assets/images/menu-light.svg +3 -0
- package/dev/src/assets/images/menu.svg +3 -0
- package/dev/src/assets/images/nav-arrow-left.svg +3 -0
- package/dev/src/assets/images/nav-arrow-right.svg +3 -0
- package/dev/src/assets/images/search.svg +5 -0
- package/dev/src/assets/images/twitter.svg +1 -0
- package/dev/src/assets/images/xing.svg +1 -0
- package/dev/src/assets/scss/app.scss +9 -0
- package/dev/src/assets/scss/components/button.scss +37 -0
- package/dev/src/assets/scss/components/dialog.scss +84 -0
- package/dev/src/assets/scss/components/fontawesome.scss +56 -0
- package/dev/src/assets/scss/components/note/accordion.scss +55 -38
- package/dev/src/assets/scss/editor.scss +5 -5
- package/dev/src/assets/scss/general.scss +29 -2
- package/dev/src/assets/scss/margins.scss +57 -0
- package/dev/src/assets/scss/pdf.scss +0 -32
- package/dev/src/assets/scss/placeholders/breakout-grid.scss +34 -0
- package/dev/src/assets/scss/placeholders/button.scss +230 -0
- package/dev/src/assets/scss/placeholders/fontawesome.scss +7 -0
- package/dev/src/assets/scss/placeholders/grid.scss +354 -0
- package/dev/src/assets/scss/web.scss +17 -21
- package/dev/src/assets/scss/xbrl.scss +1 -0
- package/dev/src/components/Button/Default/Action.vue +65 -0
- package/dev/src/components/Button/Default/Content.vue +225 -0
- package/dev/src/components/Button/Default/ExternalLink.vue +63 -0
- package/dev/src/components/Button/Default/InternalLink.vue +64 -0
- package/dev/src/components/Button/Default.vue +101 -0
- package/dev/src/components/Page/MainNavigation.vue +96 -6
- package/dev/src/components/Page/MetaNavigation.vue +116 -0
- package/dev/src/components/Page/PrevNext.vue +140 -70
- package/dev/src/components/PageFooter.vue +405 -0
- package/dev/src/components/PageHeader.vue +828 -0
- package/dev/src/components/{Page/Main.vue → PageMain.vue} +11 -0
- package/dev/src/composables/globalLinks.ts +46 -0
- package/dev/src/composables/isDesktopView.ts +18 -0
- package/dev/src/composables/mainNavigation.ts +11 -0
- package/dev/src/entries/pdf.ts +5 -5
- package/dev/src/i18n/index.ts +1 -1
- package/dev/src/locales/de.json +40 -0
- package/dev/src/locales/en.json +40 -0
- package/dev/src/router/index.ts +1 -2
- package/dev/src/views/DevView.vue +1 -835
- package/dev/src/views/PageNotFound.vue +3 -69
- package/dev/srl.config.json +34 -49
- package/livingdocs/010.Titles/010.title-h1/scss/_spacing-variations.scss +17 -0
- package/livingdocs/010.Titles/010.title-h1/scss/general.scss +4 -0
- package/livingdocs/010.Titles/020.title-h2/scss/_spacing-variations.scss +12 -0
- package/livingdocs/010.Titles/020.title-h2/scss/general.scss +4 -0
- package/livingdocs/010.Titles/020.title-h2/title-h2.html +5 -4
- package/livingdocs/010.Titles/030.title-h3/scss/_spacing-variations.scss +13 -0
- package/livingdocs/010.Titles/030.title-h3/scss/general.scss +5 -1
- package/livingdocs/010.Titles/030.title-h3/title-h3.html +5 -4
- package/livingdocs/010.Titles/040.title-h4/scss/_spacing-variations.scss +12 -0
- package/livingdocs/010.Titles/040.title-h4/scss/general.scss +5 -1
- package/livingdocs/010.Titles/040.title-h4/title-h4.html +5 -4
- package/livingdocs/010.Titles/050.title-h5/scss/_spacing-variations.scss +11 -0
- package/livingdocs/010.Titles/050.title-h5/scss/general.scss +4 -0
- package/livingdocs/010.Titles/060.title-h6/scss/_spacing-variations.scss +10 -0
- package/livingdocs/010.Titles/060.title-h6/scss/general.scss +4 -0
- package/livingdocs/020.Text/010.lead/scss/_spacing-variations.scss +5 -0
- package/livingdocs/020.Text/010.lead/scss/general.scss +4 -0
- package/livingdocs/020.Text/020.paragraph/scss/_spacing-variations.scss +22 -0
- package/livingdocs/020.Text/020.paragraph/scss/general.scss +4 -0
- package/livingdocs/020.Text/060.quote-with-portrait/scss/_spacing-variations.scss +7 -0
- package/livingdocs/020.Text/060.quote-with-portrait/scss/general.scss +4 -1
- package/livingdocs/020.Text/060.quote-with-portrait/scss/pdf.scss +4 -10
- package/livingdocs/020.Text/060.quote-with-portrait/scss/web.scss +0 -1
- package/livingdocs/020.Text/070.footnote-container/scss/_spacing-variations.scss +22 -0
- package/livingdocs/020.Text/070.footnote-container/scss/general.scss +8 -0
- package/livingdocs/020.Text/070.footnote-container/scss/pdf.scss +0 -8
- package/livingdocs/020.Text/070.footnote-container/scss/web.scss +0 -5
- package/livingdocs/020.Text/070.footnote-container/scss/xbrl.scss +9 -1
- package/livingdocs/020.Text/080.footnote-item/scss/_spacing-variations.scss +4 -0
- package/livingdocs/020.Text/080.footnote-item/scss/general.scss +28 -1
- package/livingdocs/020.Text/080.footnote-item/scss/web.scss +0 -20
- package/livingdocs/020.Text/080.footnote-item/scss/xbrl.scss +26 -1
- package/livingdocs/030.Lists/010.unordered-list/ld-conf.json +3 -3
- package/livingdocs/030.Lists/010.unordered-list/scss/_spacing-variations.scss +22 -0
- package/livingdocs/030.Lists/010.unordered-list/scss/general.scss +3 -5
- package/livingdocs/030.Lists/010.unordered-list/scss/pdf.scss +3 -1
- package/livingdocs/030.Lists/010.unordered-list/scss/web.scss +15 -1
- package/livingdocs/030.Lists/010.unordered-list/scss/word.scss +1 -6
- package/livingdocs/030.Lists/010.unordered-list/scss/xbrl.scss +2 -1
- package/livingdocs/030.Lists/020.ordered-list/ld-conf.json +3 -3
- package/livingdocs/030.Lists/030.alphanumeric-list/ld-conf.json +3 -3
- package/livingdocs/030.Lists/040.list-item-unordered-list/ld-conf.json +23 -0
- package/livingdocs/030.Lists/040.list-item-unordered-list/list-item-unordered-list.html +8 -0
- package/livingdocs/030.Lists/040.list-item-unordered-list/scss/_spacing-variations.scss +4 -0
- package/livingdocs/030.Lists/040.list-item-unordered-list/scss/general.scss +14 -0
- package/livingdocs/030.Lists/{040.list-item → 040.list-item-unordered-list}/scss/pdf.scss +7 -1
- package/livingdocs/030.Lists/{040.list-item/scss/general.scss → 040.list-item-unordered-list/scss/web.scss} +17 -6
- package/livingdocs/030.Lists/040.list-item-unordered-list/scss/word.scss +5 -0
- package/livingdocs/030.Lists/040.list-item-unordered-list/scss/xbrl.scss +2 -0
- package/livingdocs/030.Lists/050.list-item-ordered-list/ld-conf.json +23 -0
- package/livingdocs/030.Lists/050.list-item-ordered-list/list-item-ordered-list.html +8 -0
- package/livingdocs/030.Lists/060.list-item-alphanumeric-list/ld-conf.json +23 -0
- package/livingdocs/030.Lists/060.list-item-alphanumeric-list/list-item-alphanumeric-list.html +8 -0
- package/livingdocs/040.Media/010.table/scss/_spacing-variations.scss +19 -0
- package/livingdocs/040.Media/010.table/scss/general.scss +270 -251
- package/livingdocs/040.Media/010.table/scss/pdf.scss +2 -18
- package/livingdocs/040.Media/010.table/scss/web.scss +0 -19
- package/livingdocs/040.Media/010.table/scss/xbrl.scss +4 -3
- package/livingdocs/040.Media/020.image/scss/_spacing-variations.scss +7 -0
- package/livingdocs/040.Media/020.image/scss/editor.scss +0 -1
- package/livingdocs/040.Media/020.image/scss/general.scss +6 -2
- package/livingdocs/040.Media/020.image/scss/pdf.scss +0 -4
- package/livingdocs/040.Media/020.image/scss/web.scss +0 -5
- package/livingdocs/040.Media/020.image/scss/xbrl.scss +1 -3
- package/livingdocs/040.Media/030.video/scss/_spacing-variations.scss +7 -0
- package/livingdocs/040.Media/030.video/scss/general.scss +19 -0
- package/livingdocs/040.Media/030.video/scss/pdf.scss +0 -10
- package/livingdocs/040.Media/030.video/scss/web.scss +0 -11
- package/livingdocs/040.Media/030.video/scss/xbrl.scss +1 -4
- package/livingdocs/060.Buttons/020.button/scss/general.scss +14 -75
- package/livingdocs/070.Container/020.columns-container/columns-container.html +1 -1
- package/livingdocs/070.Container/030.background-container/background-container.html +3 -0
- package/livingdocs/070.Container/030.background-container/ld-conf.json +4 -0
- package/livingdocs/070.Container/030.background-container/properties.json +1 -0
- package/livingdocs/070.Container/030.background-container/scss/_spacing-variations.scss +3 -0
- package/livingdocs/070.Container/030.background-container/scss/general.scss +9 -0
- package/livingdocs/070.Container/030.background-container/scss/pdf.scss +13 -0
- package/livingdocs/070.Container/030.background-container/scss/web.scss +1 -0
- package/livingdocs/070.Container/030.background-container/scss/word.scss +1 -0
- package/livingdocs/070.Container/030.background-container/scss/xbrl.scss +3 -0
- package/livingdocs/080.CV/010.cv/cv.html +2 -1
- package/livingdocs/080.CV/010.cv/scss/_spacing-variations.scss +5 -0
- package/livingdocs/080.CV/010.cv/scss/app.scss +16 -1
- package/livingdocs/080.CV/010.cv/scss/general.scss +4 -0
- package/livingdocs/080.CV/010.cv/scss/pdf.scss +2 -3
- package/livingdocs/080.CV/010.cv/scss/web.scss +17 -1
- package/livingdocs/080.CV/020.cv-time-span/scss/_spacing-variations.scss +14 -0
- package/livingdocs/080.CV/020.cv-time-span/scss/general.scss +4 -0
- package/livingdocs/080.CV/020.cv-time-span/scss/web.scss +0 -1
- package/livingdocs/100.Misc/010.anchor/scss/editor.scss +0 -1
- package/livingdocs/100.Misc/020.accordion/accordion.html +54 -7
- package/livingdocs/100.Misc/020.accordion/accordion.vue +83 -0
- package/livingdocs/100.Misc/020.accordion/scss/editor.scss +12 -0
- package/livingdocs/110.PDF/010.pdf-pagebreak/scss/editor.scss +0 -1
- package/livingdocs/110.PDF/021.pdf-columnbreak/scss/editor.scss +0 -1
- package/livingdocs/110.PDF/030.pdf-publication-title/scss/editor.scss +0 -1
- package/livingdocs/110.PDF/040.pdf-chapter-title/scss/editor.scss +0 -1
- package/livingdocs/110.PDF/050.pdf-chapter-navigation-container/scss/editor.scss +1 -1
- package/livingdocs/110.PDF/075.pdf-landscape-container/ld-conf.json +7 -0
- package/livingdocs/110.PDF/075.pdf-landscape-container/pdf-landscape-container.html +9 -0
- package/livingdocs/110.PDF/075.pdf-landscape-container/properties.json +15 -0
- package/livingdocs/110.PDF/075.pdf-landscape-container/scss/pdf.scss +19 -0
- package/livingdocs/110.PDF/100.pdf-toc-item/pdf-toc-item.html +3 -2
- package/livingdocs/110.PDF/100.pdf-toc-item/scss/general.scss +6 -5
- package/livingdocs/110.PDF/100.pdf-toc-item/scss/pdf.scss +9 -1
- package/livingdocs/130.Hosting_Components/010.download-center/download-center.html +7 -0
- package/livingdocs/130.Hosting_Components/010.download-center/download-center.vue +68 -0
- package/livingdocs/130.Hosting_Components/010.download-center/ld-conf.json +4 -0
- package/livingdocs/130.Hosting_Components/010.download-center/properties.json +1 -0
- package/livingdocs/130.Hosting_Components/010.download-center/scss/_spacing-variations.scss +3 -0
- package/livingdocs/130.Hosting_Components/010.download-center/scss/editor.scss +15 -0
- package/livingdocs/130.Hosting_Components/010.download-center/scss/general.scss +1 -0
- package/livingdocs/130.Hosting_Components/010.download-center/scss/pdf.scss +1 -0
- package/livingdocs/130.Hosting_Components/010.download-center/scss/web.scss +42 -0
- package/livingdocs/130.Hosting_Components/020.search/ld-conf.json +4 -0
- package/livingdocs/130.Hosting_Components/020.search/properties.json +1 -0
- package/livingdocs/130.Hosting_Components/020.search/scss/_spacing-variations.scss +4 -0
- package/livingdocs/130.Hosting_Components/020.search/scss/editor.scss +14 -0
- package/livingdocs/130.Hosting_Components/020.search/scss/general.scss +1 -0
- package/livingdocs/130.Hosting_Components/020.search/scss/pdf.scss +1 -0
- package/livingdocs/130.Hosting_Components/020.search/scss/web.scss +200 -0
- package/livingdocs/130.Hosting_Components/020.search/search.html +7 -0
- package/livingdocs/130.Hosting_Components/020.search/search.vue +484 -0
- package/livingdocs/999.Properties/breakout-grid/web.scss +5 -0
- package/livingdocs/999.Properties/grid/scss/app.scss +1 -0
- package/livingdocs/999.Properties/grid/scss/general.scss +31 -0
- package/livingdocs/999.Properties/grid/scss/pdf.scss +9 -0
- package/livingdocs/999.Properties/grid/scss/web.scss +1 -0
- package/livingdocs/999.Properties/grid/scss/xbrl.scss +2 -0
- package/livingdocs/999.Properties/icon/properties.json +2 -2
- package/package.json +1 -1
- package/plugins/viteSrlPlugin.js +16 -1
- package/scripts/build.js +1 -0
- package/scripts/config.js +6 -2
- package/scss/button.scss +25 -0
- package/scss/fa/font-free.scss +17 -0
- package/scss/fa/font-pro.scss +41 -0
- package/scss/fa/index.scss +118 -0
- package/scss/fa/source-free.scss +14 -0
- package/scss/fa/source-pro.scss +15 -0
- package/scss/index.scss +1 -0
- package/srl/.srl/components/Srl/Aria/TabChain.vue +6 -5
- package/srl/.srl/components/Srl/Article/Accordion.vue +37 -24
- package/srl/.srl/components/Srl/Article/Dialog/Button.vue +6 -5
- package/srl/.srl/components/Srl/Article/Root.vue +4 -1
- package/srl/.srl/components/Srl/Category/Accordion/Content.vue +2 -2
- package/srl/.srl/components/Srl/Category/Accordion.vue +8 -5
- package/srl/.srl/components/Srl/Menu/Item.vue +20 -5
- package/srl/.srl/components/Srl/Page/Dialog.vue +31 -14
- package/srl/.srl/types/nswow.d.ts +6 -1
- package/srl/.srl/utils/index.ts +2 -0
- package/srl/.srl/utils/pageState.ts +24 -23
- package/srl/srl/button.scss +2 -0
- package/srl/srl/fa/font-free.scss +17 -0
- package/srl/srl/fa/font-pro.scss +41 -0
- package/srl/srl/fa/index.scss +118 -0
- package/srl/srl/fa/source-free.scss +14 -0
- package/srl/srl/fa/source-pro.scss +15 -0
- package/dev/src/assets/fonts/Inter/Inter-Regular.ttf +0 -0
- package/dev/src/assets/fonts/Inter/Inter-SemiBold.ttf +0 -0
- package/dev/src/assets/fonts/Roboto/roboto-v30-latin-300.woff2 +0 -0
- package/dev/src/assets/fonts/Roboto/roboto-v30-latin-700.woff2 +0 -0
- package/dev/src/assets/fonts/Roboto/roboto-v30-latin-italic.woff2 +0 -0
- package/dev/src/assets/fonts/Roboto/roboto-v30-latin-regular.woff2 +0 -0
- package/dev/src/assets/images/mms-logo-white.svg +0 -105
- package/dev/src/assets/scss/components/icons.scss +0 -287
- package/dev/src/assets/scss/components/round-button.scss +0 -75
- package/dev/src/assets/scss/placeholders.scss +0 -588
- package/dev/src/components/Page/Footer.vue +0 -45
- package/dev/src/components/Page/Header.vue +0 -40
- package/dev/src/views/HomeView.vue +0 -5
- package/livingdocs/030.Lists/020.ordered-list/scss/general.scss +0 -6
- package/livingdocs/030.Lists/020.ordered-list/scss/pdf.scss +0 -5
- package/livingdocs/030.Lists/020.ordered-list/scss/word.scss +0 -9
- package/livingdocs/030.Lists/020.ordered-list/scss/xbrl.scss +0 -1
- package/livingdocs/030.Lists/030.alphanumeric-list/scss/general.scss +0 -6
- package/livingdocs/030.Lists/030.alphanumeric-list/scss/pdf.scss +0 -5
- package/livingdocs/030.Lists/030.alphanumeric-list/scss/word.scss +0 -9
- package/livingdocs/030.Lists/030.alphanumeric-list/scss/xbrl.scss +0 -1
- package/livingdocs/030.Lists/040.list-item/ld-conf.json +0 -5
- package/livingdocs/030.Lists/040.list-item/list-item.html +0 -5
- package/livingdocs/030.Lists/040.list-item/scss/web.scss +0 -27
- package/livingdocs/030.Lists/040.list-item/scss/word.scss +0 -19
- package/livingdocs/030.Lists/040.list-item/scss/xbrl.scss +0 -1
- /package/livingdocs/030.Lists/{020.ordered-list → 040.list-item-unordered-list}/scss/app.scss +0 -0
- /package/livingdocs/030.Lists/{020.ordered-list → 040.list-item-unordered-list}/scss/editor.scss +0 -0
- /package/livingdocs/{030.Lists/030.alphanumeric-list → 070.Container/030.background-container}/scss/app.scss +0 -0
- /package/livingdocs/{030.Lists/030.alphanumeric-list → 070.Container/030.background-container}/scss/editor.scss +0 -0
- /package/livingdocs/{030.Lists/040.list-item → 130.Hosting_Components/010.download-center}/scss/app.scss +0 -0
- /package/{dev/livingdocs/.gitkeep → livingdocs/130.Hosting_Components/010.download-center/scss/word.scss} +0 -0
- /package/livingdocs/{030.Lists/020.ordered-list/scss/web.scss → 130.Hosting_Components/010.download-center/scss/xbrl.scss} +0 -0
- /package/livingdocs/{030.Lists/040.list-item/scss/editor.scss → 130.Hosting_Components/020.search/scss/app.scss} +0 -0
- /package/livingdocs/{030.Lists/030.alphanumeric-list/scss/web.scss → 130.Hosting_Components/020.search/scss/word.scss} +0 -0
- /package/livingdocs/{060.Buttons/.gitkeep → 130.Hosting_Components/020.search/scss/xbrl.scss} +0 -0
- /package/livingdocs/999.Properties/{width → grid}/properties.json +0 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
@use "srl/fa" as v;
|
|
2
|
+
|
|
3
|
+
@font-face {
|
|
4
|
+
font-family: 'Font Awesome 7 Brands';
|
|
5
|
+
font-style: normal;
|
|
6
|
+
font-weight: 400;
|
|
7
|
+
font-display: v.$font-display;
|
|
8
|
+
src: url('#{v.$font-path}/fa-brands-400.woff2');
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
@font-face {
|
|
12
|
+
font-family: v.$family;
|
|
13
|
+
font-style: normal;
|
|
14
|
+
font-weight: 900;
|
|
15
|
+
font-display: v.$font-display;
|
|
16
|
+
src: url('#{v.$font-path}/fa-solid-900.woff2');
|
|
17
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
@use "srl/fa" as v;
|
|
2
|
+
|
|
3
|
+
@font-face {
|
|
4
|
+
font-family: 'Font Awesome 7 Brands';
|
|
5
|
+
font-style: normal;
|
|
6
|
+
font-weight: 400;
|
|
7
|
+
font-display: v.$font-display;
|
|
8
|
+
src: url('#{v.$font-path}/fa-brands-400.woff2');
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
@font-face {
|
|
12
|
+
font-family: v.$family;
|
|
13
|
+
font-style: normal;
|
|
14
|
+
font-weight: 100;
|
|
15
|
+
font-display: v.$font-display;
|
|
16
|
+
src: url('#{v.$font-path}/fa-thin-100.woff2');
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
@font-face {
|
|
20
|
+
font-family: v.$family;
|
|
21
|
+
font-style: normal;
|
|
22
|
+
font-weight: 300;
|
|
23
|
+
font-display: v.$font-display;
|
|
24
|
+
src: url('#{v.$font-path}/fa-light-300.woff2');
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
@font-face {
|
|
28
|
+
font-family: v.$family;
|
|
29
|
+
font-style: normal;
|
|
30
|
+
font-weight: 400;
|
|
31
|
+
font-display: v.$font-display;
|
|
32
|
+
src: url('#{v.$font-path}/fa-regular-400.woff2');
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@font-face {
|
|
36
|
+
font-family: v.$family;
|
|
37
|
+
font-style: normal;
|
|
38
|
+
font-weight: 900;
|
|
39
|
+
font-display: v.$font-display;
|
|
40
|
+
src: url('#{v.$font-path}/fa-solid-900.woff2');
|
|
41
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
@use "fa-source" as v;
|
|
2
|
+
@forward "fa-source";
|
|
3
|
+
@use "sass:map";
|
|
4
|
+
@use "sass:string";
|
|
5
|
+
@use "../system";
|
|
6
|
+
|
|
7
|
+
@mixin base {
|
|
8
|
+
-webkit-font-smoothing: antialiased;
|
|
9
|
+
-moz-osx-font-smoothing: grayscale;
|
|
10
|
+
display: var(--#{v.$css-prefix}-display, #{v.$display});
|
|
11
|
+
font-family: var(--_#{v.$css-prefix}-family);
|
|
12
|
+
font-feature-settings: normal;
|
|
13
|
+
font-style: normal;
|
|
14
|
+
font-synthesis: none;
|
|
15
|
+
font-variant: normal;
|
|
16
|
+
font-weight: var(--#{v.$css-prefix}-style, #{v.$style});
|
|
17
|
+
line-height: 1;
|
|
18
|
+
text-align: center;
|
|
19
|
+
text-rendering: auto;
|
|
20
|
+
width: var(--#{v.$css-prefix}-width, #{v.$fw-width});
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
@mixin brands($icon) {
|
|
24
|
+
@include content-before($icon, brands);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
@mixin icon($icon) {
|
|
28
|
+
@include content-before($icon, v.$default-style);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@mixin thin($icon) {
|
|
32
|
+
@include content-before($icon, thin);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@mixin light($icon) {
|
|
36
|
+
@include content-before($icon, light);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@mixin regular($icon) {
|
|
40
|
+
@include content-before($icon, regular);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@mixin solid($icon) {
|
|
44
|
+
@include content-before($icon, solid);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
@mixin size($size) {
|
|
48
|
+
@include v.fa-size($size);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
@function find-font-weight($style) {
|
|
52
|
+
@if v.$type == pro {
|
|
53
|
+
@if $style == thin {
|
|
54
|
+
@return 100;
|
|
55
|
+
} @else if $style == light {
|
|
56
|
+
@return 300;
|
|
57
|
+
} @else if $style == regular {
|
|
58
|
+
@return 400;
|
|
59
|
+
} @else if $style == solid {
|
|
60
|
+
@return 900;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
@return 900;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
@mixin content($icon, $style: solid) {
|
|
67
|
+
@if not map.has-key(v.$brand-icons, $icon) and not map.has-key(v.$icons, $icon) {
|
|
68
|
+
@debug "Icon "#{$icon}" not found in Font Awesome 7.";
|
|
69
|
+
} @else {
|
|
70
|
+
$var: map.get(v.$brand-icons, $icon);
|
|
71
|
+
@if $var != null {
|
|
72
|
+
@include system.add-root-style(#{v.$css-prefix}-family-brands, '"Font Awesome 7 Brands"');
|
|
73
|
+
@include system.add-root-style(#{v.$css-prefix}-font-brands, normal 400 1em/1 var(--#{v.$css-prefix}-family-brands));
|
|
74
|
+
--#{v.$css-prefix}-family: var(--#{v.$css-prefix}-family-brands);
|
|
75
|
+
--#{v.$css-prefix}-style: 400;
|
|
76
|
+
--_#{v.$css-prefix}-family: var(--#{v.$css-prefix}-family, var(--#{v.$css-prefix}-style-family, "Font Awesome 7 Brands"));
|
|
77
|
+
content: string.unquote("\"#{ $var }\"");
|
|
78
|
+
} @else {
|
|
79
|
+
$var: map.get(v.$icons, $icon);
|
|
80
|
+
@include system.add-root-style(#{v.$css-prefix}-family-classic, '"#{ v.$family }"');
|
|
81
|
+
@include system.add-root-style(#{v.$css-prefix}-font-#{$style}, normal #{find-font-weight($style)} 1em/1 var(--#{v.$css-prefix}-family-classic));
|
|
82
|
+
@include system.add-root-style(#{v.$css-prefix}-style-family-classic, var(--#{v.$css-prefix}-family-classic));
|
|
83
|
+
--#{v.$css-prefix}-family: var(--#{v.$css-prefix}-family-classic);
|
|
84
|
+
--#{v.$css-prefix}-style: #{find-font-weight($style)};
|
|
85
|
+
--_#{v.$css-prefix}-family: var(--#{v.$css-prefix}-family, var(--#{v.$css-prefix}-style-family, '#{v.$family}'));
|
|
86
|
+
content: string.unquote("\"#{ $var }\"");
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
@mixin content-before($icon, $style: solid) {
|
|
92
|
+
@if not map.has-key(v.$brand-icons, $icon) and not map.has-key(v.$icons, $icon) {
|
|
93
|
+
@debug "Icon "#{$icon}" not found in Font Awesome 7.";
|
|
94
|
+
} @else {
|
|
95
|
+
$var: map.get(v.$brand-icons, $icon);
|
|
96
|
+
@if $var != null {
|
|
97
|
+
@include system.add-root-style(#{v.$css-prefix}-family-brands, '"Font Awesome 7 Brands"');
|
|
98
|
+
@include system.add-root-style(#{v.$css-prefix}-font-brands, normal 400 1em/1 var(--#{v.$css-prefix}-family-brands));
|
|
99
|
+
--#{v.$css-prefix}-family: var(--#{v.$css-prefix}-family-brands);
|
|
100
|
+
--#{v.$css-prefix}-style: 400;
|
|
101
|
+
--_#{v.$css-prefix}-family: var(--#{v.$css-prefix}-family, var(--#{v.$css-prefix}-style-family, "Font Awesome 7 Brands"));
|
|
102
|
+
&::before {
|
|
103
|
+
content: string.unquote("\"#{ $var }\"");
|
|
104
|
+
}
|
|
105
|
+
} @else {
|
|
106
|
+
$var: map.get(v.$icons, $icon);
|
|
107
|
+
@include system.add-root-style(#{v.$css-prefix}-family-classic, '"#{ v.$family }"');
|
|
108
|
+
@include system.add-root-style(#{v.$css-prefix}-font-#{$style}, normal #{find-font-weight($style)} 1em/1 var(--#{v.$css-prefix}-family-classic));
|
|
109
|
+
@include system.add-root-style(#{v.$css-prefix}-style-family-classic, var(--#{v.$css-prefix}-family-classic));
|
|
110
|
+
--#{v.$css-prefix}-family: var(--#{v.$css-prefix}-family-classic);
|
|
111
|
+
--#{v.$css-prefix}-style: #{find-font-weight($style)};
|
|
112
|
+
--_#{v.$css-prefix}-family: var(--#{v.$css-prefix}-family, var(--#{v.$css-prefix}-style-family, '#{v.$family}'));
|
|
113
|
+
&::before {
|
|
114
|
+
content: string.unquote("\"#{ $var }\"");
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
@use "sass:map";
|
|
2
|
+
@use "srl/meta";
|
|
3
|
+
@use "@fortawesome/fontawesome-free/scss/variables" with (
|
|
4
|
+
$css-prefix: srl-icon,
|
|
5
|
+
$icon-property: --srl-icon,
|
|
6
|
+
$font-path: "@fortawesome/fontawesome-free/webfonts"
|
|
7
|
+
);
|
|
8
|
+
@forward "@fortawesome/fontawesome-free/scss/variables";
|
|
9
|
+
@forward "@fortawesome/fontawesome-free/scss/mixins";
|
|
10
|
+
$type: free;
|
|
11
|
+
$default-style: light;
|
|
12
|
+
@if map.has-key(meta.$meta, icon, default-style) {
|
|
13
|
+
$default-style: map.get(meta.$meta, icon, default-style);
|
|
14
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
@use "sass:map";
|
|
2
|
+
@use "srl/meta";
|
|
3
|
+
@use "@fortawesome/fontawesome-pro/scss/variables" as v with (
|
|
4
|
+
$css-prefix: srl-icon,
|
|
5
|
+
$icon-property: --srl-icon,
|
|
6
|
+
$font-path: "@fortawesome/fontawesome-pro/webfonts"
|
|
7
|
+
);
|
|
8
|
+
@use "@fortawesome/fontawesome-pro/scss/mixins" as m;
|
|
9
|
+
@forward "@fortawesome/fontawesome-pro/scss/variables";
|
|
10
|
+
@forward "@fortawesome/fontawesome-pro/scss/mixins";
|
|
11
|
+
$type: pro;
|
|
12
|
+
$default-style: light;
|
|
13
|
+
@if map.has-key(meta.$meta, icon, default-style) {
|
|
14
|
+
$default-style: map.get(meta.$meta, icon, default-style);
|
|
15
|
+
}
|
package/scss/index.scss
CHANGED
|
@@ -41,13 +41,14 @@ const firstElement = ref<HTMLElement>();
|
|
|
41
41
|
const lastElement = ref<HTMLElement>();
|
|
42
42
|
|
|
43
43
|
function registerTabs(): void {
|
|
44
|
+
const root = rootElement.value as HTMLElement;
|
|
44
45
|
availableTabs.value = Array.from(
|
|
45
|
-
|
|
46
|
+
root.querySelectorAll<HTMLElement>(
|
|
46
47
|
'a[href], button, input, select, textarea, [tabindex]:not([tabindex="-1"])',
|
|
47
48
|
),
|
|
48
49
|
);
|
|
49
50
|
firstElement.value = availableTabs.value[0];
|
|
50
|
-
lastElement.value = availableTabs.value.
|
|
51
|
+
lastElement.value = availableTabs.value[availableTabs.value.length - 1];
|
|
51
52
|
}
|
|
52
53
|
|
|
53
54
|
onMounted(() => {
|
|
@@ -67,7 +68,7 @@ function next(event) {
|
|
|
67
68
|
|
|
68
69
|
if (focusedElement === lastElement.value) {
|
|
69
70
|
event.preventDefault();
|
|
70
|
-
firstElement.value
|
|
71
|
+
firstElement.value?.focus();
|
|
71
72
|
}
|
|
72
73
|
}
|
|
73
74
|
|
|
@@ -79,9 +80,9 @@ function prev(event) {
|
|
|
79
80
|
const currentIndex = availableTabs.value.indexOf(event.target);
|
|
80
81
|
|
|
81
82
|
if (currentIndex === -1) {
|
|
82
|
-
firstElement.value
|
|
83
|
+
firstElement.value?.focus();
|
|
83
84
|
} else if (currentIndex === 0) {
|
|
84
|
-
lastElement.value
|
|
85
|
+
lastElement.value?.focus();
|
|
85
86
|
} else {
|
|
86
87
|
availableTabs.value[currentIndex - 1].focus();
|
|
87
88
|
}
|
|
@@ -20,57 +20,70 @@ const props = withDefaults(defineProps<{
|
|
|
20
20
|
const route = useRoute()
|
|
21
21
|
|
|
22
22
|
const id = useId()
|
|
23
|
-
const rootEl = ref<HTMLDivElement>()
|
|
24
|
-
const toggle = ref<HTMLButtonElement>()
|
|
25
|
-
const content = ref<HTMLDivElement>()
|
|
26
|
-
const wrapper = ref<HTMLDivElement>()
|
|
23
|
+
const rootEl = ref<HTMLDivElement | null>(null)
|
|
24
|
+
const toggle = ref<HTMLButtonElement | null>(null)
|
|
25
|
+
const content = ref<HTMLDivElement | null>(null)
|
|
26
|
+
const wrapper = ref<HTMLDivElement | null>(null)
|
|
27
27
|
const transition = computed<string>(() => {
|
|
28
28
|
return props.duration + 'ms'
|
|
29
29
|
})
|
|
30
30
|
|
|
31
31
|
function open() {
|
|
32
|
-
toggle.value
|
|
33
|
-
wrapper.value
|
|
34
|
-
content.value
|
|
35
|
-
|
|
32
|
+
const t = toggle.value as HTMLButtonElement
|
|
33
|
+
const w = wrapper.value as HTMLDivElement
|
|
34
|
+
const c = content.value as HTMLDivElement
|
|
35
|
+
t.setAttribute('aria-expanded', 'true')
|
|
36
|
+
w.removeAttribute('hidden')
|
|
37
|
+
c.classList.add(props.openClass)
|
|
38
|
+
c.focus()
|
|
36
39
|
}
|
|
37
40
|
|
|
38
41
|
function close() {
|
|
39
|
-
toggle.value
|
|
40
|
-
|
|
42
|
+
const t = toggle.value as HTMLButtonElement
|
|
43
|
+
const w = wrapper.value as HTMLDivElement
|
|
44
|
+
const c = content.value as HTMLDivElement
|
|
45
|
+
|
|
46
|
+
t.setAttribute('aria-expanded', 'false')
|
|
47
|
+
c.classList.remove(props.openClass)
|
|
41
48
|
setTimeout(() => {
|
|
42
|
-
|
|
49
|
+
w.setAttribute('hidden', 'true')
|
|
43
50
|
}, props.duration)
|
|
44
51
|
}
|
|
45
52
|
|
|
46
53
|
onMounted(() => {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
54
|
+
const r = rootEl.value as HTMLDivElement
|
|
55
|
+
|
|
56
|
+
toggle.value = r.querySelector( props.toggleSelector ) || null
|
|
57
|
+
content.value = r.querySelector( props.contentSelector ) || null
|
|
58
|
+
wrapper.value = r.querySelector( props.wrapperSelector ) || null
|
|
50
59
|
|
|
51
60
|
if (toggle.value && content.value && wrapper.value) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
content.value
|
|
55
|
-
|
|
56
|
-
|
|
61
|
+
const t = toggle.value as HTMLButtonElement
|
|
62
|
+
const w = wrapper.value as HTMLDivElement
|
|
63
|
+
const c = content.value as HTMLDivElement
|
|
64
|
+
|
|
65
|
+
w.setAttribute('hidden', 'true')
|
|
66
|
+
c.id = id
|
|
67
|
+
c.setAttribute('tabindex', '-1')
|
|
68
|
+
t.setAttribute('aria-controls', id)
|
|
69
|
+
t.setAttribute('aria-expanded', 'false')
|
|
57
70
|
|
|
58
|
-
|
|
59
|
-
|
|
71
|
+
t.addEventListener('click', () => {
|
|
72
|
+
t.getAttribute('aria-expanded') === 'true' ? close() : open()
|
|
60
73
|
})
|
|
61
74
|
|
|
62
75
|
if (route.hash) {
|
|
63
|
-
if (
|
|
76
|
+
if (r.id && r.id === route.hash) {
|
|
64
77
|
open()
|
|
65
78
|
isAccordionAnchored() || setAccordionAnchored(true)
|
|
66
79
|
} else {
|
|
67
|
-
const targetEl =
|
|
80
|
+
const targetEl = r.querySelector<HTMLElement>(route.hash)
|
|
68
81
|
if (targetEl) {
|
|
69
82
|
open()
|
|
70
83
|
if (!isAccordionAnchored()) {
|
|
71
84
|
setAccordionAnchored(true)
|
|
72
85
|
setTimeout(() => {
|
|
73
|
-
|
|
86
|
+
r.scrollIntoView({
|
|
74
87
|
behavior: 'smooth',
|
|
75
88
|
block: 'start',
|
|
76
89
|
})
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { computed, ref } from 'vue'
|
|
3
3
|
import { useArticles, useConfig } from '#composables';
|
|
4
|
-
import { prepareHtmlContent, isDialogStored, addDialogToStorage, getDialogFromStorage } from '#utils';
|
|
4
|
+
import { type RefSrlPageDialog, prepareHtmlContent, isDialogStored, addDialogToStorage, getDialogFromStorage } from '#utils';
|
|
5
5
|
|
|
6
6
|
const props = defineProps<{
|
|
7
7
|
uuid: string;
|
|
@@ -13,8 +13,8 @@ const articles = useArticles();
|
|
|
13
13
|
const id = ref<string>(`srl-page__dialog-${props.uuid.replaceAll(' ', '_')}`);
|
|
14
14
|
const content = ref<string>('');
|
|
15
15
|
|
|
16
|
-
const dialog = isDialogStored(props.uuid)?
|
|
17
|
-
getDialogFromStorage(props.uuid):
|
|
16
|
+
const dialog: RefSrlPageDialog = isDialogStored(props.uuid)?
|
|
17
|
+
getDialogFromStorage(props.uuid) as RefSrlPageDialog:
|
|
18
18
|
ref<SrlPageDialog | null>(null);
|
|
19
19
|
|
|
20
20
|
if (!isDialogStored(props.uuid)) {
|
|
@@ -23,7 +23,7 @@ if (!isDialogStored(props.uuid)) {
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
const state = computed<boolean>(() => {
|
|
26
|
-
return dialog
|
|
26
|
+
return dialog?.value ?
|
|
27
27
|
dialog.value.dialogState : false
|
|
28
28
|
});
|
|
29
29
|
|
|
@@ -50,7 +50,8 @@ async function loadContent() {
|
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
async function open() {
|
|
53
|
-
dialog
|
|
53
|
+
const d = dialog?.value as SrlPageDialog;
|
|
54
|
+
d?.open();
|
|
54
55
|
}
|
|
55
56
|
</script>
|
|
56
57
|
|
|
@@ -44,7 +44,10 @@ const article = useArticle();
|
|
|
44
44
|
|
|
45
45
|
if (article.value) {
|
|
46
46
|
const file = `./html/${locale}/${article.value.name}.html`;
|
|
47
|
-
|
|
47
|
+
let publicationTitle = null
|
|
48
|
+
if (config.value.settings?.publicationName) {
|
|
49
|
+
publicationTitle = config.value.settings.publicationName[locale] ?? null;
|
|
50
|
+
}
|
|
48
51
|
try {
|
|
49
52
|
const req = await fetch(file);
|
|
50
53
|
let text = await req.text();
|
|
@@ -11,7 +11,7 @@ const props = defineProps<{
|
|
|
11
11
|
};
|
|
12
12
|
}>()
|
|
13
13
|
|
|
14
|
-
const rootEl = ref<HTMLDivElement>()
|
|
14
|
+
const rootEl = ref<HTMLDivElement | null>(null);
|
|
15
15
|
const focusElements = ref<HTMLElement[]>()
|
|
16
16
|
|
|
17
17
|
watch(
|
|
@@ -22,7 +22,7 @@ watch(
|
|
|
22
22
|
)
|
|
23
23
|
|
|
24
24
|
function getFocusElements() {
|
|
25
|
-
const container = rootEl.value
|
|
25
|
+
const container = rootEl.value as HTMLElement
|
|
26
26
|
const elements = container?.querySelectorAll<HTMLElement>(
|
|
27
27
|
'a, button, input, textarea, select, details, [tabindex]:not([tabindex="-1"])'
|
|
28
28
|
)
|
|
@@ -15,12 +15,14 @@ function toggle() {
|
|
|
15
15
|
|
|
16
16
|
function open() {
|
|
17
17
|
state.value = true
|
|
18
|
-
rootEl.value
|
|
18
|
+
const r = rootEl.value as HTMLElement
|
|
19
|
+
r?.querySelector<HTMLDivElement>(`#${id.value}`)?.focus()
|
|
19
20
|
}
|
|
20
21
|
|
|
21
22
|
function close() {
|
|
22
23
|
state.value = false
|
|
23
|
-
rootEl.value
|
|
24
|
+
const r = rootEl.value as HTMLElement
|
|
25
|
+
r?.querySelector<HTMLDivElement>(`[aria-controls="${id.value}"]`)?.focus()
|
|
24
26
|
}
|
|
25
27
|
|
|
26
28
|
const accordion = computed(() => {
|
|
@@ -37,18 +39,19 @@ const accordion = computed(() => {
|
|
|
37
39
|
|
|
38
40
|
onMounted(() => {
|
|
39
41
|
if (route.hash) {
|
|
40
|
-
|
|
42
|
+
const r = rootEl.value as HTMLElement
|
|
43
|
+
if (r.id && `#${r.id}` === route.hash) {
|
|
41
44
|
open()
|
|
42
45
|
isAccordionAnchored() || setAccordionAnchored(true)
|
|
43
46
|
} else {
|
|
44
|
-
const targetEl =
|
|
47
|
+
const targetEl = r?.querySelector<HTMLElement>(route.hash)
|
|
45
48
|
if (targetEl) {
|
|
46
49
|
open()
|
|
47
50
|
if (!isAccordionAnchored()) {
|
|
48
51
|
setAccordionAnchored(true)
|
|
49
52
|
nextTick(() => {
|
|
50
53
|
setTimeout(() => {
|
|
51
|
-
|
|
54
|
+
r.scrollIntoView({
|
|
52
55
|
behavior: 'smooth',
|
|
53
56
|
block: 'start',
|
|
54
57
|
})
|
|
@@ -124,7 +124,10 @@ function toggleAction() {
|
|
|
124
124
|
} else {
|
|
125
125
|
menu.value.closeAll()
|
|
126
126
|
}
|
|
127
|
-
!props.item.callback || props.item.callback(
|
|
127
|
+
!props.item.callback || props.item.callback(
|
|
128
|
+
$el.value as HTMLAnchorElement | HTMLButtonElement,
|
|
129
|
+
li.value as HTMLLIElement,
|
|
130
|
+
menu.value.$el)
|
|
128
131
|
toggle()
|
|
129
132
|
}
|
|
130
133
|
function close() {
|
|
@@ -181,12 +184,18 @@ function back(event: KeyboardEvent) {
|
|
|
181
184
|
}
|
|
182
185
|
|
|
183
186
|
function link() {
|
|
184
|
-
!props.item.callback || props.item.callback(
|
|
187
|
+
!props.item.callback || props.item.callback(
|
|
188
|
+
$el.value as HTMLAnchorElement | HTMLButtonElement,
|
|
189
|
+
li.value as HTMLLIElement,
|
|
190
|
+
)
|
|
185
191
|
emit('link')
|
|
186
192
|
}
|
|
187
193
|
|
|
188
194
|
function routerChange() {
|
|
189
|
-
!props.item.callback || props.item.callback(
|
|
195
|
+
!props.item.callback || props.item.callback(
|
|
196
|
+
$el.value as HTMLAnchorElement,
|
|
197
|
+
li.value as HTMLLIElement,
|
|
198
|
+
)
|
|
190
199
|
emit('link')
|
|
191
200
|
emit('routerChange')
|
|
192
201
|
}
|
|
@@ -227,12 +236,18 @@ defineExpose({
|
|
|
227
236
|
})
|
|
228
237
|
|
|
229
238
|
function internalLinkClick() {
|
|
230
|
-
!props.item.callback || props.item.callback(
|
|
239
|
+
!props.item.callback || props.item.callback(
|
|
240
|
+
$el.value as HTMLAnchorElement,
|
|
241
|
+
li.value as HTMLLIElement,
|
|
242
|
+
)
|
|
231
243
|
routerChange()
|
|
232
244
|
}
|
|
233
245
|
|
|
234
246
|
function externalLinkClick() {
|
|
235
|
-
!props.item.callback || props.item.callback(
|
|
247
|
+
!props.item.callback || props.item.callback(
|
|
248
|
+
$el.value as HTMLAnchorElement,
|
|
249
|
+
li.value as HTMLLIElement,
|
|
250
|
+
)
|
|
236
251
|
link()
|
|
237
252
|
}
|
|
238
253
|
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import {
|
|
2
|
+
import { ref } from 'vue'
|
|
3
3
|
import SrlPageCustomDialog from '@/Dialog.vue';
|
|
4
4
|
import Autoload from '@/Autoload.ts';
|
|
5
5
|
|
|
6
6
|
const props = withDefaults(
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
7
|
+
defineProps<{
|
|
8
|
+
header?: string;
|
|
9
|
+
content?: string;
|
|
10
|
+
}>(),
|
|
11
|
+
{
|
|
12
|
+
header: '',
|
|
13
|
+
content: '',
|
|
14
|
+
},
|
|
15
15
|
);
|
|
16
16
|
|
|
17
17
|
const $el = ref<HTMLDialogElement | null>(null);
|
|
@@ -29,14 +29,17 @@ function setDialogContentAndOpen(template: string) {
|
|
|
29
29
|
|
|
30
30
|
function open() {
|
|
31
31
|
dialogState.value = true;
|
|
32
|
-
$el.value
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
const dialog = $el.value as HTMLDialogElement;
|
|
33
|
+
dialog.showModal();
|
|
34
|
+
const main = dialog.querySelector('.srl-dialog__main') as HTMLElement;
|
|
35
|
+
main ? main.focus() : null
|
|
36
|
+
Autoload.init(dialog);
|
|
35
37
|
}
|
|
36
38
|
|
|
37
39
|
function close() {
|
|
38
40
|
dialogState.value = false;
|
|
39
|
-
$el.value
|
|
41
|
+
const dialog = $el.value as HTMLDialogElement;
|
|
42
|
+
dialog.close();
|
|
40
43
|
}
|
|
41
44
|
|
|
42
45
|
function clearContent() {
|
|
@@ -49,6 +52,7 @@ defineExpose({
|
|
|
49
52
|
dialogState,
|
|
50
53
|
setDialogContent,
|
|
51
54
|
setDialogContentAndOpen,
|
|
55
|
+
clearContent,
|
|
52
56
|
open,
|
|
53
57
|
close,
|
|
54
58
|
});
|
|
@@ -63,7 +67,20 @@ defineExpose({
|
|
|
63
67
|
@click.stop="close"
|
|
64
68
|
>
|
|
65
69
|
<SrlAriaTabChain @click.stop>
|
|
66
|
-
<SrlPageCustomDialog :header="header" :content="content" @close="close"
|
|
70
|
+
<SrlPageCustomDialog :header="header" :content="content" @close="close">
|
|
71
|
+
<template v-if="$slots.header" #header>
|
|
72
|
+
<slot name="header"/>
|
|
73
|
+
</template>
|
|
74
|
+
<template v-if="$slots.main" #main>
|
|
75
|
+
<slot name="main"/>
|
|
76
|
+
</template>
|
|
77
|
+
<template v-else-if="$slots.default" #main>
|
|
78
|
+
<slot/>
|
|
79
|
+
</template>
|
|
80
|
+
<template v-if="$slots.footer" #footer>
|
|
81
|
+
<slot name="footer"/>
|
|
82
|
+
</template>
|
|
83
|
+
</SrlPageCustomDialog>
|
|
67
84
|
</SrlAriaTabChain>
|
|
68
85
|
</dialog>
|
|
69
86
|
</template>
|
|
@@ -97,6 +97,7 @@ declare global {
|
|
|
97
97
|
type NsWowNavigationItem = {
|
|
98
98
|
label: string;
|
|
99
99
|
title?: string;
|
|
100
|
+
iconPrefix?: string;
|
|
100
101
|
icon?: string;
|
|
101
102
|
iconBefore?: string;
|
|
102
103
|
iconAfter?: string;
|
|
@@ -120,7 +121,11 @@ declare global {
|
|
|
120
121
|
attributes?: {
|
|
121
122
|
[key: string]: string;
|
|
122
123
|
};
|
|
123
|
-
callback?: (
|
|
124
|
+
callback?: (
|
|
125
|
+
ctaElement: HTMLAnchorElement | HTMLButtonElement,
|
|
126
|
+
listElement: HTMLLIElement,
|
|
127
|
+
menu?: HTMLUListElement
|
|
128
|
+
) => void;
|
|
124
129
|
children?: NsWowNavigationItem[];
|
|
125
130
|
};
|
|
126
131
|
|
package/srl/.srl/utils/index.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { camelCase } from './string';
|
|
|
3
3
|
import { prepareHtmlContent } from './html';
|
|
4
4
|
import { objectDeepAssign } from './object'
|
|
5
5
|
import {
|
|
6
|
+
type RefSrlPageDialog,
|
|
6
7
|
usePageState,
|
|
7
8
|
clearPageState,
|
|
8
9
|
isDialogStored,
|
|
@@ -21,6 +22,7 @@ export {
|
|
|
21
22
|
isExternalPath,
|
|
22
23
|
camelCase,
|
|
23
24
|
prepareHtmlContent,
|
|
25
|
+
RefSrlPageDialog,
|
|
24
26
|
usePageState,
|
|
25
27
|
clearPageState,
|
|
26
28
|
isAccordionAnchored,
|