@simple-reporting/base 1.0.13 → 1.0.15

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 (44) hide show
  1. package/dev/package.json +14 -14
  2. package/dev/src/assets/scss/editor.scss +45 -0
  3. package/dev/src/assets/scss/general.scss +1 -0
  4. package/dev/tsconfig.json +1 -1
  5. package/dev/vite.config.ts +1 -1
  6. package/livingdocs/040.Media/010.table/table/download.vue +494 -0
  7. package/livingdocs/040.Media/010.table/table/responsive.vue +104 -0
  8. package/livingdocs/040.Media/010.table/table.html +2 -2
  9. package/livingdocs/040.Media/010.table/table.vue +26 -0
  10. package/livingdocs/040.Media/030.video/ld-conf.json +1 -1
  11. package/livingdocs/100.Misc/010.anchor/anchor.html +3 -6
  12. package/livingdocs/100.Misc/010.anchor/scss/editor.scss +1 -12
  13. package/livingdocs/110.PDF/010.pdf-pagebreak/pdf-pagebreak.html +2 -2
  14. package/livingdocs/110.PDF/010.pdf-pagebreak/scss/editor.scss +0 -8
  15. package/livingdocs/110.PDF/030.pdf-publication-title/pdf-publication-title.html +2 -5
  16. package/livingdocs/110.PDF/030.pdf-publication-title/scss/editor.scss +0 -11
  17. package/livingdocs/110.PDF/040.pdf-chapter-title/pdf-chapter-title.html +2 -5
  18. package/livingdocs/110.PDF/040.pdf-chapter-title/scss/editor.scss +0 -5
  19. package/package.json +7 -7
  20. package/plugins/viteSrlPlugin.d.ts +2 -0
  21. package/{srl/plugins/viteSrlPlugin.ts → plugins/viteSrlPlugin.js} +114 -86
  22. package/scripts/prepare.d.ts +1 -1
  23. package/scripts/prepare.js +3 -58
  24. package/scripts/vue/components.d.ts +1 -0
  25. package/scripts/vue/components.js +94 -0
  26. package/srl/components/Srl/Article/{DialogButton.vue → Dialog/Button.vue} +1 -1
  27. package/srl/components/Srl/Menu/Item/Content.vue +7 -14
  28. package/srl/components/Srl/Menu/Item.vue +5 -7
  29. package/srl/components/Srl/{Menu/List.vue → Menu.vue} +2 -3
  30. package/srl/components/Srl/Note/Accordion/Content.vue +1 -1
  31. package/srl/components/Srl/Page/Dialog.vue +1 -1
  32. package/srl/plugins/asyncLdComponent.ts +2 -2
  33. package/srl/plugins/asyncSrlComponents.ts +2 -0
  34. package/srl/plugins/initProject.ts +1 -1
  35. package/srl/plugins/vueSrlPlugin.ts +3 -20
  36. package/srl/tsconfig.srl.json +89 -0
  37. package/srl/types/components.d.ts +3 -14
  38. package/srl/types/global.d.ts +7 -0
  39. package/srl/types/nswow.d.ts +14 -14
  40. /package/srl/components/{Srl/Page/App.vue → App.vue} +0 -0
  41. /package/srl/components/Srl/Menu/Item/Content/{IconAfter.vue → Icon/After.vue} +0 -0
  42. /package/srl/components/Srl/Menu/Item/Content/{IconBefore.vue → Icon/Before.vue} +0 -0
  43. /package/srl/components/Srl/Menu/Item/Content/{ImageAfter.vue → Image/After.vue} +0 -0
  44. /package/srl/components/Srl/Menu/Item/Content/{ImageBefore.vue → Image/Before.vue} +0 -0
