@marianmeres/stuic 2.36.0 → 2.38.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.
@@ -1,5 +1,10 @@
1
1
  <script lang="ts" module>
2
2
  import type { Snippet } from "svelte";
3
+ import { twMerge } from "../../utils/tw-merge.js";
4
+ import { tooltip } from "../../actions/index.js";
5
+ import { isPlainObject } from "../../utils/is-plain-object.js";
6
+ import { replaceMap } from "../../utils/replace-map.js";
7
+ import type { TranslateFn } from "../../types.js";
3
8
 
4
9
  export interface Props {
5
10
  /** Content to display */
@@ -22,12 +27,28 @@
22
27
  toggleOpacity?: string;
23
28
  /** Bind reference to container element */
24
29
  el?: HTMLDivElement;
30
+ /** Optional translate function */
31
+ t?: TranslateFn;
32
+ }
33
+
34
+ // i18n ready
35
+ function t_default(
36
+ k: string,
37
+ values: false | null | undefined | Record<string, string | number> = null,
38
+ fallback: string | boolean = "",
39
+ i18nSpanWrap: boolean = true
40
+ ) {
41
+ const m: Record<string, string> = {
42
+ more: "Show more...",
43
+ less: "Show less...",
44
+ };
45
+ let out = m[k] ?? fallback ?? k;
46
+
47
+ return isPlainObject(values) ? replaceMap(out, values as any) : out;
25
48
  }
26
49
  </script>
27
50
 
28
51
  <script lang="ts">
29
- import { twMerge } from "../../utils/tw-merge.js";
30
-
31
52
  let {
32
53
  children,
33
54
  lines = 1,
@@ -39,6 +60,7 @@
39
60
  classToggle,
40
61
  toggleOpacity = "opacity-75",
41
62
  el = $bindable(),
63
+ t = t_default,
42
64
  }: Props = $props();
43
65
 
44
66
  let contentEl: HTMLDivElement | undefined;
@@ -81,6 +103,9 @@
81
103
  classToggle
82
104
  )}
83
105
  onclick={() => (expanded = !expanded)}
106
+ use:tooltip={() => ({
107
+ content: expanded ? t("less") : t("more"),
108
+ })}
84
109
  >
85
110
  {expanded ? expandedIndicator : collapsedIndicator}
86
111
  </button>
@@ -1,4 +1,5 @@
1
1
  import type { Snippet } from "svelte";
2
+ import type { TranslateFn } from "../../types.js";
2
3
  export interface Props {
3
4
  /** Content to display */
4
5
  children: Snippet;
@@ -20,6 +21,8 @@ export interface Props {
20
21
  toggleOpacity?: string;
21
22
  /** Bind reference to container element */
22
23
  el?: HTMLDivElement;
24
+ /** Optional translate function */
25
+ t?: TranslateFn;
23
26
  }
24
27
  declare const Collapsible: import("svelte").Component<Props, {}, "el" | "expanded">;
25
28
  type Collapsible = ReturnType<typeof Collapsible>;
@@ -36,6 +36,7 @@
36
36
  import { getId } from "../../utils/get-id.js";
37
37
  import { twMerge } from "../../utils/tw-merge.js";
38
38
  import { Thc, isTHCNotEmpty } from "../Thc/index.js";
39
+ import { Collapsible } from "../Collapsible/index.js";
39
40
  type THC = import("../Thc/index.js").THC;
40
41
 
41
42
  let {
@@ -183,7 +184,21 @@
183
184
  </div>
184
185
  {/if}
185
186
  {#if description}
186
- <div
187
+ <Collapsible>
188
+ <div
189
+ id={idDesc}
190
+ class={twMerge(
191
+ "desc-box",
192
+ _classCommon,
193
+ "text-sm opacity-50 cursor-pointer font-normal",
194
+ disabled && "cursor-not-allowed",
195
+ classDescBox
196
+ )}
197
+ >
198
+ {@render snippetOrThc({ id, value: description })}
199
+ </div>
200
+ </Collapsible>
201
+ <!-- <div
187
202
  id={idDesc}
188
203
  class={twMerge(
189
204
  "desc-box",
@@ -194,7 +209,7 @@
194
209
  )}
195
210
  >
196
211
  {@render snippetOrThc({ id, value: description })}
197
- </div>
212
+ </div> -->
198
213
  {/if}
199
214
  </div>
200
215
  </label>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marianmeres/stuic",
3
- "version": "2.36.0",
3
+ "version": "2.38.0",
4
4
  "files": [
5
5
  "dist",
6
6
  "!dist/**/*.test.*",