mountain-ui 1.0.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 (164) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +139 -0
  3. package/index.js +36 -0
  4. package/package.json +79 -0
  5. package/src/app.html +12 -0
  6. package/src/lib/assets/favicon.svg +1 -0
  7. package/src/lib/registry/entityRegistry/components/EntityButton.svelte +14 -0
  8. package/src/lib/registry/entityRegistry/components/EntityCard.svelte +64 -0
  9. package/src/lib/registry/entityRegistry/components/EntityForm.svelte +98 -0
  10. package/src/lib/registry/entityRegistry/components/FieldButton copy.svelte +41 -0
  11. package/src/lib/registry/entityRegistry/components/FieldButton.svelte +41 -0
  12. package/src/lib/registry/entityRegistry/components/FieldCard.svelte +60 -0
  13. package/src/lib/registry/entityRegistry/components/FieldIcon.svelte +21 -0
  14. package/src/lib/registry/entityRegistry/components/FieldInput.svelte +23 -0
  15. package/src/lib/registry/entityRegistry/components/FieldIsRequiredIcon.svelte +22 -0
  16. package/src/lib/registry/entityRegistry/components/FieldIsSecretIcon.svelte +19 -0
  17. package/src/lib/registry/entityRegistry/components/FieldIsUniqueIcon.svelte +21 -0
  18. package/src/lib/registry/entityRegistry/components/FormCtx.svelte +7 -0
  19. package/src/lib/registry/entityRegistry/components/LinkIcon.svelte +20 -0
  20. package/src/lib/registry/entityRegistry/createEntity.js +40 -0
  21. package/src/lib/registry/entityRegistry/registry.svelte.js +140 -0
  22. package/src/lib/registry/fieldTypeRegistry/components/FieldTypeButton.svelte +12 -0
  23. package/src/lib/registry/fieldTypeRegistry/components/FieldTypeCard.svelte +11 -0
  24. package/src/lib/registry/fieldTypeRegistry/components/FieldTypeIcon.svelte +11 -0
  25. package/src/lib/registry/fieldTypeRegistry/components/FieldTypeInput.svelte +11 -0
  26. package/src/lib/registry/fieldTypeRegistry/components/Label.svelte +28 -0
  27. package/src/lib/registry/fieldTypeRegistry/components/Line.svelte +31 -0
  28. package/src/lib/registry/fieldTypeRegistry/createFieldType.js +34 -0
  29. package/src/lib/registry/fieldTypeRegistry/fieldTypes/FieldTypeButton.svelte +10 -0
  30. package/src/lib/registry/fieldTypeRegistry/fieldTypes/FieldTypeCard.svelte +41 -0
  31. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Lines/Button.svelte +10 -0
  32. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Lines/Card.svelte +6 -0
  33. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Lines/Icon.svelte +5 -0
  34. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Lines/Input.svelte +150 -0
  35. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Lines/index.js +37 -0
  36. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Link/Button.svelte +10 -0
  37. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Link/Card.svelte +6 -0
  38. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Link/Icon.svelte +4 -0
  39. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Link/Input/Input.svelte +106 -0
  40. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Link/Input/LinkCard.svelte +49 -0
  41. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Link/Input/LinkCardSelection.svelte +65 -0
  42. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Link/Input/utils.js +25 -0
  43. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Link/index.js +37 -0
  44. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Primary/Button.svelte +10 -0
  45. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Primary/Card.svelte +6 -0
  46. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Primary/Icon.svelte +5 -0
  47. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Primary/index.js +36 -0
  48. package/src/lib/registry/fieldTypeRegistry/fieldTypes/calculation/CalculationColumn/Button.svelte +8 -0
  49. package/src/lib/registry/fieldTypeRegistry/fieldTypes/calculation/CalculationColumn/Card.svelte +6 -0
  50. package/src/lib/registry/fieldTypeRegistry/fieldTypes/calculation/CalculationColumn/Icon.svelte +9 -0
  51. package/src/lib/registry/fieldTypeRegistry/fieldTypes/calculation/CalculationColumn/Input.svelte +153 -0
  52. package/src/lib/registry/fieldTypeRegistry/fieldTypes/calculation/CalculationColumn/index.js +37 -0
  53. package/src/lib/registry/fieldTypeRegistry/fieldTypes/list/ListCheckbox/Button.svelte +8 -0
  54. package/src/lib/registry/fieldTypeRegistry/fieldTypes/list/ListCheckbox/Card.svelte +6 -0
  55. package/src/lib/registry/fieldTypeRegistry/fieldTypes/list/ListCheckbox/Icon.svelte +4 -0
  56. package/src/lib/registry/fieldTypeRegistry/fieldTypes/list/ListCheckbox/Input.svelte +88 -0
  57. package/src/lib/registry/fieldTypeRegistry/fieldTypes/list/ListCheckbox/index.js +39 -0
  58. package/src/lib/registry/fieldTypeRegistry/fieldTypes/list/ListRadio/Button.svelte +8 -0
  59. package/src/lib/registry/fieldTypeRegistry/fieldTypes/list/ListRadio/Card.svelte +6 -0
  60. package/src/lib/registry/fieldTypeRegistry/fieldTypes/list/ListRadio/Icon.svelte +4 -0
  61. package/src/lib/registry/fieldTypeRegistry/fieldTypes/list/ListRadio/Input.svelte +95 -0
  62. package/src/lib/registry/fieldTypeRegistry/fieldTypes/list/ListRadio/index.js +44 -0
  63. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/NumberInt/Button.svelte +8 -0
  64. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/NumberInt/Card.svelte +6 -0
  65. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/NumberInt/Icon.svelte +5 -0
  66. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/NumberInt/Input.svelte +16 -0
  67. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/NumberInt/index.js +41 -0
  68. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/FieldTypeInputFloat.svelte +55 -0
  69. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/NumberFloatDefault/Button.svelte +8 -0
  70. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/NumberFloatDefault/Card.svelte +6 -0
  71. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/NumberFloatDefault/Icon.svelte +7 -0
  72. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/NumberFloatDefault/Input.svelte +14 -0
  73. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/NumberFloatDefault/index.js +41 -0
  74. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/NumberFloatPercent/Button.svelte +8 -0
  75. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/NumberFloatPercent/Card.svelte +6 -0
  76. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/NumberFloatPercent/Icon.svelte +6 -0
  77. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/NumberFloatPercent/Input.svelte +15 -0
  78. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/NumberFloatPercent/index.js +41 -0
  79. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/NumberFloatPrice/Button.svelte +8 -0
  80. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/NumberFloatPrice/Card.svelte +6 -0
  81. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/NumberFloatPrice/Icon.svelte +5 -0
  82. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/NumberFloatPrice/Input.svelte +15 -0
  83. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/NumberFloatPrice/index.js +41 -0
  84. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/TextTextarea/Button.svelte +8 -0
  85. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/TextTextarea/Card.svelte +6 -0
  86. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/TextTextarea/Icon.svelte +8 -0
  87. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/TextTextarea/Input.svelte +14 -0
  88. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/TextTextarea/index.js +39 -0
  89. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/FieldTypeInputText.svelte +14 -0
  90. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharDefault/Button.svelte +8 -0
  91. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharDefault/Card.svelte +6 -0
  92. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharDefault/Icon.svelte +8 -0
  93. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharDefault/Input.svelte +15 -0
  94. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharDefault/index.js +38 -0
  95. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharEmail/Button.svelte +8 -0
  96. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharEmail/Card.svelte +6 -0
  97. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharEmail/Icon.svelte +4 -0
  98. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharEmail/Input.svelte +14 -0
  99. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharEmail/index.js +38 -0
  100. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharPassword/Button.svelte +8 -0
  101. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharPassword/Card.svelte +6 -0
  102. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharPassword/Icon.svelte +7 -0
  103. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharPassword/Input.svelte +37 -0
  104. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharPassword/index.js +38 -0
  105. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharPhone/Button.svelte +8 -0
  106. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharPhone/Card.svelte +6 -0
  107. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharPhone/Icon.svelte +3 -0
  108. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharPhone/Input.svelte +14 -0
  109. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharPhone/index.js +38 -0
  110. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharUrl/Button.svelte +8 -0
  111. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharUrl/Card.svelte +6 -0
  112. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharUrl/Icon.svelte +7 -0
  113. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharUrl/Input.svelte +14 -0
  114. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharUrl/index.js +38 -0
  115. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeCreatedAt/Button.svelte +8 -0
  116. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeCreatedAt/Card.svelte +6 -0
  117. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeCreatedAt/Icon.svelte +11 -0
  118. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeCreatedAt/index.js +38 -0
  119. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeDate/Button.svelte +8 -0
  120. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeDate/Card.svelte +6 -0
  121. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeDate/Icon.svelte +12 -0
  122. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeDate/Input.svelte +15 -0
  123. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeDate/index.js +39 -0
  124. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeDatetime/Button.svelte +8 -0
  125. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeDatetime/Card.svelte +6 -0
  126. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeDatetime/Icon.svelte +11 -0
  127. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeDatetime/Input.svelte +15 -0
  128. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeDatetime/index.js +39 -0
  129. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeDay/Button.svelte +8 -0
  130. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeDay/Card.svelte +6 -0
  131. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeDay/Icon.svelte +12 -0
  132. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeDay/Input.svelte +15 -0
  133. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeDay/index.js +39 -0
  134. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeHour/Button.svelte +8 -0
  135. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeHour/Card.svelte +6 -0
  136. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeHour/Icon.svelte +4 -0
  137. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeHour/Input.svelte +15 -0
  138. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeHour/index.js +39 -0
  139. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeMonth/Button.svelte +8 -0
  140. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeMonth/Card.svelte +6 -0
  141. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeMonth/Icon.svelte +12 -0
  142. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeMonth/Input.svelte +15 -0
  143. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeMonth/index.js +39 -0
  144. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeMonthOfYear/Button.svelte +8 -0
  145. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeMonthOfYear/Card.svelte +6 -0
  146. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeMonthOfYear/Icon.svelte +12 -0
  147. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeMonthOfYear/Input.svelte +15 -0
  148. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeMonthOfYear/index.js +39 -0
  149. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeUpdatedAt/Button.svelte +8 -0
  150. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeUpdatedAt/Card.svelte +6 -0
  151. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeUpdatedAt/Icon.svelte +11 -0
  152. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeUpdatedAt/index.js +38 -0
  153. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeYear/Button.svelte +8 -0
  154. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeYear/Card.svelte +6 -0
  155. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeYear/Icon.svelte +12 -0
  156. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeYear/Input.svelte +15 -0
  157. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeYear/index.js +39 -0
  158. package/src/lib/registry/fieldTypeRegistry/registerDefaultFieldTypes.js +66 -0
  159. package/src/lib/registry/fieldTypeRegistry/registry.svelte.js +72 -0
  160. package/src/routes/+layout.svelte +623 -0
  161. package/src/routes/+page.svelte +196 -0
  162. package/src/routes/global.css +197 -0
  163. package/src/routes/login/+page.svelte +112 -0
  164. package/src/routes/registry/fieldRegistry.svelte.js +37 -0
