@bexis2/bexis2-core-ui 0.1.12 → 0.2.0

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 (77) hide show
  1. package/README.md +22 -5
  2. package/dist/components/file/FileUploader.svelte.d.ts +2 -2
  3. package/dist/components/form/CheckboxKvPList.svelte +3 -1
  4. package/dist/components/form/CheckboxKvPList.svelte.d.ts +2 -0
  5. package/dist/components/form/DateInput.svelte +2 -1
  6. package/dist/components/form/DateInput.svelte.d.ts +1 -0
  7. package/dist/components/form/DropdownKvP.svelte +2 -1
  8. package/dist/components/form/DropdownKvP.svelte.d.ts +2 -0
  9. package/dist/components/form/InputContainer.svelte +16 -2
  10. package/dist/components/form/InputContainer.svelte.d.ts +2 -0
  11. package/dist/components/form/MultiSelect.svelte +10 -4
  12. package/dist/components/form/MultiSelect.svelte.d.ts +8 -2
  13. package/dist/components/form/NumberInput.svelte +3 -1
  14. package/dist/components/form/NumberInput.svelte.d.ts +1 -0
  15. package/dist/components/form/TextArea.svelte +14 -13
  16. package/dist/components/form/TextArea.svelte.d.ts +1 -0
  17. package/dist/components/form/TextInput.svelte +4 -1
  18. package/dist/components/form/TextInput.svelte.d.ts +1 -0
  19. package/dist/components/page/Help.svelte +38 -0
  20. package/dist/components/page/Help.svelte.d.ts +23 -0
  21. package/dist/components/page/Page.svelte +43 -9
  22. package/dist/components/page/Page.svelte.d.ts +3 -2
  23. package/dist/components/page/Spinner.svelte +2 -2
  24. package/dist/components/page/Spinner.svelte.d.ts +2 -2
  25. package/dist/components/page/breadcrumb/Breadcrumb.svelte +32 -0
  26. package/dist/components/page/breadcrumb/Breadcrumb.svelte.d.ts +16 -0
  27. package/dist/components/page/menu/Menu.svelte +14 -12
  28. package/dist/components/page/menu/MenuBar.svelte +0 -1
  29. package/dist/components/page/menu/MenuItem.svelte +9 -14
  30. package/dist/components/page/menu/MenuItem.svelte.d.ts +0 -1
  31. package/dist/components/page/menu/MenuSublist.svelte +35 -0
  32. package/dist/components/page/menu/MenuSublist.svelte.d.ts +18 -0
  33. package/dist/components/page/menu/SettingsBar.svelte +14 -32
  34. package/dist/index.d.ts +3 -3
  35. package/dist/index.js +2 -2
  36. package/dist/models/Enums.d.ts +1 -1
  37. package/dist/models/Enums.js +6 -6
  38. package/dist/models/Models.d.ts +20 -10
  39. package/dist/models/Models.js +1 -0
  40. package/dist/models/Page.js +16 -0
  41. package/dist/services/Api.js +1 -1
  42. package/dist/services/BaseCaller.d.ts +1 -0
  43. package/dist/services/BaseCaller.js +12 -0
  44. package/dist/stores/pageStores.d.ts +25 -0
  45. package/dist/stores/pageStores.js +112 -0
  46. package/package.json +1 -1
  47. package/src/lib/components/file/FileUploader.svelte +4 -4
  48. package/src/lib/components/form/CheckboxKvPList.svelte +3 -1
  49. package/src/lib/components/form/DateInput.svelte +3 -1
  50. package/src/lib/components/form/DropdownKvP.svelte +2 -1
  51. package/src/lib/components/form/InputContainer.svelte +26 -1
  52. package/src/lib/components/form/MultiSelect.svelte +10 -4
  53. package/src/lib/components/form/NumberInput.svelte +5 -1
  54. package/src/lib/components/form/TextArea.svelte +27 -25
  55. package/src/lib/components/form/TextInput.svelte +4 -2
  56. package/src/lib/components/page/Help.svelte +43 -0
  57. package/src/lib/components/page/Page.svelte +58 -10
  58. package/src/lib/components/page/Spinner.svelte +2 -2
  59. package/src/lib/components/page/breadcrumb/Breadcrumb.svelte +43 -0
  60. package/src/lib/components/page/menu/Menu.svelte +18 -16
  61. package/src/lib/components/page/menu/MenuBar.svelte +1 -1
  62. package/src/lib/components/page/menu/MenuItem.svelte +15 -15
  63. package/src/lib/components/page/menu/MenuSublist.svelte +48 -0
  64. package/src/lib/components/page/menu/SettingsBar.svelte +39 -60
  65. package/src/lib/index.ts +8 -8
  66. package/src/lib/models/Enums.ts +1 -1
  67. package/src/lib/models/Models.ts +23 -10
  68. package/src/lib/models/Page.ts +41 -0
  69. package/src/lib/services/Api.ts +1 -1
  70. package/src/lib/services/BaseCaller.js +12 -0
  71. package/src/lib/stores/pageStores.ts +135 -0
  72. package/dist/components/page/menu/menu.d.ts +0 -21
  73. package/dist/components/page/menu/menu.js +0 -1
  74. package/src/lib/components/page/menu/menu.ts +0 -23
  75. /package/dist/stores/{apistore.d.ts → apiStores.d.ts} +0 -0
  76. /package/dist/stores/{apistore.js → apiStores.js} +0 -0
  77. /package/src/lib/stores/{apistore.ts → apiStores.ts} +0 -0
