@bexis2/bexis2-core-ui 0.4.96 → 0.4.98

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 (86) hide show
  1. package/README.md +104 -25
  2. package/dist/components/CodeEditor/CodeEditor.svelte +2 -2
  3. package/dist/components/Facets/ShowMore.svelte +4 -6
  4. package/dist/components/File/FileUploader.svelte +6 -3
  5. package/dist/components/Table/Table.svelte +26 -5
  6. package/dist/components/Table/TableContent.svelte +222 -22
  7. package/dist/components/Table/TablePaginationServer.svelte +27 -8
  8. package/dist/components/Table/clientDB.d.ts +22 -0
  9. package/dist/components/Table/clientDB.js +236 -0
  10. package/dist/components/Table/filter.js +5 -1
  11. package/dist/components/Table/tableWorker.d.ts +1 -0
  12. package/dist/components/Table/tableWorker.js +179 -0
  13. package/dist/components/Table/utils.d.ts +1 -2
  14. package/dist/components/Table/utils.js +45 -26
  15. package/dist/components/form/CheckboxKvPList.svelte +15 -15
  16. package/dist/components/form/CheckboxList.svelte +1 -1
  17. package/dist/components/form/DateInput.svelte +12 -1
  18. package/dist/components/form/DatePickerInput.svelte +51 -29
  19. package/dist/components/form/Dropdown.svelte +14 -3
  20. package/dist/components/form/DropdownKvP.svelte +13 -2
  21. package/dist/components/form/InputContainer.svelte +17 -15
  22. package/dist/components/form/MultiSelect.svelte +30 -29
  23. package/dist/components/form/NumberInput.svelte +12 -1
  24. package/dist/components/form/TextArea.svelte +12 -1
  25. package/dist/components/form/TextInput.svelte +12 -1
  26. package/dist/components/page/Alert.svelte +5 -1
  27. package/dist/components/page/BackToTop.svelte +3 -1
  28. package/dist/components/page/Docs.svelte +9 -2
  29. package/dist/components/page/GoToTop.svelte +14 -15
  30. package/dist/components/page/Page.svelte +50 -56
  31. package/dist/components/page/breadcrumb/BreadcrumbDataCaller.js +11 -15
  32. package/dist/components/page/menu/MenuAccountBar.svelte +1 -5
  33. package/dist/components/page/menu/MenuDataCaller.js +1 -1
  34. package/dist/components/page/menu/MenuItem.svelte +9 -7
  35. package/dist/components/page/menu/MenuSublist.svelte +7 -5
  36. package/dist/components/page/menu/SettingsBar.svelte +4 -1
  37. package/dist/components/toggle/Toggle.svelte +9 -9
  38. package/dist/css/core.ui.postcss +1 -2
  39. package/dist/services/Api.js +4 -4
  40. package/dist/services/BaseCaller.js +1 -1
  41. package/package.json +114 -114
  42. package/src/lib/components/CodeEditor/CodeEditor.svelte +4 -4
  43. package/src/lib/components/Facets/Facets.svelte +2 -2
  44. package/src/lib/components/Facets/ShowMore.svelte +4 -6
  45. package/src/lib/components/File/FileUploader.svelte +17 -14
  46. package/src/lib/components/Table/Table.svelte +31 -10
  47. package/src/lib/components/Table/TableContent.svelte +258 -33
  48. package/src/lib/components/Table/TableFilter.svelte +7 -2
  49. package/src/lib/components/Table/TablePagination.svelte +6 -2
  50. package/src/lib/components/Table/TablePaginationServer.svelte +36 -10
  51. package/src/lib/components/Table/clientDB.js +236 -0
  52. package/src/lib/components/Table/filter.ts +27 -23
  53. package/src/lib/components/Table/tableWorker.js +179 -0
  54. package/src/lib/components/Table/utils.ts +75 -56
  55. package/src/lib/components/form/Checkbox.svelte +1 -1
  56. package/src/lib/components/form/CheckboxKvPList.svelte +15 -16
  57. package/src/lib/components/form/CheckboxList.svelte +1 -1
  58. package/src/lib/components/form/DateInput.svelte +13 -2
  59. package/src/lib/components/form/DatePickerInput.svelte +51 -29
  60. package/src/lib/components/form/Dropdown.svelte +14 -3
  61. package/src/lib/components/form/DropdownKvP.svelte +13 -2
  62. package/src/lib/components/form/InputContainer.svelte +18 -17
  63. package/src/lib/components/form/MultiSelect.svelte +30 -29
  64. package/src/lib/components/form/NumberInput.svelte +21 -12
  65. package/src/lib/components/form/TextArea.svelte +13 -2
  66. package/src/lib/components/form/TextInput.svelte +13 -2
  67. package/src/lib/components/page/Alert.svelte +5 -1
  68. package/src/lib/components/page/BackToTop.svelte +3 -1
  69. package/src/lib/components/page/Docs.svelte +9 -2
  70. package/src/lib/components/page/GoToTop.svelte +14 -15
  71. package/src/lib/components/page/Notification.svelte +1 -1
  72. package/src/lib/components/page/Page.svelte +67 -78
  73. package/src/lib/components/page/breadcrumb/Breadcrumb.svelte +2 -3
  74. package/src/lib/components/page/breadcrumb/BreadcrumbDataCaller.js +11 -15
  75. package/src/lib/components/page/menu/MenuAccountBar.svelte +1 -6
  76. package/src/lib/components/page/menu/MenuDataCaller.js +1 -1
  77. package/src/lib/components/page/menu/MenuItem.svelte +10 -8
  78. package/src/lib/components/page/menu/MenuSublist.svelte +35 -41
  79. package/src/lib/components/page/menu/SettingsBar.svelte +5 -2
  80. package/src/lib/components/toggle/Toggle.svelte +28 -30
  81. package/src/lib/css/core.ui.postcss +1 -2
  82. package/src/lib/index.ts +1 -2
  83. package/src/lib/services/Api.ts +21 -20
  84. package/src/lib/services/BaseCaller.js +1 -1
  85. package/src/lib/stores/apiStores.ts +1 -5
  86. package/src/lib/stores/pageStores.ts +0 -2
