@humandialog/forms.svelte 0.4.44 → 0.5.1

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 (116) hide show
  1. package/components/Fab.svelte +60 -48
  2. package/components/Floating_container.svelte +5 -4
  3. package/components/Floating_container.svelte.d.ts +2 -2
  4. package/components/Grid.menu.svelte +13 -9
  5. package/components/Grid.menu.svelte.d.ts +2 -2
  6. package/components/button.svelte +4 -4
  7. package/components/checkbox.svelte +12 -10
  8. package/components/checkbox.svelte.d.ts +1 -0
  9. package/components/combo/combo.d.ts +1 -1
  10. package/components/combo/combo.js +1 -1
  11. package/components/combo/combo.source.svelte +2 -2
  12. package/components/combo/combo.source.svelte.d.ts +1 -1
  13. package/components/combo/combo.svelte +94 -62
  14. package/components/combo/combo.svelte.d.ts +7 -4
  15. package/components/contextmenu.svelte +20 -19
  16. package/components/contextmenu.svelte.d.ts +5 -5
  17. package/components/date.svelte +165 -25
  18. package/components/date.svelte.d.ts +3 -2
  19. package/components/delayed.spinner.svelte +2 -2
  20. package/components/document/internal/palette.row.svelte +3 -3
  21. package/components/document/internal/palette.svelte +2 -2
  22. package/components/document/internal/palette.svelte.d.ts +1 -1
  23. package/components/document/rich.edit.svelte +307 -35
  24. package/components/document/rich.edit.svelte.d.ts +9 -0
  25. package/components/edit.field.svelte +17 -15
  26. package/components/edit.field.svelte.d.ts +2 -1
  27. package/components/file.loader.svelte +6 -6
  28. package/components/file.loader.svelte.d.ts +10 -10
  29. package/components/icon.svelte +2 -2
  30. package/components/icon.svelte.d.ts +3 -3
  31. package/components/input.text.svelte +3 -3
  32. package/components/inputbox.ltop.svelte +19 -17
  33. package/components/inputbox.ltop.svelte.d.ts +4 -2
  34. package/components/kanban/Kanban.d.ts +23 -0
  35. package/components/kanban/Kanban.js +23 -0
  36. package/components/kanban/internal/kanban.card.svelte +158 -0
  37. package/components/kanban/internal/kanban.card.svelte.d.ts +35 -0
  38. package/components/kanban/internal/kanban.column.svelte +181 -0
  39. package/components/kanban/internal/kanban.column.svelte.d.ts +51 -0
  40. package/components/kanban/internal/kanban.inserter.svelte +24 -0
  41. package/components/kanban/internal/kanban.inserter.svelte.d.ts +18 -0
  42. package/components/kanban/internal/kanban.move.menu.svelte +146 -0
  43. package/components/kanban/internal/kanban.move.menu.svelte.d.ts +19 -0
  44. package/components/kanban/kanban.callbacks.svelte +15 -0
  45. package/components/kanban/kanban.callbacks.svelte.d.ts +21 -0
  46. package/components/kanban/kanban.column.svelte +20 -0
  47. package/components/kanban/kanban.column.svelte.d.ts +21 -0
  48. package/components/kanban/kanban.summary.svelte +5 -0
  49. package/components/kanban/kanban.summary.svelte.d.ts +16 -0
  50. package/components/kanban/kanban.svelte +156 -0
  51. package/components/kanban/kanban.svelte.d.ts +43 -0
  52. package/components/kanban/kanban.title.svelte +8 -0
  53. package/components/kanban/kanban.title.svelte.d.ts +17 -0
  54. package/components/list/List.d.ts +4 -2
  55. package/components/list/List.js +4 -2
  56. package/components/list/internal/list.element.props.svelte +134 -0
  57. package/components/list/internal/list.element.props.svelte.d.ts +21 -0
  58. package/components/list/internal/list.element.summary.svelte +40 -0
  59. package/components/list/internal/list.element.summary.svelte.d.ts +24 -0
  60. package/components/list/internal/list.element.svelte +100 -173
  61. package/components/list/internal/list.element.svelte.d.ts +4 -4
  62. package/components/list/internal/list.inserter.svelte +9 -6
  63. package/components/list/internal/list.inserter.svelte.d.ts +1 -1
  64. package/components/list/list.combo.svelte +2 -2
  65. package/components/list/list.combo.svelte.d.ts +1 -1
  66. package/components/list/list.date.svelte +3 -3
  67. package/components/list/list.date.svelte.d.ts +1 -1
  68. package/components/list/list.inserter.svelte +1 -1
  69. package/components/list/list.summary.svelte +2 -2
  70. package/components/list/list.summary.svelte.d.ts +1 -1
  71. package/components/list/list.svelte +175 -37
  72. package/components/list/list.svelte.d.ts +27 -10
  73. package/components/list/list.title.svelte +6 -2
  74. package/components/list/list.title.svelte.d.ts +3 -1
  75. package/components/menu.d.ts +4 -4
  76. package/components/menu.js +15 -13
  77. package/components/radio.svelte +12 -10
  78. package/components/radio.svelte.d.ts +1 -0
  79. package/components/sidebar/sidebar.group.svelte +1 -13
  80. package/components/sidebar/sidebar.group.svelte.d.ts +0 -4
  81. package/components/sidebar/sidebar.item.svelte +13 -13
  82. package/components/sidebar/sidebar.list.svelte +68 -0
  83. package/components/sidebar/sidebar.list.svelte.d.ts +33 -0
  84. package/components/sidebar/sidebar.svelte +1 -1
  85. package/components/simple.table.svelte +15 -15
  86. package/components/simple.table.svelte.d.ts +2 -2
  87. package/components/table/_template.table.svelte +17 -17
  88. package/components/table/_template.table.svelte.d.ts +2 -2
  89. package/components/table/table.svelte +31 -31
  90. package/components/table/table.svelte.d.ts +8 -8
  91. package/components/textarea.ltop.svelte +4 -4
  92. package/components/tile.title.svelte +6 -6
  93. package/desk.svelte +13 -13
  94. package/form.box.svelte +2 -2
  95. package/horizontal.toolbar.svelte +25 -16
  96. package/horizontal.toolbar.svelte.d.ts +2 -2
  97. package/index.d.ts +14 -5
  98. package/index.js +14 -5
  99. package/modal.svelte +17 -17
  100. package/modal.svelte.d.ts +4 -4
  101. package/operations.svelte +42 -27
  102. package/package.json +14 -1
  103. package/page.svelte +115 -124
  104. package/page.svelte.d.ts +4 -4
  105. package/stores.d.ts +9 -7
  106. package/stores.js +17 -9
  107. package/tenant.members.svelte +44 -44
  108. package/tenant.members.svelte.d.ts +10 -10
  109. package/tile.svelte +3 -3
  110. package/tiles.vertical.row.svelte +1 -1
  111. package/updates.d.ts +3 -3
  112. package/updates.js +35 -3
  113. package/utils.d.ts +22 -13
  114. package/utils.js +201 -51
  115. package/vertical.toolbar.svelte +22 -13
  116. package/vertical.toolbar.svelte.d.ts +2 -2
