firstly 0.0.11 → 0.0.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 (139) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/esm/BaseEnum.d.ts +2 -0
  3. package/esm/BaseEnum.js +2 -0
  4. package/esm/FF_Fields.js +0 -1
  5. package/esm/ROUTES.d.ts +2 -2
  6. package/esm/ROUTES.js +10 -5
  7. package/esm/SqlDatabase/FF_LogToConsole.d.ts +1 -0
  8. package/esm/SqlDatabase/FF_LogToConsole.js +22 -16
  9. package/esm/api/index.d.ts +20 -21
  10. package/esm/api/index.js +74 -62
  11. package/esm/auth/{client/Auth.d.ts → AuthController.d.ts} +18 -25
  12. package/esm/auth/{client/Auth.js → AuthController.js} +48 -44
  13. package/esm/auth/{client/Entities.d.ts → Entities.d.ts} +4 -3
  14. package/esm/auth/{client/Entities.js → Entities.js} +7 -7
  15. package/esm/auth/README.md +0 -10
  16. package/esm/auth/index.d.ts +5 -149
  17. package/esm/auth/index.js +5 -316
  18. package/esm/auth/{AuthController.server.d.ts → server/AuthController.server.d.ts} +10 -10
  19. package/esm/auth/{AuthController.server.js → server/AuthController.server.js} +133 -171
  20. package/esm/auth/server/handleAuth.d.ts +2 -0
  21. package/esm/auth/server/handleAuth.js +140 -0
  22. package/esm/auth/server/handleGuard.d.ts +16 -0
  23. package/esm/auth/server/handleGuard.js +67 -0
  24. package/esm/auth/server/helperDb.d.ts +10 -0
  25. package/esm/auth/server/helperDb.js +56 -0
  26. package/esm/auth/server/helperFirstly.d.ts +1 -0
  27. package/esm/auth/server/helperFirstly.js +8 -0
  28. package/esm/auth/server/helperOslo.d.ts +7 -0
  29. package/esm/auth/server/helperOslo.js +24 -0
  30. package/esm/auth/server/helperRemultServer.d.ts +5 -0
  31. package/esm/auth/server/helperRemultServer.js +44 -0
  32. package/esm/auth/{RoleHelpers.d.ts → server/helperRole.d.ts} +1 -1
  33. package/esm/auth/{RoleHelpers.js → server/helperRole.js} +1 -1
  34. package/esm/auth/server/index.d.ts +7 -0
  35. package/esm/auth/server/index.js +7 -0
  36. package/esm/auth/server/module.d.ts +257 -0
  37. package/esm/auth/server/module.js +197 -0
  38. package/esm/auth/{providers → server/providers}/github.d.ts +6 -4
  39. package/esm/auth/{providers → server/providers}/github.js +29 -20
  40. package/esm/auth/{providers/index.d.ts → server/providers/helperProvider.d.ts} +0 -2
  41. package/esm/auth/{providers/index.js → server/providers/helperProvider.js} +5 -6
  42. package/esm/auth/static/assets/Page-BUfjaN-D.d.ts +5 -0
  43. package/esm/auth/static/assets/Page-BUfjaN-D.js +19 -0
  44. package/esm/auth/static/assets/Page-CJ58H1vl.css +1 -0
  45. package/esm/auth/static/assets/Page-CaDAqmBS.d.ts +5 -0
  46. package/esm/auth/static/assets/Page-CaDAqmBS.js +1 -0
  47. package/esm/auth/static/assets/Page-DhdZddzJ.d.ts +5 -0
  48. package/esm/auth/static/assets/Page-DhdZddzJ.js +1 -0
  49. package/esm/auth/static/assets/index-BDy4A_14.css +4 -0
  50. package/esm/auth/static/assets/index-D-Ztdt2o.d.ts +54 -0
  51. package/esm/auth/static/assets/index-D-Ztdt2o.js +2 -0
  52. package/esm/auth/static/index.html +11 -11
  53. package/esm/auth/types.d.ts +5 -0
  54. package/esm/bin/cmd.js +122 -54
  55. package/esm/cellsBuildor.js +7 -7
  56. package/esm/changeLog/index.d.ts +0 -36
  57. package/esm/changeLog/index.js +3 -43
  58. package/esm/changeLog/server/index.d.ts +36 -0
  59. package/esm/changeLog/server/index.js +42 -0
  60. package/esm/common.d.ts +5 -0
  61. package/esm/common.js +8 -0
  62. package/esm/cron/{index.d.ts → server/index.d.ts} +1 -1
  63. package/esm/cron/server/index.js +103 -0
  64. package/esm/feedback/FeedbackController.js +4 -5
  65. package/esm/feedback/index.d.ts +0 -16
  66. package/esm/feedback/index.js +0 -11
  67. package/esm/feedback/server/index.d.ts +17 -0
  68. package/esm/feedback/server/index.js +13 -0
  69. package/esm/feedback/ui/DialogIssue.svelte +52 -56
  70. package/esm/feedback/ui/DialogIssues.svelte +71 -71
  71. package/esm/feedback/ui/DialogMilestones.svelte +22 -22
  72. package/esm/helper.js +3 -3
  73. package/esm/index.d.ts +3 -20
  74. package/esm/index.js +3 -10
  75. package/esm/mail/index.d.ts +2 -30
  76. package/esm/mail/index.js +2 -79
  77. package/esm/mail/server/index.d.ts +31 -0
  78. package/esm/mail/server/index.js +88 -0
  79. package/esm/mail/templates/DefaultMail.svelte +17 -17
  80. package/esm/storeItem.js +8 -2
  81. package/esm/storeList.d.ts +1 -1
  82. package/esm/storeList.js +1 -1
  83. package/esm/sveltekit/server/index.d.ts +14 -0
  84. package/esm/sveltekit/server/index.js +24 -0
  85. package/esm/ui/Button.svelte +33 -33
  86. package/esm/ui/Button.svelte.d.ts +2 -2
  87. package/esm/ui/Clipboardable.svelte +11 -8
  88. package/esm/ui/Clipboardable.svelte.d.ts +4 -4
  89. package/esm/ui/Field.svelte +142 -149
  90. package/esm/ui/Field.svelte.d.ts +2 -2
  91. package/esm/ui/FieldGroup.svelte +38 -38
  92. package/esm/ui/Grid.svelte +212 -222
  93. package/esm/ui/GridLoading.svelte +18 -22
  94. package/esm/ui/GridPaginate.svelte +38 -38
  95. package/esm/ui/Icon.svelte +50 -49
  96. package/esm/ui/Icon.svelte.d.ts +18 -18
  97. package/esm/ui/Loading.svelte +5 -2
  98. package/esm/ui/Tooltip.svelte +16 -16
  99. package/esm/ui/dialog/DialogForm.svelte +23 -23
  100. package/esm/ui/dialog/DialogManagement.svelte +74 -74
  101. package/esm/ui/dialog/DialogPrimitive.svelte +50 -51
  102. package/esm/ui/dialog/FormEditAction.svelte +34 -34
  103. package/esm/ui/dialog/dialog.d.ts +2 -2
  104. package/esm/ui/dialog/dialog.js +1 -1
  105. package/esm/ui/internals/FieldContainer.svelte +11 -12
  106. package/esm/ui/internals/FieldContainer.svelte.d.ts +3 -3
  107. package/esm/ui/internals/Input.svelte +25 -25
  108. package/esm/ui/internals/Input.svelte.d.ts +1 -1
  109. package/esm/ui/internals/Textarea.svelte +21 -21
  110. package/esm/ui/internals/Textarea.svelte.d.ts +2 -2
  111. package/esm/ui/internals/select/MultiSelectMelt.svelte +69 -73
  112. package/esm/ui/internals/select/SelectMelt.svelte +86 -86
  113. package/esm/ui/internals/select/SelectRadio.svelte +22 -22
  114. package/esm/ui/link/Link.svelte +14 -14
  115. package/esm/ui/link/Link.svelte.d.ts +3 -4
  116. package/esm/ui/link/LinkPlus.svelte +33 -35
  117. package/esm/vite/index.js +24 -25
  118. package/package.json +50 -42
  119. package/esm/auth/Adapter.d.ts +0 -10
  120. package/esm/auth/Adapter.js +0 -50
  121. package/esm/auth/client/index.d.ts +0 -7
  122. package/esm/auth/client/index.js +0 -7
  123. package/esm/auth/helper.d.ts +0 -6
  124. package/esm/auth/helper.js +0 -14
  125. package/esm/auth/providers/strava.d.ts +0 -30
  126. package/esm/auth/providers/strava.js +0 -60
  127. package/esm/auth/static/assets/Page-BEFYPjis.d.ts +0 -4
  128. package/esm/auth/static/assets/Page-BEFYPjis.js +0 -1
  129. package/esm/auth/static/assets/Page-BGTO8LC5.css +0 -1
  130. package/esm/auth/static/assets/Page-Cfysx_UV.d.ts +0 -6
  131. package/esm/auth/static/assets/Page-Cfysx_UV.js +0 -18
  132. package/esm/auth/static/assets/Page-DtgkOCJs.d.ts +0 -4
  133. package/esm/auth/static/assets/Page-DtgkOCJs.js +0 -1
  134. package/esm/auth/static/assets/index-CR_3yNaJ.css +0 -4
  135. package/esm/auth/static/assets/index-QypqCYwC.d.ts +0 -63
  136. package/esm/auth/static/assets/index-QypqCYwC.js +0 -2
  137. package/esm/cron/index.js +0 -102
  138. package/esm/handle/index.d.ts +0 -7
  139. package/esm/handle/index.js +0 -40