package/package.json CHANGED
@@ -1,116 +1,116 @@
1
1
  {
2
- "name": "@bexis2/bexis2-core-ui",
3
- "version": "0.4.96",
4
- "private": false,
5
- "description": "Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/master/packages/create-svelte).",
6
- "keywords": [
7
- "bexis2",
8
- "libary"
9
- ],
10
- "homepage": "https://github.com/BEXIS2/bexis2-core-ui#readme",
11
- "bugs": {
12
- "url": "https://github.com/BEXIS2/bexis2-core-ui/issues"
13
- },
14
- "repository": {
15
- "type": "git",
16
- "url": "git+https://github.com/BEXIS2/bexis2-core-ui.git"
17
- },
18
- "license": "ISC",
19
- "author": "David Schöne",
20
- "type": "module",
21
- "exports": {
22
- ".": {
23
- "types": "./dist/index.d.ts",
24
- "svelte": "./dist/index.js"
25
- },
26
- "./dist/index.css": {
27
- "import": "./dist/index.css",
28
- "require": "./dist/index.css"
29
- }
30
- },
31
- "main": "./src/lib/index.d.ts",
32
- "types": "./src/lib/index.d.ts",
33
- "directories": {
34
- "test": "tests"
35
- },
36
- "files": [
37
- "dist",
38
- "src/lib"
39
- ],
40
- "scripts": {
41
- "dev": "vite dev",
42
- "build": "vite build",
43
- "build package": "svelte-kit sync && svelte-package --watch",
44
- "preview": "vite preview",
45
- "test": "playwright test",
46
- "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
47
- "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
48
- "test:unit": "vitest",
49
- "lint": "prettier --plugin-search-dir . --check . && eslint .",
50
- "format": "prettier --plugin-search-dir . --write .",
51
- "check outdated": "npm outdated",
52
- "upgrade all": "ncu --upgrade",
53
- "0.npm login": "npm login",
54
- "1.npm - update package infos": "npm init --scope bexis2",
55
- "2.npm - package": "svelte-package",
56
- "3.npm - publish": "npm publish --access public"
57
- },
58
- "dependencies": {
59
- "@codemirror/lang-html": "^6.4.9",
60
- "@codemirror/lang-javascript": "^6.2.2",
61
- "@codemirror/lang-json": "^6.0.1",
62
- "@codemirror/lint": "^6.8.1",
63
- "@codemirror/theme-one-dark": "^6.1.2",
64
- "@floating-ui/dom": "^1.6.8",
65
- "@fortawesome/fontawesome-free": "^6.6.0",
66
- "@fortawesome/fontawesome-svg-core": "^6.6.0",
67
- "@fortawesome/free-regular-svg-icons": "^6.6.0",
68
- "@fortawesome/free-solid-svg-icons": "^6.6.0",
69
- "@sveltejs/kit": "^2.5.19",
70
- "@sveltejs/vite-plugin-svelte": "^3.1.1",
71
- "axios": "^1.7.3",
72
- "codemirror": "^6.0.1",
73
- "dateformat": "^5.0.3",
74
- "delay": "^6.0.0",
75
- "dotenv": "^16.4.5",
76
- "eslint4b-prebuilt": "^6.7.2",
77
- "highlight.js": "^11.10.0",
78
- "highlightjs-svelte": "^1.0.6",
79
- "svelte": "^4.2.18",
80
- "svelte-codemirror-editor": "^1.4.0",
81
- "svelte-fa": "^4.0.2",
82
- "svelte-file-dropzone": "^2.0.7",
83
- "svelte-headless-table": "^0.18.2",
84
- "svelty-picker": "^5.2.12",
85
- "svelte-select": "5.8.3",
86
- "vest": "^5.4.0"
87
- },
88
- "devDependencies": {
89
- "@playwright/test": "^1.45.3",
90
- "@skeletonlabs/skeleton": "^2.10.2",
91
- "@skeletonlabs/tw-plugin": "^0.4.0",
92
- "@sveltejs/adapter-auto": "^3.2.2",
93
- "@sveltejs/adapter-static": "^3.0.2",
94
- "@sveltejs/package": "^2.3.2",
95
- "@tailwindcss/forms": "^0.5.7",
96
- "@tailwindcss/typography": "^0.5.13",
97
- "@types/node": "^22.0.2",
98
- "@typescript-eslint/eslint-plugin": "^8.0.0",
99
- "@typescript-eslint/parser": "^8.0.0",
100
- "autoprefixer": "^10.4.19",
101
- "eslint": "^9.8.0",
102
- "eslint-config-prettier": "^9.1.0",
103
- "postcss": "^8.4.40",
104
- "prettier": "^3.3.3",
105
- "prettier-plugin-svelte": "^3.2.6",
106
- "raw-loader": "^4.0.2",
107
- "svelte": "^4.2.18",
108
- "svelte-check": "^3.8.5",
109
- "tailwindcss": "^3.4.7",
110
- "tslib": "^2.6.3",
111
- "typescript": "^5.5.4",
112
- "vite": "^5.3.5",
113
- "vitest": "^2.0.5"
114
- },
115
- "module": "./src/lib/index.ts"
2
+ "name": "@bexis2/bexis2-core-ui",
3
+ "version": "0.4.98",
4
+ "private": false,
5
+ "description": "Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/master/packages/create-svelte).",
6
+ "keywords": [
7
+ "bexis2",
8
+ "libary"
9
+ ],
10
+ "homepage": "https://github.com/BEXIS2/bexis2-core-ui#readme",
11
+ "bugs": {
12
+ "url": "https://github.com/BEXIS2/bexis2-core-ui/issues"
13
+ },
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git+https://github.com/BEXIS2/bexis2-core-ui.git"
17
+ },
18
+ "license": "ISC",
19
+ "author": "David Schöne",
20
+ "type": "module",
21
+ "exports": {
22
+ ".": {
23
+ "types": "./dist/index.d.ts",
24
+ "svelte": "./dist/index.js"
25
+ },
26
+ "./dist/index.css": {
27
+ "import": "./dist/index.css",
28
+ "require": "./dist/index.css"
29
+ }
30
+ },
31
+ "main": "./src/lib/index.d.ts",
32
+ "types": "./src/lib/index.d.ts",
33
+ "directories": {
34
+ "test": "tests"
35
+ },
36
+ "files": [
37
+ "dist",
38
+ "src/lib"
39
+ ],
40
+ "scripts": {
41
+ "dev": "vite dev",
42
+ "build": "vite build",
43
+ "build package": "svelte-kit sync && svelte-package --watch",
44
+ "preview": "vite preview",
45
+ "test": "playwright test",
46
+ "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
47
+ "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
48
+ "test:unit": "vitest",
49
+ "lint": "prettier --plugin-search-dir . --check . && eslint .",
50
+ "format": "prettier --plugin-search-dir . --write .",
51
+ "check outdated": "npm outdated",
52
+ "upgrade all": "ncu --upgrade",
53
+ "0.npm login": "npm login",
54
+ "1.npm - update package infos": "npm init --scope bexis2",
55
+ "2.npm - package": "svelte-package",
56
+ "3.npm - publish": "npm publish --access public"
57
+ },
58
+ "dependencies": {
59
+ "@codemirror/lang-html": "^6.4.9",
60
+ "@codemirror/lang-javascript": "^6.2.2",
61
+ "@codemirror/lang-json": "^6.0.1",
62
+ "@codemirror/lint": "^6.8.1",
63
+ "@codemirror/theme-one-dark": "^6.1.2",
64
+ "@floating-ui/dom": "^1.6.8",
65
+ "@fortawesome/fontawesome-free": "^6.6.0",
66
+ "@fortawesome/fontawesome-svg-core": "^6.6.0",
67
+ "@fortawesome/free-regular-svg-icons": "^6.6.0",
68
+ "@fortawesome/free-solid-svg-icons": "^6.6.0",
69
+ "@sveltejs/kit": "^2.5.19",
70
+ "@sveltejs/vite-plugin-svelte": "^3.1.1",
71
+ "axios": "^1.7.3",
72
+ "codemirror": "^6.0.1",
73
+ "dateformat": "^5.0.3",
74
+ "delay": "^6.0.0",
75
+ "dotenv": "^16.4.5",
76
+ "eslint4b-prebuilt": "^6.7.2",
77
+ "highlight.js": "^11.10.0",
78
+ "highlightjs-svelte": "^1.0.6",
79
+ "svelte": "^4.2.18",
80
+ "svelte-codemirror-editor": "^1.4.0",
81
+ "svelte-fa": "^4.0.2",
82
+ "svelte-file-dropzone": "^2.0.7",
83
+ "svelte-headless-table": "^0.18.2",
84
+ "svelty-picker": "^5.2.12",
85
+ "svelte-select": "5.8.3",
86
+ "vest": "^5.4.0"
87
+ },
88
+ "devDependencies": {
89
+ "@playwright/test": "^1.45.3",
90
+ "@skeletonlabs/skeleton": "^2.10.2",
91
+ "@skeletonlabs/tw-plugin": "^0.4.0",
92
+ "@sveltejs/adapter-auto": "^3.2.2",
93
+ "@sveltejs/adapter-static": "^3.0.2",
94
+ "@sveltejs/package": "^2.3.2",
95
+ "@tailwindcss/forms": "^0.5.7",
96
+ "@tailwindcss/typography": "^0.5.13",
97
+ "@types/node": "^22.0.2",
98
+ "@typescript-eslint/eslint-plugin": "^8.0.0",
99
+ "@typescript-eslint/parser": "^8.0.0",
100
+ "autoprefixer": "^10.4.19",
101
+ "eslint": "^9.8.0",
102
+ "eslint-config-prettier": "^9.1.0",
103
+ "postcss": "^8.4.40",
104
+ "prettier": "^3.3.3",
105
+ "prettier-plugin-svelte": "^3.2.6",
106
+ "raw-loader": "^4.0.2",
107
+ "svelte": "^4.2.18",
108
+ "svelte-check": "^3.8.5",
109
+ "tailwindcss": "^3.4.7",
110
+ "tslib": "^2.6.3",
111
+ "typescript": "^5.5.4",
112
+ "vite": "^5.3.5",
113
+ "vitest": "^2.0.5"
114
+ },
115
+ "module": "./src/lib/index.ts"
116
116
  }
