@likable-hair/svelte 3.0.19 → 3.0.21

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 (53) hide show
  1. package/dist/components/composed/common/MenuOrDrawer.svelte +3 -2
  2. package/dist/components/composed/common/MenuOrDrawer.svelte.d.ts +2 -1
  3. package/dist/components/composed/common/MenuOrDrawerOptions.svelte +2 -2
  4. package/dist/components/composed/common/MenuOrDrawerOptions.svelte.d.ts +1 -1
  5. package/dist/components/composed/forms/Dropdown.svelte +19 -8
  6. package/dist/components/composed/forms/Dropdown.svelte.d.ts +7 -0
  7. package/dist/components/composed/list/PaginatedTable.svelte +179 -129
  8. package/dist/components/composed/list/PaginatedTable.svelte.d.ts +71 -2
  9. package/dist/components/composed/list/Paginator.svelte +12 -6
  10. package/dist/components/composed/search/FilterEditor.svelte +260 -0
  11. package/dist/components/composed/search/FilterEditor.svelte.d.ts +29 -0
  12. package/dist/components/composed/search/Filters.css +0 -0
  13. package/dist/components/composed/search/Filters.svelte +500 -0
  14. package/dist/components/composed/search/Filters.svelte.d.ts +46 -0
  15. package/dist/components/composed/search/MobileFilterEditor.svelte +342 -0
  16. package/dist/components/composed/search/MobileFilterEditor.svelte.d.ts +34 -0
  17. package/dist/components/composed/search/SearchBar.svelte +12 -11
  18. package/dist/components/composed/search/SearchBar.svelte.d.ts +1 -0
  19. package/dist/components/simple/buttons/Button.css +1 -0
  20. package/dist/components/simple/buttons/Button.svelte +8 -0
  21. package/dist/components/simple/common/Menu.svelte +29 -10
  22. package/dist/components/simple/common/Menu.svelte.d.ts +2 -0
  23. package/dist/components/simple/dates/DatePickerTextField.svelte +91 -61
  24. package/dist/components/simple/dates/DatePickerTextField.svelte.d.ts +2 -0
  25. package/dist/components/simple/dialogs/Dialog.svelte.d.ts +1 -1
  26. package/dist/components/simple/forms/Autocomplete.css +1 -0
  27. package/dist/components/simple/forms/Autocomplete.svelte +100 -46
  28. package/dist/components/simple/forms/Autocomplete.svelte.d.ts +4 -0
  29. package/dist/components/simple/lists/SelectableVerticalList.svelte +52 -9
  30. package/dist/components/simple/lists/SelectableVerticalList.svelte.d.ts +9 -0
  31. package/dist/components/simple/lists/SimpleTable.svelte +25 -23
  32. package/dist/components/simple/lists/SimpleTable.svelte.d.ts +3 -1
  33. package/dist/components/simple/lists/columnTypes.d.ts +35 -0
  34. package/dist/components/simple/lists/columnTypes.js +1 -0
  35. package/dist/components/simple/media/DescriptiveAvatar.svelte.d.ts +1 -1
  36. package/dist/components/simple/navigation/Chip.css +2 -1
  37. package/dist/components/simple/navigation/Chip.svelte +16 -5
  38. package/dist/components/simple/navigation/Chip.svelte.d.ts +1 -0
  39. package/dist/components/simple/navigation/Drawer.svelte +10 -0
  40. package/dist/components/simple/navigation/Drawer.svelte.d.ts +1 -0
  41. package/dist/index.d.ts +1 -0
  42. package/dist/index.js +1 -0
  43. package/dist/utils/filters/builder.d.ts +43 -0
  44. package/dist/utils/filters/builder.js +137 -0
  45. package/dist/utils/filters/filters.d.ts +89 -0
  46. package/dist/utils/filters/filters.js +102 -0
  47. package/dist/utils/filters/modifiers/join.d.ts +26 -0
  48. package/dist/utils/filters/modifiers/join.js +1 -0
  49. package/dist/utils/filters/modifiers/where.d.ts +29 -0
  50. package/dist/utils/filters/modifiers/where.js +1 -0
  51. package/dist/utils/filters/validator.d.ts +4 -0
  52. package/dist/utils/filters/validator.js +30 -0
  53. package/package.json +2 -1