@@ -0,0 +1,94 @@
1
+ import folders from '../folders.js';
2
+ import { join, relative } from 'node:path/posix';
3
+ import { existsSync, readdirSync, statSync, writeFileSync } from 'node:fs';
4
+
5
+ function toPascalAfterSlash(str) {
6
+ return str.replace(/\/(.)/g, (_, c) => c.toUpperCase());
7
+ }
8
+ function readVueDir(entryPath, prefix = '') {
9
+ const componentsPath = join(entryPath, 'components');
10
+ const baseDir = join(componentsPath, 'Srl');
11
+ const result = {};
12
+
13
+ function search(dir) {
14
+ for (const entry of readdirSync(dir)) {
15
+ const fullPath = join(dir, entry);
16
+ if (statSync(fullPath).isDirectory()) {
17
+ search(fullPath);
18
+ } else if (entry.endsWith('.vue')) {
19
+ const path = relative(componentsPath, fullPath);
20
+ let name = path.slice(0, -4);
21
+ name = toPascalAfterSlash(name);
22
+ name = name.replaceAll('/', '');
23
+
24
+ result[name] = {
25
+ component: `${prefix}components/${path}`,
26
+ type: relative(folders.srlTypes, fullPath)
27
+ };
28
+ }
29
+ }
30
+ }
31
+
32
+ if (existsSync(baseDir) && statSync(baseDir).isDirectory()) {
33
+ search(baseDir);
34
+ }
35
+
36
+ return result;
37
+ }
38
+
39
+ export async function vueComponents() {
40
+ const srlComponents = readVueDir(folders.srlRoot, '#');
41
+ const appComponents = readVueDir(folders.srlSrc, '@/');
42
+
43
+ const components = []
44
+ const types = []
45
+
46
+ for (const [name, info] of Object.entries(srlComponents)) {
47
+ const componentPath = appComponents[name] ? appComponents[name].component : info.component
48
+ const typePath = appComponents[name] ? appComponents[name].type : info.type
49
+ components.push(
50
+ `app.component('${name}', defineAsyncComponent(() => import('${componentPath}')));`,
51
+ )
52
+ types.push({
53
+ name: name,
54
+ type: ` type ${name} = typeof import('${typePath}')['default'];`,
55
+ })
56
+ }
57
+
58
+ for (const [name, info] of Object.entries(appComponents)) {
59
+ if (!srlComponents[name]) {
60
+ components.push(
61
+ `app.component('${name}', defineAsyncComponent(() => import('${info.component}')));`,
62
+ )
63
+ types.push({
64
+ name: name,
65
+ type: ` type ${name} = typeof import('${info.type}')['default'];`,
66
+ })
67
+ }
68
+ }
69
+
70
+ writeFileSync(join(folders.srlPlugins, 'asyncSrlComponents.ts'),
71
+ `import { defineAsyncComponent } from 'vue';
72
+ export default function asyncSrlComponents(app) {
73
+ ${components.join('\n ')}
74
+ }
75
+ `, 'utf8');
76
+
77
+ const componentsInterface = types.map(t => {
78
+ return ` ${t.name}: ${t.name};`
79
+ })
80
+
81
+ writeFileSync(join(folders.srlTypes, 'components.d.ts'),
82
+ `export {};
83
+ declare global {
84
+ ${types.map(t=>t.type).join("\n")}
85
+ }
86
+
87
+ interface _GlobalComponents {
88
+ ${componentsInterface.join("\n")}
89
+ }
90
+ declare module '@vue/runtime-core' {
91
+ export interface GlobalComponents extends _GlobalComponents {}
92
+ }
93
+ `, 'utf8');
94
+ }
@@ -11,7 +11,7 @@ const config = useConfig();
11
11
  const articles = useArticles();
12
12
  const id = ref<string>(`srl-page__dialog-${useId()}`);
13
13
  const content = ref<string>('');