@@ -49,8 +49,8 @@
49
49
  language === 'js'
50
50
  ? [linter(esLint(new Linter())), lintGutter()]
51
51
  : language === 'json'
52
- ? [linter(jsonParseLinter()), lintGutter()]
53
- : [];
52
+ ? [linter(jsonParseLinter()), lintGutter()]
53
+ : [];
54
54
 
55
55
  const isValidJSON = (str: string) => {
56
56
  try {
@@ -86,8 +86,8 @@
86
86
  lang={language === 'html'
87
87
  ? html({ selfClosingTags: true })
88
88
  : language === 'js'
89
- ? javascript()
90
- : json()}
89
+ ? javascript()
90
+ : json()}
91
91
  theme={dark ? oneDark : null}
92
92
  class="flex w-full"
93
93
  {styles}
@@ -178,8 +178,8 @@
178
178
  });
179
179
 
180
180
  $: displayedGroups = structuredClone($groups);
181
- $: selectedItems, mapSelected('items'), sortOptions();
182
- $: selectedGroups, mapSelected('groups');
181
+ $: (selectedItems, mapSelected('items'), sortOptions());
182
+ $: (selectedGroups, mapSelected('groups'));
183
183
  </script>
184
184
 
185
185
  <TreeView selection={groupSelection} multiple={groupSelection} padding="p-1" hover="">