@@ -0,0 +1,102 @@
1
+ import Builder from "./builder";
2
+ export const StringModes = ['equal', 'like', 'ilike'];
3
+ export const GenericModes = ['equal', 'greater', 'lower', 'between'];
4
+ export const SelectModes = ['equal', 'different'];
5
+ export default class Converter {
6
+ constructor() {
7
+ }
8
+ createBuilder(params) {
9
+ let builder = new Builder();
10
+ for (let i = 0; i < params.filters.length; i += 1) {
11
+ const filter = params.filters[i];
12
+ if (filter.type == 'string') {
13
+ this.applyStringFilter({ builder, filter });
14
+ }
15
+ else if (filter.type == 'date') {
16
+ this.applyDateFilter({ builder, filter });
17
+ }
18
+ else if (filter.type == 'number') {
19
+ this.applyNumberFilter({ builder, filter });
20
+ }
21
+ else if (filter.type == 'select') {
22
+ this.applySelectFilter({ builder, filter });
23
+ }
24
+ else if (filter.type == 'bool') {
25
+ this.applyBooleanFilter({ builder, filter });
26
+ }
27
+ }
28
+ return builder;
29
+ }
30
+ applyStringFilter(params) {
31
+ if (params.filter.value === undefined)
32
+ return params.builder;
33
+ if (params.filter.mode == 'like') {
34
+ params.builder.where(params.filter.column, 'like', params.filter.value);
35
+ }
36
+ else if (params.filter.mode == 'ilike') {
37
+ params.builder.where(params.filter.column, 'ilike', params.filter.value);
38
+ }
39
+ else {
40
+ params.builder.where(params.filter.column, '=', params.filter.value);
41
+ }
42
+ return params.builder;
43
+ }
44
+ applyDateFilter(params) {
45
+ if (params.filter.mode == 'equal' && !!params.filter.value) {
46
+ params.builder.where(params.filter.column, '=', params.filter.value);
47
+ }
48
+ else if (params.filter.mode == 'greater' && !!params.filter.value) {
49
+ params.builder.where(params.filter.column, '>', params.filter.value);
50
+ }
51
+ else if (params.filter.mode == 'lower' && !!params.filter.value) {
52
+ params.builder.where(params.filter.column, '<', params.filter.value);
53
+ }
54
+ else if (params.filter.mode == 'between' && !!params.filter.from && !!params.filter.to) {
55
+ params.builder.where(params.filter.column, '>', params.filter.from);
56
+ params.builder.where(params.filter.column, '<', params.filter.to);
57
+ }
58
+ return params.builder;
59
+ }
60
+ applyNumberFilter(params) {
61
+ if (params.filter.mode == 'equal' && !!params.filter.value) {
62
+ params.builder.where(params.filter.column, '=', params.filter.value);
63
+ }
64
+ else if (params.filter.mode == 'greater' && !!params.filter.value) {
65
+ params.builder.where(params.filter.column, '>', params.filter.value);
66
+ }
67
+ else if (params.filter.mode == 'lower' && !!params.filter.value) {
68
+ params.builder.where(params.filter.column, '<', params.filter.value);
69
+ }
70
+ else if (params.filter.mode == 'between' && !!params.filter.from && !!params.filter.to) {
71
+ params.builder.where(params.filter.column, '>', params.filter.from);
72
+ params.builder.where(params.filter.column, '<', params.filter.to);
73
+ }
74
+ return params.builder;
75
+ }
76
+ applySelectFilter(params) {
77
+ if (!!params.filter.values && params.filter.values.length > 0) {
78
+ if (params.filter.mode == 'equal') {
79
+ params.builder.where(b => {
80
+ b.where(params.filter.column, '=', params.filter.values[0].value);
81
+ for (let i = 1; i < params.filter.values.length; i += 1) {
82
+ b.orWhere(params.filter.column, '=', params.filter.values[i].value);
83
+ }
84
+ });
85
+ }
86
+ else {
87
+ params.builder.where(b => {
88
+ for (let i = 0; i < params.filter.values.length; i += 1) {
89
+ b.whereNot(params.filter.column, '=', params.filter.values[i].value);
90
+ }
91
+ });
92
+ }
93
+ }
94
+ return params.builder;
95
+ }
96
+ applyBooleanFilter(params) {
97
+ if (params.filter.value !== undefined) {
98
+ params.builder.where(params.filter.column, '=', params.filter.value);
99
+ }
100
+ return params.builder;
101
+ }
102
+ }
@@ -0,0 +1,26 @@
1
+ export type JoinModifierOnClause = {
2
+ from: string;
3
+ operator: string;
4
+ to: string;
5
+ logicalOperator?: 'and' | 'or';
6
+ };
7
+ type RightJoinModifier = {
8
+ method: 'join';
9
+ kind: 'right';
10
+ table: string;
11
+ on: JoinModifierOnClause[];
12
+ };
13
+ type InnerJoinModifier = {
14
+ method: 'join';
15
+ kind: 'inner';
16
+ table: string;
17
+ on: JoinModifierOnClause[];
18
+ };
19
+ type LeftJoinJsonModifier = {
20
+ method: 'join';
21
+ kind: 'left';
22
+ table: string;
23
+ on: JoinModifierOnClause[];
24
+ };
25
+ export type JoinModifier = LeftJoinJsonModifier | InnerJoinModifier | RightJoinModifier;
26
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,29 @@
1
+ type GroupedWhere = {
2
+ method: 'where';
3
+ kind: 'grouped';
4
+ logicalOperator?: 'and' | 'or' | 'andNot' | 'orNot';
5
+ children: (ObjectWhere | SimpleWhere | GroupedWhere | InWhere)[];
6
+ };
7
+ type ObjectWhere = {
8
+ method: 'where';
9
+ kind: 'object';
10
+ logicalOperator?: 'and' | 'or' | 'andNot' | 'orNot';
11
+ values: Record<string, string | number | Date>;
12
+ };
13
+ type SimpleWhere = {
14
+ method: 'where';
15
+ kind: 'simple';
16
+ logicalOperator?: 'and' | 'or' | 'andNot' | 'orNot';
17
+ key: string;
18
+ operator?: string;
19
+ value: string | number | Date | boolean;
20
+ };
21
+ type InWhere = {
22
+ method: 'where';
23
+ kind: 'in';
24
+ logicalOperator?: 'and' | 'or' | 'andNot' | 'orNot';
25
+ key: string;
26
+ value: (string | number | Date)[];
27
+ };
28
+ export type WhereModifier = SimpleWhere | ObjectWhere | GroupedWhere | InWhere;
29
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ import type { Filter } from "./filters";
2
+ export default class Validator {
3
+ static isValid(filter?: Filter): boolean;
4
+ }
@@ -0,0 +1,30 @@
1
+ export default class Validator {
2
+ static isValid(filter) {
3
+ if (!filter)
4
+ return false;
5
+ else if (filter.type == 'string')
6
+ return !!filter.value;
7
+ else if (filter.type == 'date') {
8
+ if (filter.mode == 'between')
9
+ return !!filter.from && !!filter.to;
10
+ else
11
+ return !!filter.value;
12
+ }
13
+ else if (filter.type == 'multiString')
14
+ return !!filter.value;
15
+ else if (filter.type == 'number') {
16
+ if (filter.mode == 'between')
17
+ return filter.from != undefined && filter.to != undefined;
18
+ else
19
+ return filter.value != undefined;
20
+ }
21
+ else if (filter.type == 'select') {
22
+ return filter.values != undefined && filter.values.length > 0;
23
+ }
24
+ else if (filter.type == 'bool') {
25
+ return filter.value !== undefined;
26
+ }
27
+ else
28
+ return false;
29
+ }
30
+ }
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@likable-hair/svelte",
3
3
  "description": "A Svelte component for likablehair",
4
- "version": "3.0.19",
4
+ "version": "3.0.21",
5
5
  "scripts": {
6
+ "host": "vite --host",
6
7
  "dev": "vite dev",
7
8
  "build": "vite build && npm run package",
8
9
  "preview": "vite preview",