@@ -1,19 +1,21 @@
1
1
  <script>import { getContext } from "svelte";
2
- import { data_tick_store, context_items_store, context_types_store } from "../stores.js";
3
- import { inform_modification, push_changes } from "../updates.js";
4
- import { parse_width_directive, is_device_smaller_than } from "../utils.js";
2
+ import { data_tick_store, contextItemsStore, contextTypesStore } from "../stores.js";
3
+ import { informModification, pushChanges } from "../updates.js";
4
+ import { parseWidthDirective, isDeviceSmallerThan } from "../utils.js";
5
+ import FaChevronDown from "svelte-icons/fa/FaChevronDown.svelte";
5
6
  export let self = null;
6
7
  export let a = "";
7
8
  export let context = "";
8
9
  export let typename = "";
9
10
  export let date = null;
10
- export let on_select = void 0;
11
+ export let onSelect = void 0;
11
12
  export let type = "date";
12
13
  export let changed = void 0;
13
14
  export let s = "sm";
14
15
  export let c = "";
15
16
  export let compact = false;
16
- export let in_context = "sel";
17
+ export let inContext = "sel";
18
+ export let pushChangesImmediately = true;
17
19
  let on_hide_callback = void 0;
18
20
  export function show(event, hide_callback) {
19
21
  if (event) {
@@ -26,7 +28,7 @@ export function show(event, hide_callback) {
26
28
  on_hide_callback = void 0;
27
29
  if (input_element) {
28
30
  input_element.focus();
29
- if (is_device_smaller_than("sm")) {
31
+ if (isDeviceSmallerThan("sm")) {
30
32
  input_element.click();
31
33
  }
32
34
  if ("showPicker" in HTMLInputElement.prototype) {
@@ -39,46 +41,49 @@ let input_pt = "pt-0.5";
39
41
  let input_pb = "pb-1";
40
42
  let font_size = "text-lg sm:text-sm";
41
43
  let line_h = "h-7 sm:h-5";
44
+ let chevron_mt = "mt-2 sm:mt-1";
42
45
  switch (s) {
43
46
  case "md":
44
47
  input_pt = "pt-2.5";
45
48
  input_pb = "pb-2.5";
46
49
  font_size = "text-lg sm:text-sm";
47
50
  line_h = "h-7 sm:h-5";
51
+ chevron_mt = "mt-2 sm:mt-1";
48
52
  break;
49
53
  case "xs":
50
54
  input_pt = "pt-0.5";
51
55
  input_pb = "pb-0.5";
52
56
  font_size = "text-base sm:text-xs";
53
57
  line_h = "h-6 sm:h-4";
58
+ chevron_mt = "mt-1.5 sm:mt-0.5";
54
59
  break;
55
60
  }
56
61
  let item = null;
57
62
  let user_class = $$restProps.class ?? "";
58
63
  let value = null;
59
64
  let rValue = "";
65
+ let pretty_value = "";
60
66
  let ctx = context ? context : getContext("ctx");
61
- let cs = parse_width_directive(c);
67
+ let cs = parseWidthDirective(c);
62
68
  let style;
63
69
  let input_element = void 0;
64
- let background_class = is_compact ? "bg-slate-900/10 dark:bg-slate-100/10 rounded-lg" : "";
65
70
  if (!is_compact) {
66
- style = `bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg
67
- focus:ring-primary-600 focus:border-primary-600 block w-full ${input_pb} ${input_pt} px-2.5 dark:bg-gray-700
68
- dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-primary-500 dark:focus:border-primary-500`;
71
+ style = `bg-stone-50 border border-stone-300 text-stone-900 text-sm rounded-lg
72
+ focus:ring-primary-600 focus:border-primary-600 block w-full ${input_pb} ${input_pt} px-2.5 dark:bg-stone-700
73
+ dark:border-stone-600 dark:placeholder-stone-400 dark:text-white dark:focus:ring-primary-500 dark:focus:border-primary-500`;
69
74
  } else {
70
75
  style = `${font_size}`;
71
76
  }
72
77
  let can_be_activated = true;
73
78
  let last_tick = -1;
74
79
  $:
75
- setup($data_tick_store, $context_items_store);
80
+ setup($data_tick_store, $contextItemsStore);
76
81
  function setup(...args) {
77
82
  last_tick = data_tick_store;
78
83
  if (!date) {
79
- item = self ?? $context_items_store[ctx];
84
+ item = self ?? $contextItemsStore[ctx];
80
85
  if (!typename)
81
- typename = $context_types_store[ctx];
86
+ typename = $contextTypesStore[ctx];
82
87
  if (!typename) {
83
88
  if (item.$type)
84
89
  typename = item.$type;
@@ -95,14 +100,127 @@ function setup(...args) {
95
100
  value = date;
96
101
  if (is_compact) {
97
102
  can_be_activated = false;
98
- let contexts = in_context.split(" ");
103
+ let contexts = inContext.split(" ");
99
104
  contexts.forEach((ctx2) => {
100
- if ($context_items_store[ctx2] == item)
105
+ if ($contextItemsStore[ctx2] == item)
101
106
  can_be_activated = true;
102
107
  });
103
108
  } else
104
109
  can_be_activated = true;
105
110
  rValue = get_formatted_date(value);
111
+ pretty_value = get_pretty_value(value);
112
+ }
113
+ function get_pretty_value(d) {
114
+ if (!d)
115
+ return "";
116
+ let month = d.getMonth();
117
+ let day = d.getDate();
118
+ let year = d.getFullYear();
119
+ const now = new Date(Date.now());
120
+ let current_month = now.getMonth();
121
+ let current_day = now.getDate();
122
+ let current_year = now.getFullYear();
123
+ let is_far_date = true;
124
+ const far_date_threshold = 14 * 24 * 60 * 60 * 1e3;
125
+ if (Math.abs(now.getTime() - d.getTime()) < far_date_threshold)
126
+ is_far_date = false;
127
+ if (year != current_year) {
128
+ if (is_far_date)
129
+ return `${day} ${month_name(month)} ${year}`;
130
+ else
131
+ return `${day_name(d.getDay())}, ${day} ${month_name(month)}`;
132
+ }
133
+ if (month != current_month) {
134
+ if (is_far_date)
135
+ return `${day} ${month_name(month)}`;
136
+ else
137
+ return `${day_name(d.getDay())}, ${day} ${month_name(month)}`;
138
+ } else {
139
+ let day_of_week = d.getDay();
140
+ let current_day_of_week = now.getDay();
141
+ if (day_of_week == 0)
142
+ day_of_week = 7;
143
+ if (current_day_of_week == 0)
144
+ current_day_of_week = 7;
145
+ let days_diff = day - current_day;
146
+ if (days_diff == 0)
147
+ return "Today";
148
+ else if (days_diff == 1)
149
+ return "Tomorrow";
150
+ else if (days_diff == -1)
151
+ return "Yesterday";
152
+ else if (days_diff > 0 && days_diff <= 7) {
153
+ if (day_of_week > current_day_of_week)
154
+ return day_name(day_of_week);
155
+ else
156
+ return `${day_name(day_of_week)}, ${d.getDate()} ${month_name(d.getMonth())}`;
157
+ } else if (days_diff > 0) {
158
+ if (is_far_date)
159
+ return `${d.getDate()} ${month_name(d.getMonth())}`;
160
+ else
161
+ return `${day_name(day_of_week)}, ${d.getDate()} ${month_name(d.getMonth())}`;
162
+ } else if (days_diff < 0 && days_diff > -7) {
163
+ if (day_of_week < current_day_of_week)
164
+ return day_name(day_of_week);
165
+ else
166
+ return `${day_name(day_of_week)}, ${d.getDate()} ${month_name(d.getMonth())}`;
167
+ } else {
168
+ if (is_far_date)
169
+ return `${d.getDate()} ${month_name(d.getMonth())}`;
170
+ else
171
+ return `${day_name(day_of_week)}, ${d.getDate()} ${month_name(d.getMonth())}`;
172
+ }
173
+ }
174
+ }
175
+ function day_name(d) {
176
+ switch (d) {
177
+ case 0:
178
+ return "Sun";
179
+ case 1:
180
+ return "Mon";
181
+ case 2:
182
+ return "Tue";
183
+ case 3:
184
+ return "Wed";
185
+ case 4:
186
+ return "Thu";
187
+ case 5:
188
+ return "Fri";
189
+ case 6:
190
+ return "Sat";
191
+ case 7:
192
+ return "Sun";
193
+ }
194
+ return "";
195
+ }
196
+ function month_name(m) {
197
+ switch (m) {
198
+ case 0:
199
+ return "Jan";
200
+ case 1:
201
+ return "Feb";
202
+ case 2:
203
+ return "Mar";
204
+ case 3:
205
+ return "Apr";
206
+ case 4:
207
+ return "May";
208
+ case 5:
209
+ return "Jun";
210
+ case 6:
211
+ return "Jul";
212
+ case 7:
213
+ return "Aug";
214
+ case 8:
215
+ return "Sep";
216
+ case 9:
217
+ return "Oct";
218
+ case 10:
219
+ return "Nov";
220
+ case 11:
221
+ return "Dec";
222
+ }
223
+ return "";
106
224
  }
107
225
  function get_formatted_date(d) {
108
226
  if (!d)
@@ -130,17 +248,18 @@ async function on_changed() {
130
248
  value = null;
131
249
  else
132
250
  value = new Date(rValue);
133
- if (on_select) {
134
- await on_select(value);
251
+ if (onSelect) {
252
+ await onSelect(value);
135
253
  } else if (item != null) {
136
254
  if (value)
137
255
  item[a] = value.toISOString();
138
256
  else
139
257
  item[a] = null;
140
258
  if (typename) {
141
- inform_modification(item, a, typename);
259
+ informModification(item, a, typename);
142
260
  $data_tick_store = $data_tick_store + 1;
143
- push_changes();
261
+ if (pushChangesImmediately)
262
+ pushChanges();
144
263
  }
145
264
  if (!!changed)
146
265
  changed(value);
@@ -154,32 +273,47 @@ function blur(e) {
154
273
 
155
274
  {#if is_compact}
156
275
  <div class="inline-block relative {line_h}">
157
- <span class="dark:text-white {font_size} truncate px-2.5 {background_class}
158
- absolute left-0 top-0 h-full" >
159
- {rValue}
276
+ <div class="dark:text-stone-300 {font_size} truncate
277
+ pl-0 pr-0
278
+ h-full flex flex-row" >
279
+ <div class="grow-1 pr-2.5">
280
+ {pretty_value}
281
+ </div>
282
+
283
+ {#if can_be_activated}
284
+ <div class="no-print ml-auto w-3 h-3 {chevron_mt} text-stone-700 dark:text-stone-300">
285
+ <FaChevronDown/>
286
+ </div>
287
+ {/if}
160
288
 
161
289
  {#if can_be_activated}
162
290
  {#if type == "datetime-local"}
163
291
  <input type="datetime-local"
164
292
  class="datepicker-input"
293
+ tabindex="-1"
165
294
  on:change={on_changed}
166
295
  bind:value={rValue}
167
296
  bind:this={input_element}>
168
297
  {:else}
169
298
  <input type="date"
170
299
  class="datepicker-input"
300
+ tabindex="-1"
171
301
  on:change={on_changed}
172
302
  bind:value={rValue}
173
303
  bind:this={input_element}
174
304
  on:blur={blur}>
175
305
  {/if}
306
+
307
+
176
308
  {/if}
177
- </span>
309
+ </div>
310
+
311
+
178
312
  </div>
179
313
 
180
314
  {:else}
181
315
  {#if type == "datetime-local"}
182
- <input class=" dark:text-white {cs} {style} {line_h} px-2.5 {background_class} {user_class}"
316
+ <input class=" dark:text-white {cs} {style} {line_h} px-2.5 {user_class}"
183
317
  type="datetime-local"
184
318
  on:change={on_changed}
185
319
  bind:value={rValue}
@@ -226,5 +360,11 @@ function blur(e) {
226
360
  cursor: pointer;
227
361
  }
228
362
 
363
+ @media print
364
+ {
365
+ .no-print, .no-print *{
366
+ display: none !important;
367
+ }
368
+ }
229
369
  </style>
230
370
 
@@ -7,13 +7,14 @@ declare const __propDef: {
7
7
  context?: string | undefined;
8
8
  typename?: string | undefined;
9
9
  date?: Date | undefined;
10
- on_select?: undefined;
10
+ onSelect?: undefined;
11
11
  type?: string | undefined;
12
12
  changed?: undefined;
13
13
  s?: string | undefined;
14
14
  c?: string | undefined;
15
15
  compact?: boolean | undefined;
16
- in_context?: string | undefined;
16
+ inContext?: string | undefined;
17
+ pushChangesImmediately?: boolean | undefined;
17
18
  show?: ((event: any, hide_callback: any) => void) | undefined;
18
19
  };
19
20
  events: {
@@ -29,7 +29,7 @@ const sizes = {
29
29
  let iconsize = sizes[size];
30
30
  const colors = {
31
31
  blue: "fill-blue-600",
32
- gray: "fill-gray-600 dark:fill-gray-300",
32
+ stone: "fill-stone-600 dark:fill-stone-300",
33
33
  green: "fill-green-500",
34
34
  red: "fill-red-600",
35
35
  yellow: "fill-yellow-400",
@@ -53,7 +53,7 @@ onMount(() => {
53
53
  {#if visible}
54
54
  <svg
55
55
  role="status"
56
- class='inline -mt-px animate-spin dark:text-gray-600 {iconsize} text-gray-300 {fillColorClass} {user_class}'
56
+ class='inline -mt-px animate-spin dark:text-stone-600 {iconsize} text-stone-300 {fillColorClass} {user_class}'
57
57
  viewBox="0 0 100 101"
58
58
  fill="none"
59
59
  xmlns="http://www.w3.org/2000/svg">
@@ -8,7 +8,7 @@ let icon_placeholder_size = cmd.description ? 12 : 6;
8
8
  let icon_size = cmd.icon_size ? cmd.icon_size : icon_placeholder_size - 6;
9
9
  let cl = $$props.class ? $$props.class : "";
10
10
  $:
11
- active_class = is_highlighted ? "bg-gray-200 dark:bg-gray-700" : "";
11
+ active_class = is_highlighted ? "bg-stone-200 dark:bg-stone-700" : "";
12
12
  </script>
13
13
 
14
14
  <!-- svelte-ignore a11y-click-events-have-key-events -->
@@ -22,12 +22,12 @@ $:
22
22
  <p>{cmd.caption}</p>
23
23
  {#if cmd.description}
24
24
  {@const shortcut_width_px = cmd.shortcut ? 80 : 0}
25
- <p class="text-sm font-normal text-gray-400 dark:text-gray-500 truncate inline-block"
25
+ <p class="text-sm font-normal text-stone-400 dark:text-stone-500 truncate inline-block"
26
26
  style:max-width={`calc(${width_px-shortcut_width_px} - 3rem)`} >{cmd.description}</p>
27
27
  {/if}
28
28
  </div>
29
29
  {#if cmd.shortcut}
30
- <div class="pr-1 text-sm font-mono text-gray-500"
30
+ <div class="pr-1 text-sm font-mono text-stone-500"
31
31
  style:width={"80px"} >{cmd.shortcut}</div>
32
32
  {/if}
33
33
  </div>
@@ -102,7 +102,7 @@ function update_current_command(cmd) {
102
102
  }
103
103
  </script>
104
104
 
105
- <div class="bg-white dark:bg-gray-800 text-gray-500 dark:text-gray-400 rounded-lg border border-gray-200 dark:border-gray-700 shadow-md z-30"
105
+ <div class="not-prose bg-white dark:bg-stone-800 text-stone-500 dark:text-stone-400 rounded-lg border border-stone-200 dark:border-stone-700 shadow-md z-30"
106
106
  hidden={!visible}
107
107
  style={css_style}>
108
108
  {#if filtered_commands && filtered_commands.length}
@@ -117,7 +117,7 @@ function update_current_command(cmd) {
117
117
  />
118
118
  {/each}
119
119
  {:else}
120
- <p class="text-sm text-gray-500">No results</p>
120
+ <p class="text-sm text-stone-500">No results</p>
121
121
  {/if}
122
122
 
123
123
  </div>
@@ -20,7 +20,7 @@ declare const __propDef: {
20
20
  } & {
21
21
  [evt: string]: CustomEvent<any>;
22
22
  };
23
- slots: {};
23
+ slots: {}; /**accessor*/
24
24
  };
25
25
  export type PaletteProps = typeof __propDef.props;
26
26
  export type PaletteEvents = typeof __propDef.events;