@@ -0,0 +1,37 @@
1
+ import { createFieldType } from "../../createFieldType";
2
+
3
+ import Icon from "./Icon.svelte"
4
+ import Button from "./Button.svelte"
5
+ import Card from "./Card.svelte"
6
+ import Input from "./Input.svelte"
7
+
8
+ export default createFieldType({
9
+ type: "lines",
10
+
11
+ category_path: "",
12
+
13
+ label: "Lignes",
14
+ description: "Liste de lignes de données, généralement utilisées pour représenter des sous-éléments ou des sous-formulaires.",
15
+
16
+ is_hidden: false,
17
+
18
+ can_be_required: true,
19
+ can_be_unique: true,
20
+
21
+ props:{},
22
+
23
+ components: {
24
+ icon: Icon,
25
+ button: Button,
26
+ card: Card,
27
+ input: Input,
28
+ cell: null,
29
+ filter: null,
30
+ properties: null
31
+ },
32
+
33
+ formatter: (value) => value,
34
+ parser: (value) => value,
35
+
36
+ validate: () => true,
37
+ })
@@ -0,0 +1,10 @@
1
+ <script>
2
+ import FieldTypeButton from "../FieldTypeButton.svelte";
3
+ import Icon from "./Icon.svelte";
4
+
5
+ let {...props} = $props()
6
+ </script>
7
+
8
+ <FieldTypeButton {...props}>
9
+
10
+ </FieldTypeButton>
@@ -0,0 +1,6 @@
1
+ <script>
2
+ import FieldCard from "../FieldTypeCard.svelte";
3
+ let {...props} = $props()
4
+ </script>
5
+
6
+ <FieldCard {...props}></FieldCard>
@@ -0,0 +1,4 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M12.1998 17.3799C11.4998 17.3799 10.7898 17.1099 10.2598 16.5799C9.73977 16.0599 9.44977 15.3699 9.44977 14.6399C9.44977 13.9099 9.73977 13.2099 10.2598 12.6999L11.6697 11.2899C11.9597 10.9999 12.4397 10.9999 12.7297 11.2899C13.0197 11.5799 13.0197 12.0599 12.7297 12.3499L11.3198 13.7599C11.0798 13.9999 10.9498 14.3099 10.9498 14.6399C10.9498 14.9699 11.0798 15.2899 11.3198 15.5199C11.8098 16.0099 12.5998 16.0099 13.0898 15.5199L15.3098 13.2999C16.5798 12.0299 16.5798 9.96994 15.3098 8.69994C14.0398 7.42994 11.9798 7.42994 10.7098 8.69994L8.28973 11.1199C7.77973 11.6299 7.49976 12.2999 7.49976 13.0099C7.49976 13.7199 7.77973 14.3999 8.28973 14.8999C8.57973 15.1899 8.57973 15.6699 8.28973 15.9599C7.99973 16.2499 7.51974 16.2499 7.22974 15.9599C6.43974 15.1699 6.00977 14.1199 6.00977 12.9999C6.00977 11.8799 6.43974 10.8299 7.22974 10.0399L9.64978 7.61992C11.4998 5.76992 14.5198 5.76992 16.3698 7.61992C18.2198 9.46992 18.2198 12.4899 16.3698 14.3399L14.1498 16.5599C13.6098 17.1099 12.9098 17.3799 12.1998 17.3799Z" fill="#292D32"/>
3
+ <path d="M12 22.75C6.07 22.75 1.25 17.93 1.25 12C1.25 6.07 6.07 1.25 12 1.25C17.93 1.25 22.75 6.07 22.75 12C22.75 17.93 17.93 22.75 12 22.75ZM12 2.75C6.9 2.75 2.75 6.9 2.75 12C2.75 17.1 6.9 21.25 12 21.25C17.1 21.25 21.25 17.1 21.25 12C21.25 6.9 17.1 2.75 12 2.75Z" fill="#292D32"/>
4
+ </svg>
@@ -0,0 +1,106 @@
1
+ <script>
2
+ import { InputSelector, sendRequest, toast } from 'hamzus-ui';
3
+ import LinkCard from './LinkCard.svelte';
4
+ import LinkCardSelection from './LinkCardSelection.svelte';
5
+ import { onMount } from 'svelte';
6
+ import { entityRegistry } from '$lib/registry/entityRegistry/registry.svelte';
7
+ import Line from '$lib/registry/fieldTypeRegistry/components/Line.svelte';
8
+ import Label from '$lib/registry/fieldTypeRegistry/components/Label.svelte';
9
+
10
+ let {
11
+ label = '',
12
+ required = false,
13
+ unique = false,
14
+ secret = false,
15
+ compact = false,
16
+ ctx = null,
17
+ linkId = null,
18
+ multiple = false,
19
+ display = false,
20
+ name = null,
21
+ value = null,
22
+ onChangeDetails = () => {},
23
+ onChange = () => {},
24
+ field
25
+ } = $props();
26
+
27
+ let selection = null;
28
+
29
+ let limit = 20;
30
+
31
+ let structure = entityRegistry.get(linkId);
32
+
33
+ let lastRequest = null;
34
+
35
+
36
+
37
+ async function getMultipleElement(search, offset) {
38
+ const request = await sendRequest({
39
+ path: '/get-all-entries',
40
+ data: {
41
+ entityId: linkId,
42
+ globalSearch: search,
43
+ offset: offset,
44
+ limit: limit
45
+ }
46
+ });
47
+
48
+ let rows = [];
49
+
50
+ for (let i = 0; i < request.data.rows.length; i++) {
51
+ rows.push({
52
+ id: request.data.rows[i].id,
53
+ structure: structure,
54
+ display: display,
55
+ element: request.data.rows[i]
56
+ });
57
+ }
58
+
59
+ return {
60
+ rows: rows,
61
+ totalOfRows: request.data.totalOfRows
62
+ };
63
+ }
64
+ async function getElement(data) {
65
+ if (!data?.id) {
66
+ return;
67
+ }
68
+
69
+ lastRequest = await sendRequest({
70
+ path: '/get-entry',
71
+ data: {
72
+ entityId: linkId,
73
+ entryId: data.id.flat ?? data.id,
74
+ flat: true
75
+ }
76
+ });
77
+
78
+ return {
79
+ id: lastRequest.data.id.flat,
80
+ structure: structure,
81
+ element: lastRequest.data,
82
+ display: display
83
+ };
84
+ }
85
+
86
+ function handleChange(value) {
87
+ onChangeDetails(value?.element ?? null);
88
+ onChange(value?.element.id.flat ?? null);
89
+ }
90
+ </script>
91
+ <Line {compact}>
92
+ <Label {unique} {secret} {label} {required}></Label>
93
+
94
+ {#if structure}
95
+ <InputSelector
96
+ {value}
97
+ {limit}
98
+ placeholder="rechercher une structure"
99
+ onChange={handleChange}
100
+ component={LinkCard}
101
+ selectionComponent={LinkCardSelection}
102
+ {getMultipleElement}
103
+ {getElement}
104
+ ></InputSelector>
105
+ {/if}
106
+ </Line>
@@ -0,0 +1,49 @@
1
+
2
+ <script>
3
+ import { onMount } from "svelte";
4
+ import { getDisplay } from "./utils";
5
+
6
+ let {
7
+ structure,
8
+ element,
9
+ display,
10
+ selected,
11
+ ...props
12
+ } = $props()
13
+
14
+ function handleClick() {
15
+ props.onClick({
16
+ ...props,
17
+ id:element.id,
18
+ })
19
+ }
20
+ </script>
21
+
22
+ <div class="card" class:selected onclick={handleClick}>
23
+ <h4>{getDisplay(structure, element, display)}</h4>
24
+ </div>
25
+
26
+ <style>
27
+ .card {
28
+ display: flex;
29
+ width: 100%;
30
+ align-items: center;
31
+ gap: var(--pad-m);
32
+ padding: var(--pad-m);
33
+ border-radius: var(--radius-m);
34
+ border: 1px solid var(--stroke);
35
+ cursor: pointer;
36
+ }
37
+ .card:hover {
38
+ background-color: var(--bg-3);
39
+ }
40
+ .card.selected {
41
+ border: 1px solid var(--accent);
42
+ }
43
+ .card h5 {
44
+ white-space: nowrap;
45
+ width: 100%;
46
+ overflow: hidden;
47
+ text-emphasis: ellipsis;
48
+ }
49
+ </style>
@@ -0,0 +1,65 @@
1
+ <script>
2
+ import { IconButton } from "hamzus-ui";
3
+ import { getDisplay } from "./utils";
4
+ import { onMount } from "svelte";
5
+
6
+ let {
7
+ display,
8
+ element,
9
+ structure,
10
+ ...props
11
+ } = $props()
12
+
13
+
14
+ function handleClick() {
15
+ props.onClick({
16
+ ...props,
17
+ id:element.id,
18
+ })
19
+ }
20
+ </script>
21
+
22
+ <div class="card">
23
+ <h4>{getDisplay(structure, element, display)}</h4>
24
+ <IconButton variant="ghost" onclick={handleClick}>
25
+ <svg
26
+ width="25"
27
+ height="25"
28
+ viewBox="0 0 25 25"
29
+ fill="none"
30
+ xmlns="http://www.w3.org/2000/svg"
31
+ ><path
32
+ d="M8.02188 18.1153C7.72277 18.1153 7.42365 18.0051 7.1875 17.7689C6.73096 17.3124 6.73096 16.5567 7.1875 16.1002L16.0981 7.18964C16.5546 6.73309 17.3103 6.73309 17.7668 7.18964C18.2234 7.64619 18.2234 8.40185 17.7668 8.8584L8.85626 17.7689C8.63586 18.0051 8.321 18.1153 8.02188 18.1153Z"
33
+ fill="black"
34
+ ></path><path
35
+ d="M16.9324 18.1153C16.6333 18.1153 16.3342 18.0051 16.0981 17.7689L7.1875 8.8584C6.73096 8.40185 6.73096 7.64619 7.1875 7.18964C7.64405 6.73309 8.39972 6.73309 8.85626 7.18964L17.7668 16.1002C18.2234 16.5567 18.2234 17.3124 17.7668 17.7689C17.5307 18.0051 17.2315 18.1153 16.9324 18.1153Z"
36
+ fill="black"
37
+ ></path></svg
38
+ >
39
+
40
+ </IconButton>
41
+ </div>
42
+
43
+ <style>
44
+ .card {
45
+ display: flex;
46
+ justify-content: space-between;
47
+ /* max-width: 270px; */
48
+ width: 100%;
49
+ align-items: center;
50
+ gap: var(--pad-s);
51
+ padding: var(--pad-xs) var(--pad-m);
52
+ border-radius: var(--radius-m);
53
+ border: 1px solid var(--stroke);
54
+ cursor: pointer;
55
+ }
56
+ .card:hover {
57
+ background-color: var(--bg-3);
58
+ }
59
+ .card h6 {
60
+ white-space: nowrap;
61
+ overflow: hidden;
62
+ text-overflow: ellipsis;
63
+ width: 100%;
64
+ }
65
+ </style>
@@ -0,0 +1,25 @@
1
+
2
+ export function getDisplay(structure, element, display) {
3
+ let allowedEntries = {
4
+ "{structure.plural_name}":structure.plural_name,
5
+ "{structure.singular_name}":structure.singular_name,
6
+ "{structure.symbol}":structure.symbol,
7
+ "{structure.normalized_name}":structure.normalized_name,
8
+ "{structure.slug}":structure.slug,
9
+ }
10
+
11
+
12
+ // parcourir les colonne de la structure
13
+ for (const column of structure.fields) {
14
+ if (column.is_hidden) continue
15
+
16
+ allowedEntries[`{element.${column.normalized_name}}`] = element[column.normalized_name].flat
17
+ }
18
+
19
+ // parcourir les clé et remplacé les entré trouvé
20
+ for (const text in allowedEntries) {
21
+ display = display.replace(text, allowedEntries[text])
22
+ }
23
+
24
+ return display
25
+ }
@@ -0,0 +1,37 @@
1
+ import { createFieldType } from "../../createFieldType";
2
+
3
+ import Icon from "./Icon.svelte"
4
+ import Button from "./Button.svelte"
5
+ import Card from "./Card.svelte"
6
+ import Input from "./Input/Input.svelte"
7
+
8
+ export default createFieldType({
9
+ type: "link",
10
+
11
+ category_path: "",
12
+
13
+ label: "Lien",
14
+ description: "Lien vers un élément d'une autre structure.",
15
+
16
+ is_hidden: false,
17
+
18
+ can_be_required: true,
19
+ can_be_unique: true,
20
+
21
+ props:{},
22
+
23
+ components: {
24
+ icon: Icon,
25
+ button: Button,
26
+ card: Card,
27
+ input: Input,
28
+ cell: null,
29
+ filter: null,
30
+ properties: null
31
+ },
32
+
33
+ formatter: (value) => value,
34
+ parser: (value) => value,
35
+
36
+ validate: () => true,
37
+ })
@@ -0,0 +1,10 @@
1
+ <script>
2
+ import FieldTypeButton from "../FieldTypeButton.svelte";
3
+ import Icon from "./Icon.svelte";
4
+
5
+ let {...props} = $props()
6
+ </script>
7
+
8
+ <FieldTypeButton {...props}>
9
+
10
+ </FieldTypeButton>
@@ -0,0 +1,6 @@
1
+ <script>
2
+ import FieldCard from "../FieldTypeCard.svelte";
3
+ let {...props} = $props()
4
+ </script>
5
+
6
+ <FieldCard {...props}></FieldCard>
@@ -0,0 +1,5 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M12 22.75C6.07 22.75 1.25 17.93 1.25 12C1.25 6.07 6.07 1.25 12 1.25C17.93 1.25 22.75 6.07 22.75 12C22.75 17.93 17.93 22.75 12 22.75ZM12 2.75C6.9 2.75 2.75 6.9 2.75 12C2.75 17.1 6.9 21.25 12 21.25C17.1 21.25 21.25 17.1 21.25 12C21.25 6.9 17.1 2.75 12 2.75Z" fill="#292D32"/>
3
+ <path d="M11.9996 15.6299C10.6796 15.6299 9.59961 14.5499 9.59961 13.2299V10.7599C9.59961 9.43989 10.6796 8.35986 11.9996 8.35986C13.3196 8.35986 14.3996 9.43989 14.3996 10.7599V13.2299C14.3996 14.5599 13.3196 15.6299 11.9996 15.6299ZM11.9996 9.86987C11.5096 9.86987 11.0996 10.2699 11.0996 10.7699V13.2399C11.0996 13.7399 11.4996 14.1399 11.9996 14.1399C12.4996 14.1399 12.8996 13.7399 12.8996 13.2399V10.7699C12.8996 10.2699 12.4896 9.86987 11.9996 9.86987Z" fill="#292D32"/>
4
+ <path d="M12 18.8199C8.83 18.8199 6.25 16.2399 6.25 13.0699V10.9299C6.25 7.75993 8.83 5.17993 12 5.17993C14.96 5.17993 17.42 7.39997 17.72 10.34C17.76 10.75 17.46 11.1199 17.05 11.1599C16.64 11.2099 16.27 10.8999 16.23 10.4899C16.01 8.31993 14.19 6.67993 12 6.67993C9.66 6.67993 7.75 8.58993 7.75 10.9299V13.0699C7.75 15.4099 9.66 17.3199 12 17.3199C14.2 17.3199 16.06 15.5999 16.24 13.4099C16.27 12.9999 16.63 12.6899 17.05 12.7199C17.46 12.7499 17.77 13.11 17.74 13.53C17.5 16.5 14.98 18.8199 12 18.8199Z" fill="#292D32"/>
5
+ </svg>
@@ -0,0 +1,36 @@
1
+ import { createFieldType } from "../../createFieldType";
2
+
3
+ import Icon from "./Icon.svelte"
4
+ import Button from "./Button.svelte"
5
+ import Card from "./Card.svelte"
6
+
7
+ export default createFieldType({
8
+ type: "primary",
9
+
10
+ category_path: [],
11
+
12
+ label: "Primaire",
13
+ description: "Clé primaire unique servant à identifier chaque enregistrement de manière distincte.",
14
+
15
+ is_hidden: true,
16
+
17
+ can_be_required: true,
18
+ can_be_unique: true,
19
+
20
+ props:{},
21
+
22
+ components: {
23
+ icon: Icon,
24
+ button: Button,
25
+ card: Card,
26
+ input: null,
27
+ cell: null,
28
+ filter: null,
29
+ properties: null
30
+ },
31
+
32
+ formatter: (value) => value,
33
+ parser: (value) => value,
34
+
35
+ validate: () => true,
36
+ })
@@ -0,0 +1,8 @@
1
+ <script>
2
+ import FieldTypeButton from '../../FieldTypeButton.svelte';
3
+ import Icon from './Icon.svelte';
4
+
5
+ let { ...props } = $props();
6
+ </script>
7
+
8
+ <FieldTypeButton {...props}></FieldTypeButton>
@@ -0,0 +1,6 @@
1
+ <script>
2
+ import FieldCard from "../../FieldTypeCard.svelte";
3
+ let {...props} = $props()
4
+ </script>
5
+
6
+ <FieldCard {...props}></FieldCard>
@@ -0,0 +1,9 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M21.6997 6.39014H14.4297C14.0197 6.39014 13.6797 6.05014 13.6797 5.64014C13.6797 5.23014 14.0197 4.89014 14.4297 4.89014H21.6997C22.1097 4.89014 22.4497 5.23014 22.4497 5.64014C22.4497 6.05014 22.1097 6.39014 21.6997 6.39014Z" fill="#292D32"/>
3
+ <path d="M9.58078 6.39014H2.30078C1.89078 6.39014 1.55078 6.05014 1.55078 5.64014C1.55078 5.23014 1.89078 4.89014 2.30078 4.89014H9.57078C9.98078 4.89014 10.3208 5.23014 10.3208 5.64014C10.3208 6.05014 9.99078 6.39014 9.58078 6.39014Z" fill="#292D32"/>
4
+ <path d="M21.6997 16.0801H14.4297C14.0197 16.0801 13.6797 15.7401 13.6797 15.3301C13.6797 14.9201 14.0197 14.5801 14.4297 14.5801H21.6997C22.1097 14.5801 22.4497 14.9201 22.4497 15.3301C22.4497 15.7401 22.1097 16.0801 21.6997 16.0801Z" fill="#292D32"/>
5
+ <path d="M21.6997 22.1401H14.4297C14.0197 22.1401 13.6797 21.8001 13.6797 21.3901C13.6797 20.9801 14.0197 20.6401 14.4297 20.6401H21.6997C22.1097 20.6401 22.4497 20.9801 22.4497 21.3901C22.4497 21.8001 22.1097 22.1401 21.6997 22.1401Z" fill="#292D32"/>
6
+ <path d="M18.0898 10.02C17.6798 10.02 17.3398 9.68 17.3398 9.27V2C17.3398 1.59 17.6798 1.25 18.0898 1.25C18.4998 1.25 18.8398 1.59 18.8398 2V9.27C18.8398 9.69 18.5098 10.02 18.0898 10.02Z" fill="#292D32"/>
7
+ <path d="M2.30023 22.7499C2.11023 22.7499 1.92023 22.6799 1.77023 22.5299C1.48023 22.2399 1.48023 21.7599 1.77023 21.4699L9.04023 14.1999C9.33023 13.9099 9.81024 13.9099 10.1002 14.1999C10.3902 14.4899 10.3902 14.9699 10.1002 15.2599L2.83023 22.5299C2.69023 22.6799 2.50023 22.7499 2.30023 22.7499Z" fill="#292D32"/>
8
+ <path d="M9.58 22.7499C9.39 22.7499 9.2 22.6799 9.05 22.5299L1.78 15.2599C1.49 14.9699 1.49 14.4899 1.78 14.1999C2.07 13.9099 2.55 13.9099 2.84 14.1999L10.11 21.4699C10.4 21.7599 10.4 22.2399 10.11 22.5299C9.96 22.6799 9.77 22.7499 9.58 22.7499Z" fill="#292D32"/>
9
+ </svg>
@@ -0,0 +1,153 @@
1
+ <script>
2
+ import { entityRegistry } from '$lib/registry/entityRegistry/registry.svelte';
3
+ import { Tooltip } from 'hamzus-ui';
4
+ import { onMount } from 'svelte';
5
+
6
+ let {
7
+ id = null,
8
+ entity_id = null,
9
+ value = $bindable(null),
10
+ name = '',
11
+ label = '',
12
+ required = false,
13
+ unique = false,
14
+ secret = false,
15
+ compact = false,
16
+ choices = [],
17
+ ctx = {},
18
+ detailsCtx = {},
19
+ onChange = () => {},
20
+ onChangeDetails = () => {},
21
+ operator = '',
22
+ column1 = '',
23
+ column2 = '',
24
+ ...props
25
+ } = $props();
26
+
27
+ let isMounted = false;
28
+
29
+ const field1 = entityRegistry.selectField(column1);
30
+ const field2 = entityRegistry.selectField(column2);
31
+
32
+ $effect(() => {
33
+ if (!$field1 || !$field2) return;
34
+
35
+ const raw1 = ctx[column1] ?? null;
36
+ const raw2 = ctx[column2] ?? null;
37
+
38
+ console.log($field1?.entity_id ?? null);
39
+ console.log(entity_id ?? null);
40
+
41
+ let value1 = raw1 ? parseFloat(raw1) : null;
42
+ let value2 = raw2 ? parseFloat(raw2) : null;
43
+
44
+ if ($field1.type === 'number-float-percent') value1 /= 100;
45
+ // si c est un lien on recupere le ctxDetails du produit
46
+ if ($field1.entity_id != entity_id) {
47
+ const linkField = entityRegistry.getLinkedField(entity_id, $field1.entity_id);
48
+ value1 = parseFloat(detailsCtx[linkField.id]?.[$field1.normalized_name]?.flat) ?? 0.0;
49
+ }
50
+
51
+ if ($field2.type === 'number-float-percent') value2 /= 100;
52
+ // si c est un lien on recupere le ctxDetails du produit
53
+ if ($field2.entity_id != entity_id) {
54
+ const linkField = entityRegistry.getLinkedField(entity_id, $field2.entity_id);
55
+ value2 = parseFloat(detailsCtx[linkField.id]?.[$field2.normalized_name]?.flat) ?? 0.0;
56
+ }
57
+
58
+ if (value1 == null || value2 == null) return;
59
+
60
+ if (isNaN(value1)) value1 = 0;
61
+ if (isNaN(value2)) value2 = 0;
62
+
63
+ const oldValue = value;
64
+
65
+ switch (operator) {
66
+ case '+':
67
+ value = value1 + value2;
68
+ break;
69
+ case '-':
70
+ value = value1 - value2;
71
+ break;
72
+ case '*':
73
+ value = value1 * value2;
74
+ break;
75
+ case '/':
76
+ value = value2 === 0 ? null : value1 / value2;
77
+ break;
78
+ }
79
+
80
+ if (oldValue !== value) {
81
+ onChange(value);
82
+ }
83
+ });
84
+
85
+ onMount(() => {
86
+ isMounted = true;
87
+ });
88
+ </script>
89
+
90
+ <div class="total-container">
91
+ <input type="hidden" {name} {value} />
92
+ <div class="total">
93
+ <div class="total-content">
94
+ <Tooltip.Root direction="bottom">
95
+ <Tooltip.Trigger slot="trigger">
96
+ <h4>{label}</h4>
97
+ </Tooltip.Trigger>
98
+ <Tooltip.Content slot="content" style="background-color:var(--bg-2)">
99
+ <h6 style="color: var(--font-2);">
100
+ {#if column1}
101
+ {$field1.name}
102
+ {/if}
103
+ {operator}
104
+ {#if column2}
105
+ {$field2.name}
106
+ {/if}
107
+ </h6>
108
+ </Tooltip.Content>
109
+ </Tooltip.Root>
110
+ <h4>{value === null ? '-' : value}</h4>
111
+ </div>
112
+ </div>
113
+ </div>
114
+
115
+ <style>
116
+ .total-container {
117
+ width: 100%;
118
+ display: flex;
119
+ justify-content: end;
120
+ }
121
+
122
+ .total {
123
+ width: min(100%, 350px);
124
+ border-left: 1px solid var(--stroke);
125
+ border-right: 1px solid var(--stroke);
126
+ padding: var(--pad-m);
127
+ row-gap: var(--pad-m);
128
+ }
129
+
130
+ /* Premier d'une suite (ou élément seul) */
131
+ .total-container:not(.total-container + .total-container) .total {
132
+ border-top-left-radius: var(--radius-xxl);
133
+ border-top-right-radius: var(--radius-xxl);
134
+ border-top: 1px solid var(--stroke);
135
+ }
136
+
137
+ /* Dernier d'une suite (ou élément seul) */
138
+ .total-container:not(:has(+ .total-container)) .total {
139
+ border-bottom-left-radius: var(--radius-xxl);
140
+ border-bottom-right-radius: var(--radius-xxl);
141
+ border-bottom: 1px solid var(--stroke);
142
+ }
143
+
144
+ .total-content {
145
+ display: flex;
146
+ align-items: center;
147
+ justify-content: space-between;
148
+ width: 100%;
149
+ padding: var(--pad-m) var(--pad-xxl);
150
+ border-radius: var(--radius-l);
151
+ background-color: var(--bg-2);
152
+ }
153
+ </style>
@@ -0,0 +1,37 @@
1
+ import { createFieldType } from "$lib/registry/fieldTypeRegistry/createFieldType"
2
+
3
+ import Icon from "./Icon.svelte"
4
+ import Button from "./Button.svelte"
5
+ import Card from "./Card.svelte"
6
+ import Input from "./Input.svelte"
7
+
8
+ export default createFieldType({
9
+ type: "calculation-column",
10
+
11
+ category_path: "calculation",
12
+
13
+ label: "Calcul de champs",
14
+ description: "Calcul automatique de 2 champs.",
15
+
16
+ is_hidden: false,
17
+
18
+ defaultProps:{},
19
+
20
+ can_be_required: false,
21
+ can_be_unique: false,
22
+
23
+ components: {
24
+ icon: Icon,
25
+ button: Button,
26
+ card: Card,
27
+ input: Input,
28
+ cell: null,
29
+ filter: null,
30
+ properties: null
31
+ },
32
+
33
+ formatter: (value) => value,
34
+ parser: (value) => value,
35
+
36
+ validate: () => true,
37
+ })
@@ -0,0 +1,8 @@
1
+ <script>
2
+ import FieldTypeButton from '../../FieldTypeButton.svelte';
3
+ import Icon from './Icon.svelte';
4
+
5
+ let { ...props } = $props();
6
+ </script>
7
+
8
+ <FieldTypeButton {...props}></FieldTypeButton>
@@ -0,0 +1,6 @@
1
+ <script>
2
+ import FieldCard from "../../FieldTypeCard.svelte";
3
+ let {...props} = $props()
4
+ </script>
5
+
6
+ <FieldCard {...props}></FieldCard>
@@ -0,0 +1,4 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M15 22.75H9C3.57 22.75 1.25 20.43 1.25 15V9C1.25 3.57 3.57 1.25 9 1.25H15C20.43 1.25 22.75 3.57 22.75 9V15C22.75 20.43 20.43 22.75 15 22.75ZM9 2.75C4.39 2.75 2.75 4.39 2.75 9V15C2.75 19.61 4.39 21.25 9 21.25H15C19.61 21.25 21.25 19.61 21.25 15V9C21.25 4.39 19.61 2.75 15 2.75H9Z" fill="#292D32"/>
3
+ <path d="M10.5795 15.5801C10.3795 15.5801 10.1895 15.5001 10.0495 15.3601L7.21945 12.5301C6.92945 12.2401 6.92945 11.7601 7.21945 11.4701C7.50945 11.1801 7.98945 11.1801 8.27945 11.4701L10.5795 13.7701L15.7195 8.6301C16.0095 8.3401 16.4895 8.3401 16.7795 8.6301C17.0695 8.9201 17.0695 9.4001 16.7795 9.6901L11.1095 15.3601C10.9695 15.5001 10.7795 15.5801 10.5795 15.5801Z" fill="#292D32"/>
4
+ </svg>