14
- const dialog = ref<typeof SrlPageDialog | null>(null);
14
+ const dialog = ref<SrlPageDialog | null>(null);
15
15
  async function loadContent() {
16
16
  const article = articles.value.find((article) => article.uuid === props.uuid);
17
17
  if (article) {
@@ -1,11 +1,4 @@
1
1
  <script setup lang="ts">
2
- import MenuItemContentText from './Content/Text.vue';
3
- import MenuItemContentImage from './Content/Image.vue';
4
- import MenuItemContentImageBefore from './Content/ImageBefore.vue';
5
- import MenuItemContentImageAfter from './Content/ImageAfter.vue';
6
- import MenuItemContentIcon from './Content/Icon.vue';
7
- import MenuItemContentIconBefore from './Content/IconBefore.vue';
8
- import MenuItemContentIconAfter from './Content/IconAfter.vue';
9
2
 
10
3
  const props = defineProps<{
11
4
  item: NsWowNavigationItem
@@ -15,43 +8,43 @@ const props = defineProps<{
15
8
  </script>
16
9
 
17
10
  <template>
18
- <MenuItemContentIcon
11
+ <SrlMenuItemContentIcon
19
12
  v-if="props.item.icon"
20
13
  :item="props.item"
21
14
  :depth="props.depth"
22
15
  :disableClasses="props.disableClasses"
23
16
  />
24
- <MenuItemContentIconBefore
17
+ <SrlMenuItemContentIconBefore
25
18
  v-else-if="props.item.iconBefore"
26
19
  :item="props.item"
27
20
  :depth="props.depth"
28
21
  :disableClasses="props.disableClasses"
29
22
  />
30
- <MenuItemContentIconAfter
23
+ <SrlMenuItemContentIconAfter
31
24
  v-else-if="props.item.iconAfter"
32
25
  :item="props.item"
33
26
  :depth="props.depth"
34
27
  :disableClasses="props.disableClasses"
35
28
  />
36
- <MenuItemContentImage
29
+ <SrlMenuItemContentImage
37
30
  v-else-if="props.item.img"
38
31
  :item="props.item"
39
32
  :depth="props.depth"
40
33
  :disableClasses="props.disableClasses"
41
34
  />
42
- <MenuItemContentImageBefore
35
+ <SrlMenuItemContentImageBefore
43
36
  v-else-if="props.item.imgBefore"
44
37
  :item="props.item"
45
38
  :depth="props.depth"
46
39
  :disableClasses="props.disableClasses"
47
40
  />
48
- <MenuItemContentImageAfter
41
+ <SrlMenuItemContentImageAfter
49
42
  v-else-if="props.item.imgAfter"
50
43
  :item="props.item"
51
44
  :depth="props.depth"
52
45
  :disableClasses="props.disableClasses"
53
46
  />
54
- <MenuItemContentText
47
+ <SrlMenuItemContentText
55
48
  v-else
56
49
  :item="props.item"
57
50
  :depth="props.depth"
@@ -1,7 +1,5 @@
1
1
  <script setup lang="ts">
2
2
  import { computed, nextTick, ref, useId } from 'vue'
3
- import MenuItemContent from './Item/Content.vue'
4
- import MenuList from './List.vue'
5
3
  import type { RouterLink } from 'vue-router'
6
4
  import { isExternalPath } from '#utils/uri'
7
5
 
@@ -187,7 +185,7 @@ const classListItem = computed(() => {
187
185
  @keydown.shift.tab.exact="back"
188
186
  @keydown.esc.stop.prevent="close"
189
187
  >
190
- <MenuItemContent
188
+ <SrlMenuItemContent
191
189
  :item="props.item"
192
190
  :depth="props.depth"
193
191
  :disableClasses="props.disableClasses"
@@ -212,7 +210,7 @@ const classListItem = computed(() => {
212
210
  @keydown.shift.tab.exact="back"
213
211
  @keydown.esc.stop.prevent="close"
214
212
  >
215
- <MenuItemContent
213
+ <SrlMenuItemContent
216
214
  :item="props.item"
217
215
  :depth="props.depth"
218
216
  :disableClasses="props.disableClasses"
@@ -237,7 +235,7 @@ const classListItem = computed(() => {
237
235
  @keydown.shift.tab.exact="back"
238
236
  @keydown.esc.stop.prevent="close"
239
237
  >
240
- <MenuItemContent
238
+ <SrlMenuItemContent
241
239
  :item="props.item"
242
240
  :depth="props.depth"
243
241
  :disableClasses="props.disableClasses"
@@ -265,13 +263,13 @@ const classListItem = computed(() => {
265
263
  @keydown.shift.tab.exact="back"
266
264
  @keydown.esc.stop.prevent="close"
267
265
  >
268
- <MenuItemContent
266
+ <SrlMenuItemContent
269
267
  :item="props.item"
270
268
  :depth="props.depth"
271
269
  :disableClasses="props.disableClasses"
272
270
  />
273
271
  </button>
274
- <MenuList
272
+ <SrlMenu
275
273
  v-if="props.item.children"
276
274
  ref="menu"
277
275
  :id="`${props.name}-${id}`"
@@ -51,7 +51,6 @@
51
51
  * />
52
52
  */
53
53
  import { computed, ref } from 'vue'
54
- import MenuItem from './Item.vue'
55
54
 
56
55
  type BackButtonItem = {
57
56
  title?: string
@@ -108,7 +107,7 @@ const emit = defineEmits([
108
107
  'tab',
109
108
  'back',
110
109
  ])
111
- const items = ref<Array<typeof MenuItem>>([])
110
+ const items = ref<SrlMenuItem[]>([])
112
111
 
113
112
  const opened = defineModel('opened', { type: Boolean, default: true })
114
113
 
@@ -247,7 +246,7 @@ defineExpose({
247
246
  @keydown.left.prevent.stop="focusClickable(menuItems.length - 1)"
248
247
  >
249
248
  <template v-for="(item, index) in menuItems" :key="index">
250
- <MenuItem
249
+ <SrlMenuItem
251
250
  ref="items"
252
251
  :item="item"
253
252
  :name="props.name"
@@ -1,5 +1,5 @@
1
1
  <script setup lang="ts">
2
- import { onMounted, onUpdated, ref, watch } from 'vue'
2
+ import { onMounted, ref, watch } from 'vue'
3
3
 
4
4
  const props = defineProps<{
5
5
  accordion: {
@@ -1,6 +1,6 @@
1
1
  <script setup lang="ts">
2
2
  import { ref } from 'vue';
3
- import SrlPageCustomDialog from '@//Dialog.vue';
3
+ import SrlPageCustomDialog from '@/Dialog.vue';
4
4
  import Autoload from '@/Autoload.ts';
5
5
 
6
6
  const props = withDefaults(
@@ -1,2 +1,2 @@
1
- import { defineAsyncComponent } from 'vue';
2
- export default function asyncLdComponent(app) {}
1
+ import { defineAsyncComponent } from 'vue'
2
+ export default function asyncLdComponent(app) {}
@@ -0,0 +1,2 @@
1
+ import { defineAsyncComponent } from 'vue';
2
+ export default function asyncSrlComponents(app) {}
@@ -5,7 +5,7 @@ import srlVuePlugin from '#plugins/vueSrlPlugin';
5
5
 
6
6
  import '#imports/app.scss';
7
7
 
8
- import SrlPageApp from '#components/Srl/Page/App.vue';
8
+ import SrlPageApp from '#components/App.vue';
9
9
  import router from '@/router';
10
10
 
11
11
  export default async function initProject() {
@@ -1,27 +1,10 @@
1
- import { defineComponent, type App, defineAsyncComponent } from 'vue'
2
- import SrlAriaTabChain from '#components/Srl/Aria/TabChain.vue';
3
- import SrlArticleAutoload from '#components/Srl/Article/Autoload.vue';
4
- import SrlArticleRoot from '#components/Srl/Article/Root.vue';
5
- import SrlArticleDialogButton from '#components/Srl/Article/DialogButton.vue';
6
- import SrlMenu from '#components/Srl/Menu/List.vue';
7
- import SrlPageDialog from '#components/Srl/Page/Dialog.vue';
8
-
1
+ import { type App } from 'vue'
9
2
  import asyncLdComponent from './asyncLdComponent.ts';
3
+ import asyncSrlComponents from '#plugins/asyncSrlComponents.ts';
10
4
 
11
5
  export default {
12
6
  install(app: App) {
13
- app.component('SrlAriaTabChain', defineComponent(SrlAriaTabChain));
14
- app.component('SrlArticleAutoload', defineComponent(SrlArticleAutoload));
15
- app.component('SrlArticleRoot', defineComponent(SrlArticleRoot));
16
- app.component(
17
- 'SrlArticleDialogButton',
18
- defineComponent(SrlArticleDialogButton),
19
- );
20
- app.component('SrlPageDialog', defineComponent(SrlPageDialog));
21
- app.component('SrlMenu', defineComponent(SrlMenu));
22
- app.component('SrlNoteAccordion', defineAsyncComponent(() => import('#components/Srl/Note/Accordion.vue')));
23
- app.component('SrlNoteAccordionToggle', defineAsyncComponent(() => import('#components/Srl/Note/Accordion/Toggle.vue')));
24
- app.component('SrlNoteAccordionContent', defineAsyncComponent(() => import('#components/Srl/Note/Accordion/Content.vue')));
7
+ asyncSrlComponents(app)
25
8
  asyncLdComponent(app);
26
9
  },
27
10
  };
@@ -0,0 +1,89 @@
1
+ {
2
+ "extends": "@vue/tsconfig/tsconfig.dom.json",
3
+ "include": [
4
+ "../env.d.ts",
5
+ "../src/**/*",
6
+ "../src/**/*.vue",
7
+ "./**/*",
8
+ "./**/*.vue",
9
+ "../livingdocs/**/*",
10
+ "../livingdocs/**/*.vue",
11
+ "./**/*.d.ts"
12
+ ],
13
+ "exclude": [
14
+ "../src/**/__tests__/*"
15
+ ],
16
+ "compilerOptions": {
17
+ "composite": true,
18
+ "tsBuildInfoFile": "../node_modules/.tmp/tsconfig.app.tsbuildinfo",
19
+ "baseUrl": ".",
20
+ "paths": {
21
+ "@/*": [
22
+ "../src/*"
23
+ ],
24
+ "~/*": [
25
+ "../*"
26
+ ],
27
+ "#srl": [
28
+ "./"
29
+ ],
30
+ "#srl/*": [
31
+ "./*"
32
+ ],
33
+ "#components": [
34
+ "./components"
35
+ ],
36
+ "#components/*": [
37
+ "./components/*"
38
+ ],
39
+ "#composables": [
40
+ "./composables"
41
+ ],
42
+ "#composables/*": [
43
+ "./composables/*"
44
+ ],
45
+ "#utils": [
46
+ "./utils"
47
+ ],
48
+ "#utils/*": [
49
+ "./utils/*"
50
+ ],
51
+ "#plugins": [
52
+ "./plugins"
53
+ ],
54
+ "#plugins/*": [
55
+ "./plugins/*"
56
+ ],
57
+ "#types": [
58
+ "./types"
59
+ ],
60
+ "#types/*": [
61
+ "./types/*"
62
+ ],
63
+ "#imports": [
64
+ "./imports"
65
+ ],
66
+ "#imports/*": [
67
+ "./imports/*"
68
+ ],
69
+ "#ld": [
70
+ "../livingdocs"
71
+ ],
72
+ "#ld/*": [
73
+ "../livingdocs/*"
74
+ ],
75
+ "assets": [
76
+ "../src/assets"
77
+ ],
78
+ "assets/*": [
79
+ "../src/assets/*"
80
+ ],
81
+ "srl": [
82
+ "./srl"
83
+ ],
84
+ "srl/*": [
85
+ "./srl/*"
86
+ ]
87
+ }
88
+ }
89
+ }
@@ -1,17 +1,6 @@
1
- import { Component, App } from 'vue';
2
-
3
- interface window {
4
- app: App;
5
- }
6
- interface _GlobalComponents {
7
- SrlAriaTabChain: (typeof import('../components/Srl/Aria/TabChain.vue'))['default'];
8
- SrlArticleAutoload: (typeof import('../components/Srl/Article/Autoload.vue'))['default'];
9
- SrlArticleDialogButton: (typeof import('../components/Srl/Article/DialogButton.vue'))['default'];
10
- SrlArticleRoot: (typeof import('../components/Srl/Article/Root.vue'))['default'];
11
- SrlMenu: (typeof import('../components/Srl/Menu/List.vue'))['default'];
12
- SrlPageDialog: (typeof import('../components/Srl/Page/Dialog.vue'))['default'];
13
- }
14
-
1
+ export {}
2
+ declare global {}
3
+ interface _GlobalComponents {}
15
4
  declare module '@vue/runtime-core' {
16
5
  export interface GlobalComponents extends _GlobalComponents {}
17
6
  }
@@ -0,0 +1,7 @@
1
+ import { App } from 'vue'
2
+ export {}
3
+ declare global {
4
+ interface Window {
5
+ app: App;
6
+ }
7
+ }
@@ -1,6 +1,6 @@
1
1
  export {};
2
2
  declare global {
3
- export type NsWowSettings = {
3
+ type NsWowSettings = {
4
4
  languages: string[];
5
5
  defaultLanguage: string;
6
6
  shortBreadcrumb: boolean;
@@ -10,7 +10,7 @@ declare global {
10
10
  categories: string[];
11
11
  };
12
12
 
13
- export interface NsWowArticle {
13
+ interface NsWowArticle {
14
14
  uuid: string;
15
15
  name: string;
16
16
  translatedTitle: string;
@@ -23,11 +23,11 @@ declare global {
23
23
  status: string;
24
24
  }
25
25
 
26
- export interface NsWowArticles {
26
+ interface NsWowArticles {
27
27
  [locale: string]: NsWowArticle[];
28
28
  }
29
29
 
30
- export type NsWowConfig = {
30
+ type NsWowConfig = {
31
31
  locale: string;
32
32
  settings: NsWowSettings;
33
33
  articles: NsWowArticles;
@@ -40,15 +40,15 @@ declare global {
40
40
  };
41
41
  };
42
42
 
43
- export type NsWowTranslations = {
43
+ type NsWowTranslations = {
44
44
  [locale: string]: NsWowTranslation;
45
45
  };
46
46
 
47
- export type NsWowTranslation = {
47
+ type NsWowTranslation = {
48
48
  [key: string]: string;
49
49
  };
50
50
 
51
- export interface NsWowMenu {
51
+ interface NsWowMenu {
52
52
  label: string;
53
53
  type: string;
54
54
  page?: string;
@@ -57,11 +57,11 @@ declare global {
57
57
  submenuEntries?: NsWowMenu[];
58
58
  }
59
59
 
60
- export interface NsWowMenus {
60
+ interface NsWowMenus {
61
61
  [menu: string]: NsWowMenu[];
62
62
  }
63
63
 
64
- export interface NsWowResponseRouting {
64
+ interface NsWowResponseRouting {
65
65
  version: string;
66
66
  pages: NsWowArticle[];
67
67
  menu: {
@@ -69,7 +69,7 @@ declare global {
69
69
  };
70
70
  }
71
71
 
72
- export interface NsWowDownload {
72
+ interface NsWowDownload {
73
73
  type: string;
74
74
  title: string;
75
75
  fileType: string;
@@ -77,19 +77,19 @@ declare global {
77
77
  artifact: string;
78
78
  }
79
79
 
80
- export type NsWowDownloads = {
80
+ type NsWowDownloads = {
81
81
  version?: string;
82
82
  structure: NsWowDownload[];
83
83
  annualReport?: NsWowDownload;
84
84
  };
85
85
 
86
- export type NsWowSearchList = {
86
+ type NsWowSearchList = {
87
87
  article: NsWowArticle;
88
88
  href: string;
89
89
  words: string;
90
90
  };
91
91
 
92
- export type NsWowNavigationItem = {
92
+ type NsWowNavigationItem = {
93
93
  label: string;
94
94
  title?: string;
95
95
  icon?: string;
@@ -116,7 +116,7 @@ declare global {
116
116
  children?: NsWowNavigationItem[];
117
117
  };
118
118
 
119
- export type NsWowPageData = {
119
+ type NsWowPageData = {
120
120
  time: number;
121
121
  article: NsWowArticle | null;
122
122
  content: string;
File without changes