@@ -15,8 +15,12 @@
15
15
  export let complexSource = false;
16
16
  export let complexTarget = false;
17
17
  export let required = false;
18
- export let feedback = [];
18
+ export let feedback = [''];
19
19
  export let placeholder = "-- Please select --"
20
+ export let invalid = false;
21
+ export let loading = false;
22
+ export let help = false;
23
+
20
24
 
21
25
  let isLoaded = false;
22
26
 
@@ -79,7 +83,7 @@
79
83
  }
80
84
 
81
85
  onMount(async () => {
82
- ////console.log("on mount multiselect");
86
+ console.log("on mount multiselect");
83
87
  ////console.log(source);
84
88
 
85
89
  //a) source is complex model is simple
@@ -119,7 +123,7 @@
119
123
 
120
124
  if(!isMulti)
121
125
  {
122
- console.log("onmount",complexSource,complexTarget,value,target)
126
+ //console.log("onmount",complexSource,complexTarget,value,target)
123
127
  if(!complexSource && !complexTarget)
124
128
  {
125
129
  value = {
@@ -147,7 +151,7 @@
147
151
  </script>
148
152
 
149
153
 
150
- <InputContainer label={title} {feedback} {required}>
154
+ <InputContainer {id} label={title} {feedback} {required} {help}>
151
155
  <Select
152
156
  {id}
153
157
  items={source}
@@ -157,6 +161,8 @@
157
161
  multiple={isMulti}
158
162
  bind:value
159
163
  {placeholder}
164
+ hasError={invalid}
165
+ {loading}
160
166
  on:change
161
167
  on:input
162
168
  on:focus
@@ -1,5 +1,6 @@
1
1
  <script lang="ts">
2
2
  import InputContainer from './InputContainer.svelte';
3
+ import { helpStore } from '$store/pageStores'
3
4
 
4
5
  export let id: string = '';
5
6
  export let label: string = '';
@@ -10,9 +11,12 @@
10
11
  export let required: boolean = false;
11
12
  export let feedback: string[] = [''];
12
13
  export let placeholder: string = "";
14
+ export let help:boolean=false;
15
+
16
+
13
17
  </script>
14
18
 
15
- <InputContainer {label} {feedback} {required}>
19
+ <InputContainer {id} {label} {feedback} {required} {help}>
16
20
  <input
17
21
  {id}
18
22
  class="input variant-form-material"
@@ -1,25 +1,27 @@
1
- <script lang="ts">
2
- import InputContainer from './InputContainer.svelte';
3
-
4
- export let id: string = '';
5
- export let label: string = '';
6
- export let value: string = '';
7
-
8
- export let valid: boolean = false;
9
- export let invalid: boolean = false;
10
- export let required: boolean = false;
11
- export let feedback: string[] = [''];
12
- export let placeholder: string = "";
13
- </script>
14
-
15
- <InputContainer {label} {feedback} {required}>
16
- <textarea
17
- {id}
18
- class="textarea variant-form-material"
19
- class:input-success={valid}
20
- class:input-error={invalid}
21
- bind:value
22
- on:input
23
- {placeholder}
24
- />
25
- </InputContainer>
1
+ <script lang="ts">
2
+ import InputContainer from './InputContainer.svelte';
3
+
4
+ export let id: string = '';
5
+ export let label: string = '';
6
+ export let value: string = '';
7
+
8
+ export let valid: boolean = false;
9
+ export let invalid: boolean = false;
10
+ export let required: boolean = false;
11
+ export let feedback: string[] = [''];
12
+ export let placeholder: string = "";
13
+ export let help:boolean=false;
14
+
15
+ </script>
16
+
17
+ <InputContainer {id} {label} {feedback} {required} {help}>
18
+ <textarea
19
+ {id}
20
+ class="textarea variant-form-material"
21
+ class:input-success={valid}
22
+ class:input-error={invalid}
23
+ bind:value
24
+ on:input
25
+ {placeholder}
26
+ />
27
+ </InputContainer>
@@ -4,16 +4,18 @@
4
4
  export let id: string = '';
5
5
  export let label: string = '';
6
6
  export let value: string = '';
7
-
8
7
  export let valid: boolean = false;
9
8
  export let invalid: boolean = false;
10
9
  export let required: boolean = false;
11
10
  export let feedback: string[] = [''];
12
11
  export let placeholder: string ="";
12
+ export let help:boolean=false;
13
13
 
14
14
  </script>
15
15
 
16
- <InputContainer {label} {feedback} {required}>
16
+
17
+
18
+ <InputContainer {id} {label} {feedback} {required} {help}>
17
19
  <input
18
20
  {id}
19
21
  class="input variant-form-material"
@@ -0,0 +1,43 @@
1
+ <script lang=ts>
2
+ import { helpStore } from '$store/pageStores'
3
+ import type { helpItemType, helpStoreType } from "$models/Models";
4
+
5
+ let Value:helpStoreType;
6
+ $:helpStore.subscribe(value => {
7
+ Value = value;
8
+ });
9
+ let helpItem:helpItemType;
10
+ $:helpItem = getHelpItem(Value);
11
+
12
+ function getHelpItem(value:helpStoreType):helpItemType
13
+ {
14
+ if(value != undefined && value.helpItems != undefined && value.itemId != undefined)
15
+ {
16
+ return (value.itemId == "") ? {id:undefined,name:'',description:''}:value.helpItems.find(h => h.id === value.itemId)!;
17
+ }
18
+ return {id:undefined,name:'',description:''};
19
+ }
20
+ window.origin
21
+
22
+ </script>
23
+ {#if helpItem && helpItem.id}
24
+ <div class="p-5 w-96 space-y-4" id={helpItem.id}>
25
+ <h3 class="h3">{ helpItem.name }</h3>
26
+ <p>{@html helpItem.description }</p>
27
+ {#if helpItem.link}
28
+ <p><a href="{helpItem.link}">... read more</a></p>
29
+ {/if}
30
+ </div>
31
+ {:else}
32
+ <div class="p-5 w-96 space-y-4">
33
+ <h3 class="h3">Help</h3>
34
+ <div class="space-y-4">
35
+ <div class="grid grid-cols-3 gap-8">
36
+ <div class="placeholder animate-pulse" />
37
+ <div class="placeholder animate-pulse" />
38
+ <div class="placeholder animate-pulse" />
39
+ </div>
40
+ <div class="placeholder w-28 animate-pulse" />
41
+ </div>
42
+ </div>
43
+ {/if}
@@ -1,29 +1,65 @@
1
1
  <script lang="ts">
2
+ import {onMount} from 'svelte'
2
3
 
3
- import type { Link } from "$lib/models/Models";
4
+ import type { linkType } from "$lib/models/Models";
4
5
 
6
+ // ui components
5
7
  import Menu from './menu/Menu.svelte'
8
+ import Help from "./Help.svelte";
9
+ import Breadcrumb from './breadcrumb/Breadcrumb.svelte';
10
+
11
+ //popup
12
+ import { popup } from '@skeletonlabs/skeleton';
13
+ import type { PopupSettings } from '@skeletonlabs/skeleton';
14
+ import { computePosition, autoUpdate, offset, shift, flip, arrow } from '@floating-ui/dom';
15
+ import { storePopup } from '@skeletonlabs/skeleton';
16
+ import { breadcrumbStore } from '$store/pageStores';
17
+
18
+ storePopup.set({ computePosition, autoUpdate, offset, shift, flip, arrow });
19
+
20
+ import { AppShell } from '@skeletonlabs/skeleton';
21
+
22
+ // stores
23
+ import { helpStore } from '$store/pageStores';
6
24
 
7
25
  export let title = "";
8
26
  export let note = "";
9
- export let links:Link[]=[];
27
+ export let links:linkType[]=[];
10
28
 
11
29
  // active or hide menu
12
30
  export let menu:boolean = true;
13
31
  export let footer:boolean = true;
32
+ export let help:boolean = false;
33
+
34
+ onMount(async () => {
35
+ console.log("on mount page ")
36
+ breadcrumbStore.clean();
37
+ breadcrumbStore.addItem({label:title,link:window.location.pathname})
14
38
 
15
- </script>
39
+ // clean help when is not active
40
+ //if(!help){ helpStore.clear() }
41
+ });
42
+
43
+ //popup
44
+ const popupClick: PopupSettings = {
45
+ event: 'click',
46
+ target: 'popupClick',
47
+ placement: 'top'
48
+ };
16
49
 
17
- {#if menu}
50
+ </script>
51
+
52
+ {#if true}
18
53
  <Menu/>
19
54
  {/if}
55
+ <Breadcrumb {title}/>
20
56
 
21
57
  <div class="px-5 grid gap-5 content-center" >
22
58
 
23
- <h3 class="h3">{title}</h3>
59
+ <!-- <h3 class="h3">{title}</h3>
24
60
  {#if note}
25
61
  <blockquote class="blockquote">{note}</blockquote>
26
- {/if}
62
+ {/if} -->
27
63
 
28
64
  <slot name="description" />
29
65
 
@@ -46,16 +82,28 @@
46
82
  {/if}
47
83
  <slot/>
48
84
  </div>
49
- {#if $$slots.right}
50
- <div class="w-fixed w-full max-w-min flex-shrink flex-grow-0 px-2">
51
- <slot name="right" />
85
+ {#if $$slots.right || help}
86
+ <div class="w-fixed w-full max-w-min flex-shrink flex-grow-0 px-2" class:w-96:={help}>
87
+ <!--if help is active show Help-->
88
+ <!--if help is active and slot is set -->
89
+ <!-- help is deactiveated -->
90
+ <slot name="right"/>
91
+
52
92
  </div>
53
93
  {/if}
54
94
 
95
+
55
96
  </div>
56
97
  </div>
57
98
 
58
-
99
+ {#if help}
100
+ <button class="btn btn-sm variant-filled-warning fixed bottom-5 right-10" use:popup={popupClick}>?</button>
101
+
102
+ <div class="card p-4 variant-filled-primary" data-popup="popupClick">
103
+ <Help />
104
+ <div class="arrow variant-filled-primary" />
105
+ </div>
106
+ {/if}
59
107
 
60
108
 
61
109
  {#if menu}
@@ -1,9 +1,9 @@
1
1
  <script lang="ts">
2
- import { Position } from "$lib/models/Enums";
2
+ import { positionType } from "$lib/models/Enums";
3
3
 
4
4
  export let textCss = "text-secundary-500"
5
5
  export let label = "";
6
- export let position:Position = Position.start
6
+ export let position:positionType = positionType.start;
7
7
 
8
8
  </script>
9
9
 
@@ -0,0 +1,43 @@
1
+ <script lang="ts">
2
+
3
+ import { breadcrumbStore } from '$store/pageStores';
4
+ import type{ breadcrumbItemType } from '$models/Page';
5
+
6
+
7
+ export let title;
8
+
9
+
10
+ let list:breadcrumbItemType[] = [];
11
+ $:list;
12
+
13
+ $:breadcrumbStore.subscribe(value => {
14
+
15
+ list = value?.items;
16
+
17
+ });
18
+
19
+
20
+
21
+ </script>
22
+
23
+
24
+ <div class="px-5 py-2">
25
+ <ol class="breadcrumb -p50">
26
+
27
+ <!--default home-->
28
+ <li class="crumb"><a class="anchor" href={"/"}>Home</a></li>
29
+ <li class="crumb-separator" aria-hidden>&rsaquo;</li>
30
+
31
+ {#each list as crumb, i}
32
+ <!-- If crumb index is less than the breadcrumb length minus 1 -->
33
+ {#if i < list.length - 1}
34
+ <li class="crumb"><a class="anchor" href={crumb.link}>{crumb.label}</a></li>
35
+ <li class="crumb-separator" aria-hidden>&rsaquo;</li>
36
+ {:else}
37
+ <li class="crumb">{crumb.label}</li>
38
+ {/if}
39
+ {/each}
40
+ </ol>
41
+ </div>
42
+
43
+
@@ -1,24 +1,27 @@
1
1
  <script lang="ts">
2
- //
3
- import Fa from 'svelte-fa/src/fa.svelte'
4
- import { faCog } from '@fortawesome/free-solid-svg-icons'
5
2
 
6
3
  import { onMount } from 'svelte';
7
-
4
+ import { get } from 'svelte/store';
8
5
  import { getMenuItems} from './MenuDataCaller';
6
+ import { menuStore } from '$store/pageStores';
9
7
 
10
- import type { Menu } from "./menu";
8
+ import type { MenuModel } from "$models/Page";
11
9
 
12
10
  import MenuBar from './MenuBar.svelte';
13
11
  import SettingsBar from './SettingsBar.svelte';
14
12
 
15
- let menu:Menu;
13
+ let menu:MenuModel;
16
14
 
15
+
17
16
  onMount(async () => {
18
17
 
19
- menu = await getMenuItems();
20
- console.log(menu);
21
-
18
+ menu = get(menuStore);
19
+ if(menu === undefined)
20
+ {
21
+ menu = await getMenuItems();
22
+ menuStore.set(menu);
23
+ //console.log("menu loaded",menu);
24
+ }
22
25
  })
23
26
 
24
27
 
@@ -28,7 +31,8 @@
28
31
 
29
32
  {#if menu}
30
33
 
31
- <div class="flex flex-row md:flex px-3 py-2">
34
+ <div class="flex flex-row md:flex px-3 py-2 bg-tertiary-50 text-surface-800 z-50 shadow-md">
35
+
32
36
  <div class="basis-8">
33
37
  {#if menu.Logo}
34
38
  <img src='data:{menu.Logo.Mime};charset=utf-8;base64, {menu.Logo.Data}' alt='{menu.Logo.Name}' style='height:40px;' />
@@ -37,16 +41,14 @@
37
41
 
38
42
 
39
43
  <div class="flex items-center md:space-x-5 px-3 text-lg justify-start">
40
-
41
44
  <MenuBar menuBar={menu.MenuBar} />
42
45
  <MenuBar menuBar={menu.Extended} />
43
46
  </div>
44
47
  <div class="flex-auto w-64 flex items-left md:space-x-3 justify-end">
45
- <MenuBar menuBar={menu.AccountBar} />
46
- <MenuBar menuBar={menu.LaunchBar} />
47
- <SettingsBar menuBar={menu.Settings} />
48
-
49
- </div>
48
+ <MenuBar menuBar={menu.AccountBar} />
49
+ <MenuBar menuBar={menu.LaunchBar} />
50
+ <SettingsBar menuBar={menu.Settings} />
51
+ </div>
50
52
 
51
53
  </div>
52
54
 
@@ -15,7 +15,7 @@
15
15
  let radomNumber = Math.floor(Math.random() * 100);
16
16
 
17
17
 
18
- console.log(menuBar);
18
+
19
19
  </script>
20
20
 
21
21
 
@@ -1,18 +1,24 @@
1
1
  <script lang="ts">
2
2
  import { popup } from '@skeletonlabs/skeleton';
3
- import { ListBox, ListBoxItem } from '@skeletonlabs/skeleton';
4
3
 
4
+ //uicomponents
5
+ import MenuSublist from './MenuSublist.svelte';
6
+
7
+ //types
5
8
  import type { PopupSettings } from '@skeletonlabs/skeleton';
6
- import type { MenuItem } from "./menu";
9
+ import type { MenuItem } from "$models/Page";
10
+
11
+ import { goTo } from '$services/BaseCaller';
12
+
7
13
 
8
14
  export let menubarItem:MenuItem;
9
15
  export let comboboxValue;
10
16
 
11
- let radomNumber = Math.floor(Math.random() * 100).toString();
17
+ let id = Math.floor(Math.random() * 100).toString();
12
18
 
13
19
  let popupCombobox: PopupSettings = {
14
20
  event: 'click',
15
- target: radomNumber,
21
+ target: id,
16
22
  placement: 'bottom',
17
23
  // Close the popup when the item is clicked
18
24
  closeQuery: '.listbox-item'
@@ -21,24 +27,18 @@ closeQuery: '.listbox-item'
21
27
  </script>
22
28
  {#if menubarItem.Items.length<1}
23
29
 
24
- <button class="flex items-center gap-x-1 text-xl font-semibold leading-6 text-gray-500" use:popup={popupCombobox}>
30
+ <button use:popup={popupCombobox} on:click={()=> goTo(menubarItem.Url)}>
25
31
  <span class="capitalize">{comboboxValue ?? menubarItem.Title}</span>
26
-
27
32
  </button>
28
33
 
29
34
  {:else}
30
- <button class="flex items-center gap-x-1 text-xl font-semibold leading-6 text-gray-00" use:popup={popupCombobox}>
35
+
36
+
37
+ <button class="flex items-center gap-x-1 " use:popup={popupCombobox}>
31
38
  <span class="capitalize">{menubarItem.Title}</span>
32
39
  <div class="before:content-['▾']"></div>
33
40
  </button>
34
- <div class="card w-48 shadow-xl py-2" data-popup={radomNumber}>
35
-
36
- <ListBox rounded="rounded-none">
37
- {#each menubarItem.Items as item}
38
41
 
39
- <ListBoxItem class="bg-white text-gray-900 py-1 text-sm" bind:group={item.Title} name="medium" value={item.Title}><a class="bg-white text-gray-900 py-1 text-sm" href={item.Url}>{item.Title}</a></ListBoxItem>
40
- {/each}
41
- </ListBox>
42
- </div>
42
+ <MenuSublist {id} items={menubarItem.Items} />
43
43
 
44
44
  {/if}
@@ -0,0 +1,48 @@
1
+ <script lang="ts">
2
+ import { ListBox, ListBoxItem } from '@skeletonlabs/skeleton';
3
+ import type { MenuItem } from "./menu";
4
+ import { goTo } from '$services/BaseCaller';
5
+
6
+ export let id;
7
+ export let items:MenuItem[];
8
+
9
+
10
+ let lastModule = "";
11
+ let first = true;
12
+
13
+ // store last module
14
+ function isNewModule(module)
15
+ {
16
+ if(module === lastModule ){
17
+ return false;
18
+ }
19
+ else
20
+ {
21
+ lastModule = module;
22
+ if(first)
23
+ {
24
+ first = false;
25
+ return false;
26
+ }
27
+
28
+ return true;
29
+ }
30
+ }
31
+
32
+ </script>
33
+
34
+ <div class="z-50 w-max" data-popup={id}>
35
+ <ListBox class="bg-white border-solid border border-surface-500">
36
+ {#each items as item}
37
+ {#if isNewModule(item.Module) }<hr class="text-surface-800">{/if}
38
+ <ListBoxItem class="bg-white text-sm text-surface-800 py-1 hover:bg-surface-100 hover:text-secondary-500"
39
+ bind:group={item.Title}
40
+ name="medium"
41
+ value={item.Title}
42
+ on:click={()=> goTo(item.Url)}
43
+ >
44
+ {item.Title}
45
+ </ListBoxItem>
46
+ {/each}
47
+ </ListBox>
48
+ </div>
@@ -1,61 +1,40 @@
1
1
  <script lang="ts">
2
- import { popup } from '@skeletonlabs/skeleton';
3
- import { ListBox, ListBoxItem } from '@skeletonlabs/skeleton';
4
-
5
- import type { PopupSettings } from '@skeletonlabs/skeleton';
6
- import type { MenuItem } from "./menu";
7
- import Fa from 'svelte-fa/src/fa.svelte'
8
- import { faCog } from '@fortawesome/free-solid-svg-icons'
9
-
10
- export let menuBar:MenuItem [];
11
-
12
-
13
- let lastModule = "";
14
- let first = true;
15
-
16
- function isNewModule(module)
17
- {
18
- if(module === lastModule ){
19
- return false;
20
- }
21
- else
22
- {
23
- lastModule = module;
24
- if(first)
25
- {
26
- first = false;
27
- return false;
28
- }
29
-
30
- return true;
31
- }
32
- }
33
-
34
- let popupCombobox: PopupSettings = {
35
- event: 'click',
36
- target: 'popupCombobox',
37
- placement: 'bottom',
38
- // Close the popup when the item is clicked
39
- closeQuery: '.listbox-item'
40
- };
41
-
42
- </script>
43
-
44
- {#if menuBar}
45
- <button class="flex items-center gap-x-1 text-sm font-semibold leading-6 text-gray-900" use:popup={popupCombobox}>
46
- <span class="capitalize"><Fa icon={faCog} /></span>
47
-
48
- </button>
49
- <div class="card w-48 shadow-xl py-2" data-popup="popupCombobox">
50
- <ListBox rounded="rounded-none bg-white">
51
- {#each menuBar as menubarItem}
52
- {#if isNewModule(menubarItem.Module) }<hr class="bg-gray-900">{/if}
53
- <ListBoxItem class="bg-white text-gray-900 py-1" href="{menubarItem.Url}" bind:group={menubarItem.Title} name="medium" value={menubarItem.Title}><a href={menubarItem.Url}>{menubarItem.Title}</a></ListBoxItem>
54
-
55
-
56
-
57
- {/each}
58
- </ListBox>
59
- </div>
60
- {/if}
61
-
2
+ import { popup } from '@skeletonlabs/skeleton';
3
+ import { ListBox, ListBoxItem } from '@skeletonlabs/skeleton';
4
+
5
+ import type { PopupSettings } from '@skeletonlabs/skeleton';
6
+ import type { MenuItem } from "./menu";
7
+ import Fa from 'svelte-fa/src/fa.svelte'
8
+ import { faCog } from '@fortawesome/free-solid-svg-icons'
9
+
10
+ import { goTo } from '$services/BaseCaller';
11
+
12
+ export let menuBar:MenuItem [];
13
+ //uicomponents
14
+ import MenuSublist from './MenuSublist.svelte';
15
+
16
+
17
+
18
+
19
+ let popupCombobox: PopupSettings = {
20
+ event: 'click',
21
+ target: 'settings',
22
+ placement: 'bottom',
23
+ // Close the popup when the item is clicked
24
+ closeQuery: '.listbox-item'
25
+ };
26
+
27
+ </script>
28
+
29
+ {#if menuBar}
30
+ <button class="flex items-center gap-x-1 text-sm text-surface-800" use:popup={popupCombobox}>
31
+ <span class="capitalize"><Fa icon={faCog} /></span>
32
+
33
+ </button>
34
+
35
+ <MenuSublist id="settings" items={menuBar} />
36
+
37
+
38
+ {/if}
39
+
40
+
package/src/lib/index.ts CHANGED
@@ -48,20 +48,20 @@ export { ListView, TableView, Spinner, Page, Alert };
48
48
 
49
49
  //Api
50
50
  export { Api } from './services/Api.js';
51
- export { host, username, password, setApiConfig } from './stores/apistore.js';
51
+ export { host, username, password, setApiConfig } from './stores/apiStores.ts';
52
52
 
53
53
  //Type
54
54
  export type {
55
55
  user,
56
- Input,
57
- FileUploaderModel,
58
- Link,
59
- ListItem,
60
- KvP
61
- } from './models/Models.js';
56
+ inputType,
57
+ fileUploaderModel,
58
+ linkType,
59
+ listItemType,
60
+ keyValuePairType
61
+ } from './models/Models.ts';
62
62
 
63
63
  //enum
64
- export { Position } from './models/Enums';
64
+ export { positionType } from './models/Enums';
65
65
 
66
66
  // Table
67
67
  export { Table, TableFilter, columnFilter, searchFilter };
@@ -1,5 +1,5 @@
1
1
 
2
- export enum Position {
2
+ export enum positionType {
3
3
  start = "start",
4
4
  end = "end",
5
5
  center = "center"