@bexis2/bexis2-core-ui 0.2.11 → 0.2.13

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 (88) hide show
  1. package/README.md +273 -214
  2. package/dist/components/Table/Table.svelte +85 -85
  3. package/dist/components/Table/TableFilter.svelte +8 -8
  4. package/dist/components/Table/TablePagination.svelte +38 -38
  5. package/dist/components/file/FileUploader.svelte +34 -34
  6. package/dist/components/form/Checkbox.svelte.d.ts +1 -1
  7. package/dist/components/form/DropdownKvP.svelte +5 -11
  8. package/dist/components/form/InputContainer.svelte +20 -19
  9. package/dist/components/form/MultiSelect.svelte +163 -178
  10. package/dist/components/form/TextArea.svelte +13 -13
  11. package/dist/components/form/TextInput.svelte +0 -2
  12. package/dist/components/page/Alert.svelte +28 -30
  13. package/dist/components/page/BackToTop.svelte +30 -30
  14. package/dist/components/page/Docs.svelte +22 -19
  15. package/dist/components/page/Docs.svelte.d.ts +1 -1
  16. package/dist/components/page/ErrorMessage.svelte +8 -8
  17. package/dist/components/page/Footer.svelte +5 -5
  18. package/dist/components/page/Header.svelte +5 -4
  19. package/dist/components/page/HelpPopUp.svelte +31 -25
  20. package/dist/components/page/HelpPopUp.svelte.d.ts +5 -12
  21. package/dist/components/page/Page.svelte +57 -67
  22. package/dist/components/page/Page.svelte.d.ts +2 -2
  23. package/dist/components/page/PageCaller.js +19 -21
  24. package/dist/components/page/Spinner.svelte +9 -10
  25. package/dist/components/page/Spinner.svelte.d.ts +1 -1
  26. package/dist/components/page/breadcrumb/Breadcrumb.svelte +19 -23
  27. package/dist/components/page/menu/Menu.svelte +48 -22
  28. package/dist/components/page/menu/MenuBar.svelte +8 -14
  29. package/dist/components/page/menu/MenuBar.svelte.d.ts +1 -1
  30. package/dist/components/page/menu/MenuDataCaller.js +10 -11
  31. package/dist/components/page/menu/MenuItem.svelte +28 -15
  32. package/dist/components/page/menu/MenuItem.svelte.d.ts +2 -1
  33. package/dist/components/page/menu/MenuSublist.svelte +14 -16
  34. package/dist/components/page/menu/MenuSublist.svelte.d.ts +2 -3
  35. package/dist/components/page/menu/SettingsBar.svelte +22 -14
  36. package/dist/components/page/menu/SettingsBar.svelte.d.ts +2 -2
  37. package/dist/css/core.ui.postcss +10 -7
  38. package/dist/css/themes/theme-bexis2.css +12 -13
  39. package/dist/index.d.ts +3 -5
  40. package/dist/index.js +5 -5
  41. package/dist/models/Enums.d.ts +18 -0
  42. package/dist/models/Enums.js +22 -0
  43. package/dist/models/Models.d.ts +18 -0
  44. package/dist/models/Models.js +1 -2
  45. package/dist/models/Page.d.ts +31 -0
  46. package/dist/services/BaseCaller.js +16 -21
  47. package/dist/stores/pageStores.d.ts +4 -4
  48. package/dist/stores/pageStores.js +27 -27
  49. package/package.json +2 -2
  50. package/src/lib/components/Table/Table.svelte +246 -246
  51. package/src/lib/components/Table/TableFilter.svelte +8 -8
  52. package/src/lib/components/Table/TablePagination.svelte +61 -61
  53. package/src/lib/components/Table/filter.ts +141 -141
  54. package/src/lib/components/file/FileUploader.svelte +184 -184
  55. package/src/lib/components/form/Checkbox.svelte +1 -1
  56. package/src/lib/components/form/DateInput.svelte +0 -1
  57. package/src/lib/components/form/DropdownKvP.svelte +5 -11
  58. package/src/lib/components/form/InputContainer.svelte +36 -44
  59. package/src/lib/components/form/MultiSelect.svelte +163 -178
  60. package/src/lib/components/form/NumberInput.svelte +3 -5
  61. package/src/lib/components/form/TextArea.svelte +26 -27
  62. package/src/lib/components/form/TextInput.svelte +2 -5
  63. package/src/lib/components/page/Alert.svelte +41 -45
  64. package/src/lib/components/page/BackToTop.svelte +30 -30
  65. package/src/lib/components/page/Docs.svelte +46 -44
  66. package/src/lib/components/page/ErrorMessage.svelte +10 -12
  67. package/src/lib/components/page/Footer.svelte +18 -22
  68. package/src/lib/components/page/Header.svelte +18 -21
  69. package/src/lib/components/page/HelpPopUp.svelte +72 -66
  70. package/src/lib/components/page/Page.svelte +96 -109
  71. package/src/lib/components/page/PageCaller.js +19 -21
  72. package/src/lib/components/page/Spinner.svelte +13 -15
  73. package/src/lib/components/page/breadcrumb/Breadcrumb.svelte +31 -43
  74. package/src/lib/components/page/menu/Menu.svelte +61 -43
  75. package/src/lib/components/page/menu/MenuBar.svelte +18 -29
  76. package/src/lib/components/page/menu/MenuDataCaller.js +10 -11
  77. package/src/lib/components/page/menu/MenuItem.svelte +45 -34
  78. package/src/lib/components/page/menu/MenuSublist.svelte +33 -41
  79. package/src/lib/components/page/menu/SettingsBar.svelte +39 -37
  80. package/src/lib/css/core.ui.postcss +10 -7
  81. package/src/lib/css/themes/theme-bexis2.css +12 -13
  82. package/src/lib/index.ts +78 -77
  83. package/src/lib/models/Enums.ts +32 -11
  84. package/src/lib/models/Models.ts +136 -113
  85. package/src/lib/models/Page.ts +40 -41
  86. package/src/lib/services/BaseCaller.js +16 -21
  87. package/src/lib/stores/apiStores.ts +31 -32
  88. package/src/lib/stores/pageStores.ts +121 -126