@@ -61,6 +61,9 @@ const toInput = (_metadata, _value) => {
61
61
  };
62
62
  const fromInput = (_metadata, _value) => {
63
63
  try {
64
+ if (_metadata.allowNull && _value === null) {
65
+ return null;
66
+ }
64
67
  return _metadata?.valueConverter.fromInput(_value, metaType.subKind);
65
68
  } catch (error2) {
66
69
  console.error(`error fromInput w field '${_metadata.key}'`, error2);
@@ -134,154 +137,144 @@ const calcSuffix = (value2) => {
134
137
  </script>
135
138
 
136
139
  <FieldContainer
137
- forId={cell.field?.key ?? ''}
138
- label={cell?.header ?? cell.field?.caption ?? cell.field?.key}
139
- required={!cell.field?.allowNull && mode === 'edit' && metaType.subKind !== 'checkbox'}
140
- {error}
141
- classes={{ slot: metaType.subKind === 'textarea' ? 'h-24 items-start' : '' }}
140
+ forId={cell.field?.key ?? ''}
141
+ label={cell?.header ?? cell.field?.caption ?? cell.field?.key}
142
+ required={!cell.field?.allowNull && mode === 'edit' && metaType.subKind !== 'checkbox'}
143
+ {error}
144
+ classes={{ slot: metaType.subKind === 'textarea' ? 'h-24 items-start' : '' }}
142
145
  >
143
- {@const clearableComputed =
144
- cell.clearable || clearable || (mode === 'filtre' && clearable === undefined)}
145
- {#if isViewMode(mode, cell.field)}
146
- <span class="input-bordered flex items-center pl-2 pr-4">
147
- {#if cell.field?.inputType === 'checkbox'}
148
- <input
149
- type="checkbox"
150
- {...common(cell.field)}
151
- class="checkbox ml-2"
152
- disabled
153
- checked={value}
154
- />
155
- {:else if metaType.kind === 'relation'}
156
- {@const item = getEntityDisplayValue(metaType.repoTarget, value)}
157
- <div class={tw('flex items-center gap-4', 'h-12', 'pl-2')}>
158
- <LinkPlus {item}></LinkPlus>
159
- </div>
160
- {:else if metaType.kind === 'enum'}
161
- {@const v = displayWithDefaultAndSuffix(cell.field, value)}
162
- <div class="ml-2 flex h-12 items-center gap-4">
163
- {#if value?.icon}
164
- <Icon {...value.icon} />
165
- {/if}
166
- <Clipboardable value={v}>{v}</Clipboardable>
167
- </div>
168
- {:else}
169
- {@const v = displayWithDefaultAndSuffix(cell.field, value)}
170
- <div
171
- class="ml-2 flex h-12 w-full items-center {metaType.subKind === 'number'
172
- ? 'justify-end'
173
- : ''}"
174
- >
175
- <Clipboardable value={v}>{v}</Clipboardable>
176
- </div>
177
- {/if}
178
- </span>
179
- {:else if metaType.kind === 'relation'}
180
- {#if metaType.field.options.multiSelect}
181
- <MultiSelectMelt
182
- {...common(cell.field, true)}
183
- clearable={clearableComputed}
184
- loadOptions={async (str) => await getLoadOptions(cellsValues, str)}
185
- values={value}
186
- on:selected={(e) => dispatchSelected(e.detail)}
187
- />
188
- {:else}
189
- <!-- {items} -->
190
- <SelectMelt
191
- {focus}
192
- {...common(cell.field, true)}
193
- clearable={clearableComputed}
194
- loadOptions={async (str) => await getLoadOptions(cellsValues, str)}
195
- value={value?.id || value}
196
- on:selected={(e) => dispatchSelected(e.detail)}
197
- on:issue={(e) => {
198
- error = e.detail
199
- }}
200
- createOptionWhenNoResult={!!cell.field?.options.createOptionWhenNoResult}
201
- on:createRequest
202
- />
203
- {/if}
204
- {:else if metaType.kind === 'enum'}
205
- {#if metaType.field.options.multiSelect || metaType.subKind === 'multi'}
206
- <MultiSelectMelt
207
- {...common(cell.field, true)}
208
- clearable={clearableComputed}
209
- items={metaType.values}
210
- values={getMultiValues(value)}
211
- on:selected={(e) => {
212
- dispatchSelected(e.detail)
213
- }}
214
- />
215
- {:else if metaType.values.length <= (cell.field?.options.styleRadioUntil ?? 3) && !clearableComputed}
216
- <SelectRadio
217
- {...common(cell.field, true)}
218
- items={metaType.values}
219
- value={value?.id || value}
220
- on:selected={(e) => dispatchSelected(e.detail)}
221
- />
222
- {:else}
223
- <SelectMelt
224
- {focus}
225
- {...common(cell.field, true)}
226
- clearable={clearableComputed}
227
- items={metaType.values}
228
- value={value?.id || value}
229
- on:selected={(e) => dispatchSelected(e.detail)}
230
- on:issue={(e) => {
231
- error = e.detail
232
- }}
233
- />
234
- {/if}
235
- {:else if metaType.subKind === 'checkbox'}
236
- <div class="grid content-center items-center pl-4">
237
- <input
238
- type="checkbox"
239
- {...{ ...common(cell.field), required: undefined }}
240
- class="checkbox"
241
- checked={value}
242
- on:input={(e) => {
243
- // @ts-ignore
244
- value = e.target.checked
245
- dispatchSelected(value)
246
- }}
247
- />
248
- </div>
249
- {:else if metaType.subKind === 'text' || metaType.subKind === 'email' || metaType.subKind === 'password' || metaType.subKind === 'dateOnly' || metaType.subKind === 'number'}
250
- <div class="input input-bordered inline-flex w-full items-center pl-2">
251
- <Input
252
- {focus}
253
- {...common(cell.field)}
254
- autocomplete="off"
255
- class={tw(
256
- `join-item placeholder:text-base-content/30 w-full bg-transparent`,
257
- metaType.subKind === 'number' && 'text-end',
258
- )}
259
- type={metaType.subKind.replaceAll('dateOnly', 'date')}
260
- value={toInput(cell.field, value)}
261
- {withDedounce}
262
- on:input={(e) => {
263
- // @ts-ignore
264
- value = fromInput(cell.field, e.detail.value)
265
- dispatchSelected(value)
266
- }}
267
- {...$$restProps}
268
- />
269
- {calcSuffix(value)}
270
- </div>
271
- {:else if metaType.subKind === 'textarea'}
272
- <Textarea
273
- {focus}
274
- {...common(cell.field)}
275
- value={toInput(cell.field, value)}
276
- on:input={(e) => {
277
- // @ts-ignore
278
- value = fromInput(cell.field, e.detail.value)
279
- }}
280
- />
281
- {:else}
282
- <!-- This shoud NEVER be displayed -->
283
- <span class="text-error flex items-center pl-2"
284
- >Type "{cell.field?.inputType}" not managed!</span
285
- >
286
- {/if}
146
+ {@const clearableComputed =
147
+ cell.clearable || clearable || (mode === 'filtre' && clearable === undefined)}
148
+ {#if isViewMode(mode, cell.field)}
149
+ <span class="input-bordered flex items-center pl-2 pr-4">
150
+ {#if cell.field?.inputType === 'checkbox'}
151
+ <input type="checkbox" {...common(cell.field)} class="checkbox ml-2" disabled checked={value} />
152
+ {:else if metaType.kind === 'relation'}
153
+ {@const item = getEntityDisplayValue(metaType.repoTarget, value)}
154
+ <div class={tw('flex items-center gap-4', 'h-12', 'pl-2')}>
155
+ <LinkPlus {item}></LinkPlus>
156
+ </div>
157
+ {:else if metaType.kind === 'enum'}
158
+ {@const v = displayWithDefaultAndSuffix(cell.field, value)}
159
+ <div class="ml-2 flex h-12 items-center gap-4">
160
+ {#if value?.icon}
161
+ <Icon {...value.icon} />
162
+ {/if}
163
+ <Clipboardable value={v}>{v}</Clipboardable>
164
+ </div>
165
+ {:else}
166
+ {@const v = displayWithDefaultAndSuffix(cell.field, value)}
167
+ <div
168
+ class="ml-2 flex h-12 w-full items-center {metaType.subKind === 'number' ? 'justify-end' : ''}"
169
+ >
170
+ <Clipboardable value={v}>{v}</Clipboardable>
171
+ </div>
172
+ {/if}
173
+ </span>
174
+ {:else if metaType.kind === 'relation'}
175
+ {#if metaType.field.options.multiSelect}
176
+ <MultiSelectMelt
177
+ {...common(cell.field, true)}
178
+ clearable={clearableComputed}
179
+ loadOptions={async (str) => await getLoadOptions(cellsValues, str)}
180
+ values={value}
181
+ on:selected={(e) => dispatchSelected(e.detail)}
182
+ />
183
+ {:else}
184
+ <!-- {items} -->
185
+ <SelectMelt
186
+ {focus}
187
+ {...common(cell.field, true)}
188
+ clearable={clearableComputed}
189
+ loadOptions={async (str) => await getLoadOptions(cellsValues, str)}
190
+ value={value?.id || value}
191
+ on:selected={(e) => dispatchSelected(e.detail)}
192
+ on:issue={(e) => {
193
+ error = e.detail
194
+ }}
195
+ createOptionWhenNoResult={!!cell.field?.options.createOptionWhenNoResult}
196
+ on:createRequest
197
+ />
198
+ {/if}
199
+ {:else if metaType.kind === 'enum'}
200
+ {#if metaType.field.options.multiSelect || metaType.subKind === 'multi'}
201
+ <MultiSelectMelt
202
+ {...common(cell.field, true)}
203
+ clearable={clearableComputed}
204
+ items={metaType.values}
205
+ values={getMultiValues(value)}
206
+ on:selected={(e) => {
207
+ dispatchSelected(e.detail)
208
+ }}
209
+ />
210
+ {:else if metaType.values.length <= (cell.field?.options.styleRadioUntil ?? 3) && !clearableComputed}
211
+ <SelectRadio
212
+ {...common(cell.field, true)}
213
+ items={metaType.values}
214
+ value={value?.id || value}
215
+ on:selected={(e) => dispatchSelected(e.detail)}
216
+ />
217
+ {:else}
218
+ <SelectMelt
219
+ {focus}
220
+ {...common(cell.field, true)}
221
+ clearable={clearableComputed}
222
+ items={metaType.values}
223
+ value={value?.id || value}
224
+ on:selected={(e) => dispatchSelected(e.detail)}
225
+ on:issue={(e) => {
226
+ error = e.detail
227
+ }}
228
+ />
229
+ {/if}
230
+ {:else if metaType.subKind === 'checkbox'}
231
+ <div class="grid content-center items-center pl-4">
232
+ <input
233
+ type="checkbox"
234
+ {...{ ...common(cell.field), required: undefined }}
235
+ class="checkbox"
236
+ checked={value}
237
+ on:input={(e) => {
238
+ // @ts-ignore
239
+ value = e.target.checked
240
+ dispatchSelected(value)
241
+ }}
242
+ />
243
+ </div>
244
+ {:else if metaType.subKind === 'text' || metaType.subKind === 'email' || metaType.subKind === 'password' || metaType.subKind === 'dateOnly' || metaType.subKind === 'number'}
245
+ <div class="input input-bordered inline-flex w-full items-center pl-2">
246
+ <Input
247
+ {focus}
248
+ {...common(cell.field)}
249
+ autocomplete="off"
250
+ class={tw(
251
+ `join-item placeholder:text-base-content/30 w-full bg-transparent`,
252
+ metaType.subKind === 'number' && 'text-end',
253
+ )}
254
+ type={metaType.subKind.replaceAll('dateOnly', 'date')}
255
+ value={toInput(cell.field, value)}
256
+ {withDedounce}
257
+ on:input={(e) => {
258
+ // @ts-ignore
259
+ value = fromInput(cell.field, e.detail.value)
260
+ dispatchSelected(value)
261
+ }}
262
+ {...$$restProps}
263
+ />
264
+ {calcSuffix(value)}
265
+ </div>
266
+ {:else if metaType.subKind === 'textarea'}
267
+ <Textarea
268
+ {focus}
269
+ {...common(cell.field)}
270
+ value={toInput(cell.field, value)}
271
+ on:input={(e) => {
272
+ // @ts-ignore
273
+ value = fromInput(cell.field, e.detail.value)
274
+ }}
275
+ />
276
+ {:else}
277
+ <!-- This shoud NEVER be displayed -->
278
+ <span class="text-error flex items-center pl-2">Type "{cell.field?.inputType}" not managed!</span>
279
+ {/if}
287
280
  </FieldContainer>
@@ -9,9 +9,9 @@ declare class __sveltets_Render<T extends Record<any, any>> {
9
9
  cellsValues?: any;
10
10
  withDedounce?: boolean | undefined;
11
11
  error?: string | undefined;
12
- mode?: ("edit" | "view" | "filtre") | undefined;
12
+ mode?: "edit" | "view" | "filtre" | undefined;
13
13
  focus?: boolean | undefined;
14
- clearable?: boolean | undefined;
14
+ clearable?: boolean | undefined | undefined;
15
15
  disabled?: boolean | undefined;
16
16
  };
17
17
  events(): {
@@ -54,42 +54,42 @@ function isToFocus(currentKey, focusKey2, i) {
54
54
  </script>
55
55
 
56
56
  {#each cells as cell, i}
57
- {@const focus = isToFocus(cell.field?.key, focusKey, i)}
58
- {#if shouldHide(cell, mode)}
59
- <!-- Do nothing -->
60
- {:else if cell.field && !cell.field.includedInApi($store.item)}
61
- <!-- Do nothing, but keep the class... -->
62
- <div class={cell.class}></div>
63
- {:else}
64
- <div class={cell.class}>
65
- {#if cell.kind === 'header'}
66
- <span>{cell.header}</span>
67
- {:else if cell.field && (!$store || $store.loading)}
68
- <!-- If the store is not ready mdiYeast, or in loading... -->
69
- <FieldContainer label={cell.field.caption} forId={cell.field.key}>
70
- <Loading
71
- class={tw(
72
- `mx-4 my-3 h-6`,
73
- size[parseInt((((i + 1) * Math.random() * size.length) % size.length).toString())],
74
- )}
75
- />
76
- </FieldContainer>
77
- {:else if cell.kind === 'slot'}
78
- <slot name="field" field={cell.field} {focus} />
79
- {:else if cell.field && $store.item}
80
- <Field
81
- mode={modeToUse(cell, mode)}
82
- {cell}
83
- cellsValues={$store.item}
84
- bind:value={$store.item[cell.field.key]}
85
- error={getError($store.errors, cell.field)}
86
- {focus}
87
- on:createRequest
88
- />
89
- <!-- disabled={isDisableFieldDynamic(cell)} -->
90
- {:else}
91
- FieldGroup : Case not handled
92
- {/if}
93
- </div>
94
- {/if}
57
+ {@const focus = isToFocus(cell.field?.key, focusKey, i)}
58
+ {#if shouldHide(cell, mode)}
59
+ <!-- Do nothing -->
60
+ {:else if cell.field && !cell.field.includedInApi($store.item)}
61
+ <!-- Do nothing, but keep the class... -->
62
+ <div class={cell.class}></div>
63
+ {:else}
64
+ <div class={cell.class}>
65
+ {#if cell.kind === 'header'}
66
+ <span>{cell.header}</span>
67
+ {:else if cell.field && (!$store || $store.loading)}
68
+ <!-- If the store is not ready mdiYeast, or in loading... -->
69
+ <FieldContainer label={cell.field.caption} forId={cell.field.key}>
70
+ <Loading
71
+ class={tw(
72
+ `mx-4 my-3 h-6`,
73
+ size[parseInt((((i + 1) * Math.random() * size.length) % size.length).toString())],
74
+ )}
75
+ />
76
+ </FieldContainer>
77
+ {:else if cell.kind === 'slot'}
78
+ <slot name="field" field={cell.field} {focus} />
79
+ {:else if cell.field && $store.item}
80
+ <Field
81
+ mode={modeToUse(cell, mode)}
82
+ {cell}
83
+ cellsValues={$store.item}
84
+ bind:value={$store.item[cell.field.key]}
85
+ error={getError($store.errors, cell.field)}
86
+ {focus}
87
+ on:createRequest
88
+ />
89
+ <!-- disabled={isDisableFieldDynamic(cell)} -->
90
+ {:else}
91
+ FieldGroup : Case not handled
92
+ {/if}
93
+ </div>
94
+ {/if}
95
95
  {/each}