@@ -40,15 +40,13 @@
40
40
  <h2 class="text-xl font-semibold">{group.displayName}</h2>
41
41
 
42
42
  <!-- Items -->
43
- <div class="gap-x-10 space-y-2 py-6 px-[2px] max-h-[500px] columns-[192px] overflow-auto min-h">
43
+ <div
44
+ class="gap-x-10 space-y-2 py-6 px-[2px] max-h-[500px] columns-[192px] overflow-auto min-h"
45
+ >
44
46
  {#each Object.keys(selected) as key}
45
47
  <label class="flex gap-3 items-center">
46
48
  <input type="checkbox" class="checkbox" bind:checked={selected[key].selected} />
47
- <span
48
- title={selected[key].displayName}
49
- class=""
50
- >{selected[key].displayName}</span
51
- >
49
+ <span title={selected[key].displayName} class="">{selected[key].displayName}</span>
52
50
  </label>
53
51
  {/each}
54
52
  </div>
@@ -35,7 +35,7 @@
35
35
 
36
36
  export let data: fileUploaderType | undefined;
37
37
 
38
- let isUploading:boolean = false;
38
+ let isUploading: boolean = false;
39
39
 
40
40
  $: model = data;
41
41
  $: submitBt = 'submit';
@@ -148,9 +148,10 @@
148
148
  const response = await Api.post(url, formData);
149
149
 
150
150
  if (response.status == 200) {
151
- dispatch('submited',{
152
- status:200,
153
- data:response.data});
151
+ dispatch('submited', {
152
+ status: 200,
153
+ data: response.data
154
+ });
154
155
 
155
156
  let message = files.accepted.length + ' is/are uploaded';
156
157
 
@@ -160,13 +161,12 @@
160
161
  dispatch('success', { text: message, files: fileList });
161
162
 
162
163
  files.accepted = [];
163
- }
164
- else
165
- {
166
- dispatch('submiterror', {
167
- status:response.status,
168
- data:response.data});
169
- console.log('Error uploading file(s)', response);
164
+ } else {
165
+ dispatch('submiterror', {
166
+ status: response.status,
167
+ data: response.data
168
+ });
169
+ console.log('Error uploading file(s)', response);
170
170
  }
171
171
  }