@@ -1,61 +1,61 @@
1
- <script lang="ts">
2
- import Fa from 'svelte-fa/src/fa.svelte';
3
- import {
4
- faAnglesRight,
5
- faAngleRight,
6
- faAnglesLeft,
7
- faAngleLeft
8
- } from '@fortawesome/free-solid-svg-icons';
9
-
10
- export let pageConfig;
11
- export let pageSizes;
12
-
13
- const { pageIndex, pageCount, pageSize, hasNextPage, hasPreviousPage } = pageConfig;
14
-
15
- const goToFirstPage = () => ($pageIndex = 0);
16
- const goToLastPage = () => ($pageIndex = $pageCount - 1);
17
- const goToNextPage = () => ($pageIndex += 1);
18
- const goToPreviousPage = () => ($pageIndex -= 1);
19
-
20
- $: goToFirstPageDisabled = !$pageIndex;
21
- $: goToLastPageDisabled = $pageIndex == $pageCount - 1;
22
- $: goToNextPageDisabled = !$hasNextPage;
23
- $: goToPreviousPageDisabled = !$hasPreviousPage;
24
- </script>
25
-
26
- <div class="flex justify-center gap-1">
27
- <button
28
- class="btn btn-sm variant-filled-primary"
29
- on:click|preventDefault={goToFirstPage}
30
- disabled={goToFirstPageDisabled}
31
- >
32
- <Fa icon={faAnglesLeft} /></button
33
- >
34
- <button
35
- class="btn btn-sm variant-filled-primary"
36
- on:click|preventDefault={goToPreviousPage}
37
- disabled={goToPreviousPageDisabled}><Fa icon={faAngleLeft} /></button
38
- >
39
-
40
- <select
41
- name="pageSize"
42
- id="pageSize"
43
- class="select variant-filled-primary w-min font-bold"
44
- bind:value={$pageSize}
45
- >
46
- {#each pageSizes as size}
47
- <option value={size}>{size}</option>
48
- {/each}
49
- </select>
50
-
51
- <button
52
- class="btn btn-sm variant-filled-primary"
53
- on:click|preventDefault={goToNextPage}
54
- disabled={goToNextPageDisabled}><Fa icon={faAngleRight} /></button
55
- >
56
- <button
57
- class="btn btn-sm variant-filled-primary"
58
- on:click|preventDefault={goToLastPage}
59
- disabled={goToLastPageDisabled}><Fa icon={faAnglesRight} /></button
60
- >
61
- </div>
1
+ <script lang="ts">
2
+ import Fa from 'svelte-fa/src/fa.svelte';
3
+ import {
4
+ faAnglesRight,
5
+ faAngleRight,
6
+ faAnglesLeft,
7
+ faAngleLeft
8
+ } from '@fortawesome/free-solid-svg-icons';
9
+
10
+ export let pageConfig;
11
+ export let pageSizes;
12
+
13
+ const { pageIndex, pageCount, pageSize, hasNextPage, hasPreviousPage } = pageConfig;
14
+
15
+ const goToFirstPage = () => ($pageIndex = 0);
16
+ const goToLastPage = () => ($pageIndex = $pageCount - 1);
17
+ const goToNextPage = () => ($pageIndex += 1);
18
+ const goToPreviousPage = () => ($pageIndex -= 1);
19
+
20
+ $: goToFirstPageDisabled = !$pageIndex;
21
+ $: goToLastPageDisabled = $pageIndex == $pageCount - 1;
22
+ $: goToNextPageDisabled = !$hasNextPage;
23
+ $: goToPreviousPageDisabled = !$hasPreviousPage;
24
+ </script>
25
+
26
+ <div class="flex justify-center gap-1">
27
+ <button
28
+ class="btn btn-sm variant-filled-primary"
29
+ on:click|preventDefault={goToFirstPage}
30
+ disabled={goToFirstPageDisabled}
31
+ >
32
+ <Fa icon={faAnglesLeft} /></button
33
+ >
34
+ <button
35
+ class="btn btn-sm variant-filled-primary"
36
+ on:click|preventDefault={goToPreviousPage}
37
+ disabled={goToPreviousPageDisabled}><Fa icon={faAngleLeft} /></button
38
+ >
39
+
40
+ <select
41
+ name="pageSize"
42
+ id="pageSize"
43
+ class="select variant-filled-primary w-min font-bold"
44
+ bind:value={$pageSize}
45
+ >
46
+ {#each pageSizes as size}
47
+ <option value={size}>{size}</option>
48
+ {/each}
49
+ </select>
50
+
51
+ <button
52
+ class="btn btn-sm variant-filled-primary"
53
+ on:click|preventDefault={goToNextPage}
54
+ disabled={goToNextPageDisabled}><Fa icon={faAngleRight} /></button
55
+ >
56
+ <button
57
+ class="btn btn-sm variant-filled-primary"
58
+ on:click|preventDefault={goToLastPage}
59
+ disabled={goToLastPageDisabled}><Fa icon={faAnglesRight} /></button
60
+ >
61
+ </div>
@@ -1,141 +1,141 @@
1
- import type { ColumnFilterFn } from 'svelte-headless-table/lib/plugins';
2
- import type { TableFilterFn } from 'svelte-headless-table/lib/plugins/addTableFilter';
3
-
4
- const textFilter = (filterOption, filterValue, value) => {
5
- switch (filterOption) {
6
- case 'isequal':
7
- return value.toLowerCase() === filterValue.toLowerCase();
8
- case 'isnotequal':
9
- return value.toLowerCase() !== filterValue.toLowerCase();
10
- case 'starts':
11
- return value.toLowerCase().startsWith(filterValue.toLowerCase());
12
- case 'ends':
13
- return value.toLowerCase().endsWith(filterValue.toLowerCase());
14
- case 'contains':
15
- return value.toLowerCase().includes(filterValue.toLowerCase());
16
- case 'notcontains':
17
- return !value.toLowerCase().includes(filterValue.toLowerCase());
18
- default:
19
- return false;
20
- }
21
- };
22
-
23
- const numberFilter = (filterOption, filterValue, value) => {
24
- switch (filterOption) {
25
- case 'isequal':
26
- return value === filterValue;
27
- case 'isnotequal':
28
- return value !== filterValue;
29
- case 'isgreater':
30
- return value > filterValue;
31
- case 'isless':
32
- return value < filterValue;
33
- case 'isgreaterorequal':
34
- return value >= filterValue;
35
- case 'islessorequal':
36
- return value <= filterValue;
37
- default:
38
- return false;
39
- }
40
- };
41
-
42
- const dateFilter = (filterOption, filterValue, value) => {
43
- const filter = new Date(filterValue);
44
-
45
- switch (filterOption) {
46
- case 'ison':
47
- return value === filter;
48
- case 'isstartingfrom':
49
- return value >= filter;
50
- case 'isafter':
51
- return value > filter;
52
- case 'isuntil':
53
- return value <= filter;
54
- case 'isbefore':
55
- return value < filter;
56
- case 'isnoton':
57
- return value !== filter;
58
- default:
59
- return false;
60
- }
61
- };
62
-
63
- const numericFilter: ColumnFilterFn = ({ filterValue, value }) => {
64
- const [firstFilterOption, firstFilterValue, secondFilterOption, secondFilterValue] = filterValue;
65
- if (firstFilterValue == null && secondFilterValue == null) {
66
- return true;
67
- } else if (
68
- (firstFilterOption == null || firstFilterValue == null) &&
69
- secondFilterOption != null &&
70
- secondFilterValue != null
71
- ) {
72
- return numberFilter(secondFilterOption, secondFilterValue, value);
73
- } else if (
74
- (secondFilterOption == null || secondFilterValue == null) &&
75
- firstFilterOption != null &&
76
- firstFilterValue != null
77
- ) {
78
- return numberFilter(firstFilterOption, firstFilterValue, value);
79
- }
80
- return (
81
- numberFilter(firstFilterOption, firstFilterValue, value) &&
82
- numberFilter(secondFilterOption, secondFilterValue, value)
83
- );
84
- };
85
-
86
- const stringFilter: ColumnFilterFn = ({ filterValue, value }) => {
87
- const [firstFilterOption, firstFilterValue, secondFilterOption, secondFilterValue] = filterValue;
88
- if (!firstFilterValue?.length && !secondFilterValue?.length) {
89
- return true;
90
- } else if (
91
- (!firstFilterOption || !firstFilterValue) &&
92
- secondFilterOption &&
93
- secondFilterValue?.length
94
- ) {
95
- return textFilter(secondFilterOption, secondFilterValue, value);
96
- } else if (
97
- (!secondFilterOption || !secondFilterValue?.length) &&
98
- firstFilterOption &&
99
- firstFilterValue?.length
100
- ) {
101
- return textFilter(firstFilterOption, firstFilterValue, value);
102
- }
103
- return (
104
- textFilter(firstFilterOption, firstFilterValue, value) &&
105
- textFilter(secondFilterOption, secondFilterValue, value)
106
- );
107
- };
108
-
109
- const dateTypeFilter: ColumnFilterFn = ({ filterValue, value }) => {
110
- const [firstFilterOption, firstFilterValue, secondFilterOption, secondFilterValue] = filterValue;
111
- if (!firstFilterValue && !secondFilterValue) {
112
- return true;
113
- } else if ((!firstFilterOption || !firstFilterValue) && secondFilterOption && secondFilterValue) {
114
- return dateFilter(secondFilterOption, secondFilterValue, value);
115
- } else if ((!secondFilterOption || !secondFilterValue) && firstFilterOption && firstFilterValue) {
116
- return dateFilter(firstFilterOption, firstFilterValue, value);
117
- }
118
-
119
- return (
120
- dateFilter(firstFilterOption, firstFilterValue, value) &&
121
- dateFilter(secondFilterOption, secondFilterValue, value)
122
- );
123
- };
124
-
125
- export const columnFilter: ColumnFilterFn = ({ filterValue, value }) => {
126
- if (typeof value === 'string') {
127
- return stringFilter({ filterValue, value });
128
- } else if (typeof value === 'number') {
129
- return numericFilter({ filterValue, value });
130
- } else if (typeof value === 'object' && value instanceof Date) {
131
- return dateTypeFilter({ filterValue, value });
132
- }
133
- return false;
134
- };
135
-
136
- export const searchFilter: TableFilterFn = ({ filterValue, value }) => {
137
- if (value.toLowerCase().includes(filterValue.toLowerCase())) {
138
- return true;
139
- }
140
- return false;
141
- };
1
+ import type { ColumnFilterFn } from 'svelte-headless-table/lib/plugins';
2
+ import type { TableFilterFn } from 'svelte-headless-table/lib/plugins/addTableFilter';
3
+
4
+ const textFilter = (filterOption, filterValue, value) => {
5
+ switch (filterOption) {
6
+ case 'isequal':
7
+ return value.toLowerCase() === filterValue.toLowerCase();
8
+ case 'isnotequal':
9
+ return value.toLowerCase() !== filterValue.toLowerCase();
10
+ case 'starts':
11
+ return value.toLowerCase().startsWith(filterValue.toLowerCase());
12
+ case 'ends':
13
+ return value.toLowerCase().endsWith(filterValue.toLowerCase());
14
+ case 'contains':
15
+ return value.toLowerCase().includes(filterValue.toLowerCase());
16
+ case 'notcontains':
17
+ return !value.toLowerCase().includes(filterValue.toLowerCase());
18
+ default:
19
+ return false;
20
+ }
21
+ };
22
+
23
+ const numberFilter = (filterOption, filterValue, value) => {
24
+ switch (filterOption) {
25
+ case 'isequal':
26
+ return value === filterValue;
27
+ case 'isnotequal':
28
+ return value !== filterValue;
29
+ case 'isgreater':
30
+ return value > filterValue;
31
+ case 'isless':
32
+ return value < filterValue;
33
+ case 'isgreaterorequal':
34
+ return value >= filterValue;
35
+ case 'islessorequal':
36
+ return value <= filterValue;
37
+ default:
38
+ return false;
39
+ }
40
+ };
41
+
42
+ const dateFilter = (filterOption, filterValue, value) => {
43
+ const filter = new Date(filterValue);
44
+
45
+ switch (filterOption) {
46
+ case 'ison':
47
+ return value === filter;
48
+ case 'isstartingfrom':
49
+ return value >= filter;
50
+ case 'isafter':
51
+ return value > filter;
52
+ case 'isuntil':
53
+ return value <= filter;
54
+ case 'isbefore':
55
+ return value < filter;
56
+ case 'isnoton':
57
+ return value !== filter;
58
+ default:
59
+ return false;
60
+ }
61
+ };
62
+
63
+ const numericFilter: ColumnFilterFn = ({ filterValue, value }) => {
64
+ const [firstFilterOption, firstFilterValue, secondFilterOption, secondFilterValue] = filterValue;
65
+ if (firstFilterValue == null && secondFilterValue == null) {
66
+ return true;
67
+ } else if (
68
+ (firstFilterOption == null || firstFilterValue == null) &&
69
+ secondFilterOption != null &&
70
+ secondFilterValue != null
71
+ ) {
72
+ return numberFilter(secondFilterOption, secondFilterValue, value);
73
+ } else if (
74
+ (secondFilterOption == null || secondFilterValue == null) &&
75
+ firstFilterOption != null &&
76
+ firstFilterValue != null
77
+ ) {
78
+ return numberFilter(firstFilterOption, firstFilterValue, value);
79
+ }
80
+ return (
81
+ numberFilter(firstFilterOption, firstFilterValue, value) &&
82
+ numberFilter(secondFilterOption, secondFilterValue, value)
83
+ );
84
+ };
85
+
86
+ const stringFilter: ColumnFilterFn = ({ filterValue, value }) => {
87
+ const [firstFilterOption, firstFilterValue, secondFilterOption, secondFilterValue] = filterValue;
88
+ if (!firstFilterValue?.length && !secondFilterValue?.length) {
89
+ return true;
90
+ } else if (
91
+ (!firstFilterOption || !firstFilterValue) &&
92
+ secondFilterOption &&
93
+ secondFilterValue?.length
94
+ ) {
95
+ return textFilter(secondFilterOption, secondFilterValue, value);
96
+ } else if (
97
+ (!secondFilterOption || !secondFilterValue?.length) &&
98
+ firstFilterOption &&
99
+ firstFilterValue?.length
100
+ ) {
101
+ return textFilter(firstFilterOption, firstFilterValue, value);
102
+ }
103
+ return (
104
+ textFilter(firstFilterOption, firstFilterValue, value) &&
105
+ textFilter(secondFilterOption, secondFilterValue, value)
106
+ );
107
+ };
108
+
109
+ const dateTypeFilter: ColumnFilterFn = ({ filterValue, value }) => {
110
+ const [firstFilterOption, firstFilterValue, secondFilterOption, secondFilterValue] = filterValue;
111
+ if (!firstFilterValue && !secondFilterValue) {
112
+ return true;
113
+ } else if ((!firstFilterOption || !firstFilterValue) && secondFilterOption && secondFilterValue) {
114
+ return dateFilter(secondFilterOption, secondFilterValue, value);
115
+ } else if ((!secondFilterOption || !secondFilterValue) && firstFilterOption && firstFilterValue) {
116
+ return dateFilter(firstFilterOption, firstFilterValue, value);
117
+ }
118
+
119
+ return (
120
+ dateFilter(firstFilterOption, firstFilterValue, value) &&
121
+ dateFilter(secondFilterOption, secondFilterValue, value)
122
+ );
123
+ };
124
+
125
+ export const columnFilter: ColumnFilterFn = ({ filterValue, value }) => {
126
+ if (typeof value === 'string') {
127
+ return stringFilter({ filterValue, value });
128
+ } else if (typeof value === 'number') {
129
+ return numericFilter({ filterValue, value });
130
+ } else if (typeof value === 'object' && value instanceof Date) {
131
+ return dateTypeFilter({ filterValue, value });
132
+ }
133
+ return false;
134
+ };
135
+
136
+ export const searchFilter: TableFilterFn = ({ filterValue, value }) => {
137
+ if (value.toLowerCase().includes(filterValue.toLowerCase())) {
138
+ return true;
139
+ }
140
+ return false;
141
+ };