172
172
 
@@ -192,17 +192,20 @@
192
192
  <p>
193
193
  {#if model.accept}
194
194
  {#each model.accept as ext, i}
195
- {ext}{#if i < model.accept.length - 1}, {/if}
195
+ {ext}{#if i < model.accept.length - 1},
196
+ {/if}
196
197
  {/each}
197
198
  {/if}
198
199
  </p>
199
200
  </Dropzone>
200
201
  {#if isUploading}
201
- <ProgressBar value={undefined}/>
202
+ <ProgressBar value={undefined} />
202
203
  {/if}
203
204
  </div>
204
205
 
205
- <button title="Submit" id={submitBt} color="primary" style="display:none"><Fa icon={faSave} /></button>
206
+ <button title="Submit" id={submitBt} color="primary" style="display:none"
207
+ ><Fa icon={faSave} /></button
208
+ >
206
209
  {:else}
207
210
  <!-- while data is not loaded show a loading information -->
208
211
 
@@ -3,23 +3,44 @@
3
3
  import type { TableConfig } from '$models/Models';
4
4
 
5
5
  export let config: TableConfig<any>;
6
+ let remountKey = 0;
7
+ let didInitialColumnsRemount = false;
6
8
 
7
- let fetched = false;
8
- const data = config.data;
9
+ const normalizeColumns = (cols: unknown) => {
10
+ if (!cols || typeof cols !== 'object') return '';
11
+ const c = cols as Record<string, unknown>;
12
+ const keys = Object.keys(c).sort();
13
+ return JSON.stringify(keys.map((k) => [k, c[k]]));
14
+ };
9
15
 
10
- $: if ($data.length > 0) fetched = true;
16
+ const onFetch = (event) => {
17
+ const payload = event.detail;
18
+ const nextColumns = payload?.columns ?? payload;
19
+ const nextCount = Number(payload?.count ?? 0);
20
+ const before = normalizeColumns((config as any)?.columns);
21
+ const after = normalizeColumns(nextColumns);
22
+ config = {
23
+ ...config,
24
+ columns: nextColumns,
25
+ ...(nextCount > 0 ? { __initialServerCount: nextCount } : {})
26
+ };
27
+ if (!didInitialColumnsRemount && before === '' && after !== '') {
28
+ remountKey += 1;
29
+ didInitialColumnsRemount = true;
30
+ }
31
+ };
11
32
 
12
- if (typeof BigInt !== "undefined" && !BigInt.prototype.toJSON) {
13
- BigInt.prototype.toJSON = function () {
14
- return this.toString();
15
- };
16
- }
33
+ if (typeof BigInt !== 'undefined' && !BigInt.prototype.toJSON) {
34
+ BigInt.prototype.toJSON = function () {
35
+ return this.toString();
36
+ };
37
+ }
17
38
  </script>
18
39
 
19
- {#key fetched}
40
+ {#key remountKey}
20
41
  <Table
21
42
  {config}
22
- on:fetch={(columns) => (config = { ...config, columns: columns.detail })}
43
+ on:fetch={onFetch}
23
44
  on:action
24
45
  />
25
46
  {/key}