@innspel/react-native 0.9.3 → 0.9.4

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.
package/dist/index.d.cts CHANGED
@@ -354,6 +354,19 @@ declare function byggTema(vertens?: PartialTheme, palett?: 'dark' | 'light'): Te
354
354
  /** Tokenene som gjelder her. Bruk ALDRI en literal farge eller avstand i stedet. */
355
355
  declare function useTema(): Tema;
356
356
 
357
+ /**
358
+ * Det verten får vite når et innspill er sendt (F26). Sakens nummer, aldri innsenderens
359
+ * identitet — nummeret er det hun alt ser i kvitteringen. `queued` når nettet var borte
360
+ * og innspillet ligger i køen: hun trykket Send, og det teller. «Ja, jeg også» på en kjent
361
+ * feil gir ikke dette kallet — det er Reach, ikke en ny sak.
362
+ */
363
+ interface SubmittedInfo {
364
+ type: 'feil' | 'onske';
365
+ queued: boolean;
366
+ /** Finnes når saken er opprettet hos tjeneren; mangler i køen. */
367
+ id?: string;
368
+ }
369
+
357
370
  interface InnspelKontekst {
358
371
  client: InnspelClient;
359
372
  /** Åpner widgeten. Samme som `client.openFeedback()`. */
@@ -382,7 +395,7 @@ interface InnspelKontekst {
382
395
  * }
383
396
  * ```
384
397
  */
385
- declare function InnspelProvider({ client, children, theme, colorScheme, tenantName, screenshot, imageStepNote, }: {
398
+ declare function InnspelProvider({ client, children, theme, colorScheme, tenantName, screenshot, imageStepNote, onSubmitted, }: {
386
399
  client: InnspelClient;
387
400
  children?: React.ReactNode;
388
401
  /** Vertens egne tokens. Alt som utelates faller tilbake på Innspels tema. */
@@ -403,6 +416,14 @@ declare function InnspelProvider({ client, children, theme, colorScheme, tenantN
403
416
  * brukerne sine; plattformen eier ikke den setningen.
404
417
  */
405
418
  imageStepNote?: ImageStepNote;
419
+ /**
420
+ * Kalles når et innspill er sendt — eller lagt i køen fordi nettet var borte (F26).
421
+ * `type`, `queued`, og `id` når saken finnes hos tjeneren. Ingen identitet: saksnummeret
422
+ * er sakens, og det innsenderen alt ser i kvitteringen. Bruk det til å hente tellingen
423
+ * på «Mine innspill» på nytt, eller til å be om varsler i det riktige øyeblikket —
424
+ * rett etter første innsending, ikke ved oppstart. Kalles ikke for «Ja, jeg også».
425
+ */
426
+ onSubmitted?: (info: SubmittedInfo) => void;
406
427
  }): React.JSX.Element;
407
428
  /**
408
429
  * Klienten og `open` fra nærmeste {@link InnspelProvider}.
@@ -568,9 +589,7 @@ declare const tekst: {
568
589
  readonly lenketTil: (tittel: string) => string;
569
590
  readonly fjernLenke: "Fjern lenken til den kjente feilen";
570
591
  readonly leggVedSkjermbilde: "Legg ved skjermbilde";
571
- readonly leggVedHint: "Bildet tas først når du trykker — du ser det før det sendes.";
572
592
  readonly velgBilde: "Velg bilde";
573
- readonly velgBildeHint: "Fra bildene dine. Du ser det og kan maskere det før det sendes.";
574
593
  readonly skjermbildeUnderGalleri: "Bildet er fra galleriet. Appen maskerer ingenting i det for deg — mal over det som ikke skal med.";
575
594
  readonly bildeFeilet: "kunne ikke hente bildet. Du kan sende uten.";
576
595
  readonly skjermbildeTittel: "Se over bildet";
@@ -708,4 +727,4 @@ declare const lofte: {
708
727
  readonly venterNett: "Sendes automatisk når du er på nett — kvitteringen kommer da.";
709
728
  };
710
729
 
711
- export { type AsyncStorageLike, type CaptureOptions, type CaptureRefFn, type ImageStepNote, type InnspelColors, InnspelPrivate, InnspelProgram, InnspelProvider, type InnspelTheme, type PartialTheme, type PickImageFn, type ScreenshotAdapter, type ScreenshotAdapterOptions, type ScreenshotCapture, type StatusVisning, type Tema, byggTema, createMemoryStorage, createScreenshotAdapter, createStorage, t as darkTokens, light, lofte, screenRules, statusVisning, tekst, useInnspel, useTema, venterVisning };
730
+ export { type AsyncStorageLike, type CaptureOptions, type CaptureRefFn, type ImageStepNote, type InnspelColors, InnspelPrivate, InnspelProgram, InnspelProvider, type InnspelTheme, type PartialTheme, type PickImageFn, type ScreenshotAdapter, type ScreenshotAdapterOptions, type ScreenshotCapture, type StatusVisning, type SubmittedInfo, type Tema, byggTema, createMemoryStorage, createScreenshotAdapter, createStorage, t as darkTokens, light, lofte, screenRules, statusVisning, tekst, useInnspel, useTema, venterVisning };
package/dist/index.d.ts CHANGED
@@ -354,6 +354,19 @@ declare function byggTema(vertens?: PartialTheme, palett?: 'dark' | 'light'): Te
354
354
  /** Tokenene som gjelder her. Bruk ALDRI en literal farge eller avstand i stedet. */
355
355
  declare function useTema(): Tema;
356
356
 
357
+ /**
358
+ * Det verten får vite når et innspill er sendt (F26). Sakens nummer, aldri innsenderens
359
+ * identitet — nummeret er det hun alt ser i kvitteringen. `queued` når nettet var borte
360
+ * og innspillet ligger i køen: hun trykket Send, og det teller. «Ja, jeg også» på en kjent
361
+ * feil gir ikke dette kallet — det er Reach, ikke en ny sak.
362
+ */
363
+ interface SubmittedInfo {
364
+ type: 'feil' | 'onske';
365
+ queued: boolean;
366
+ /** Finnes når saken er opprettet hos tjeneren; mangler i køen. */
367
+ id?: string;
368
+ }
369
+
357
370
  interface InnspelKontekst {
358
371
  client: InnspelClient;
359
372
  /** Åpner widgeten. Samme som `client.openFeedback()`. */
@@ -382,7 +395,7 @@ interface InnspelKontekst {
382
395
  * }
383
396
  * ```
384
397
  */
385
- declare function InnspelProvider({ client, children, theme, colorScheme, tenantName, screenshot, imageStepNote, }: {
398
+ declare function InnspelProvider({ client, children, theme, colorScheme, tenantName, screenshot, imageStepNote, onSubmitted, }: {
386
399
  client: InnspelClient;
387
400
  children?: React.ReactNode;
388
401
  /** Vertens egne tokens. Alt som utelates faller tilbake på Innspels tema. */
@@ -403,6 +416,14 @@ declare function InnspelProvider({ client, children, theme, colorScheme, tenantN
403
416
  * brukerne sine; plattformen eier ikke den setningen.
404
417
  */
405
418
  imageStepNote?: ImageStepNote;
419
+ /**
420
+ * Kalles når et innspill er sendt — eller lagt i køen fordi nettet var borte (F26).
421
+ * `type`, `queued`, og `id` når saken finnes hos tjeneren. Ingen identitet: saksnummeret
422
+ * er sakens, og det innsenderen alt ser i kvitteringen. Bruk det til å hente tellingen
423
+ * på «Mine innspill» på nytt, eller til å be om varsler i det riktige øyeblikket —
424
+ * rett etter første innsending, ikke ved oppstart. Kalles ikke for «Ja, jeg også».
425
+ */
426
+ onSubmitted?: (info: SubmittedInfo) => void;
406
427
  }): React.JSX.Element;
407
428
  /**
408
429
  * Klienten og `open` fra nærmeste {@link InnspelProvider}.
@@ -568,9 +589,7 @@ declare const tekst: {
568
589
  readonly lenketTil: (tittel: string) => string;
569
590
  readonly fjernLenke: "Fjern lenken til den kjente feilen";
570
591
  readonly leggVedSkjermbilde: "Legg ved skjermbilde";
571
- readonly leggVedHint: "Bildet tas først når du trykker — du ser det før det sendes.";
572
592
  readonly velgBilde: "Velg bilde";
573
- readonly velgBildeHint: "Fra bildene dine. Du ser det og kan maskere det før det sendes.";
574
593
  readonly skjermbildeUnderGalleri: "Bildet er fra galleriet. Appen maskerer ingenting i det for deg — mal over det som ikke skal med.";
575
594
  readonly bildeFeilet: "kunne ikke hente bildet. Du kan sende uten.";
576
595
  readonly skjermbildeTittel: "Se over bildet";
@@ -708,4 +727,4 @@ declare const lofte: {
708
727
  readonly venterNett: "Sendes automatisk når du er på nett — kvitteringen kommer da.";
709
728
  };
710
729
 
711
- export { type AsyncStorageLike, type CaptureOptions, type CaptureRefFn, type ImageStepNote, type InnspelColors, InnspelPrivate, InnspelProgram, InnspelProvider, type InnspelTheme, type PartialTheme, type PickImageFn, type ScreenshotAdapter, type ScreenshotAdapterOptions, type ScreenshotCapture, type StatusVisning, type Tema, byggTema, createMemoryStorage, createScreenshotAdapter, createStorage, t as darkTokens, light, lofte, screenRules, statusVisning, tekst, useInnspel, useTema, venterVisning };
730
+ export { type AsyncStorageLike, type CaptureOptions, type CaptureRefFn, type ImageStepNote, type InnspelColors, InnspelPrivate, InnspelProgram, InnspelProvider, type InnspelTheme, type PartialTheme, type PickImageFn, type ScreenshotAdapter, type ScreenshotAdapterOptions, type ScreenshotCapture, type StatusVisning, type SubmittedInfo, type Tema, byggTema, createMemoryStorage, createScreenshotAdapter, createStorage, t as darkTokens, light, lofte, screenRules, statusVisning, tekst, useInnspel, useTema, venterVisning };
package/dist/index.js CHANGED
@@ -798,9 +798,7 @@ var tekst = {
798
798
  fjernLenke: "Fjern lenken til den kjente feilen",
799
799
  // 2f — skjermbilde (K4, DD-39, DD-40, DD-42)
800
800
  leggVedSkjermbilde: "Legg ved skjermbilde",
801
- leggVedHint: "Bildet tas f\xF8rst n\xE5r du trykker \u2014 du ser det f\xF8r det sendes.",
802
801
  velgBilde: "Velg bilde",
803
- velgBildeHint: "Fra bildene dine. Du ser det og kan maskere det f\xF8r det sendes.",
804
802
  skjermbildeUnderGalleri: "Bildet er fra galleriet. Appen maskerer ingenting i det for deg \u2014 mal over det som ikke skal med.",
805
803
  bildeFeilet: "kunne ikke hente bildet. Du kan sende uten.",
806
804
  skjermbildeTittel: "Se over bildet",
@@ -1155,31 +1153,35 @@ function Felt({
1155
1153
  )
1156
1154
  ]
1157
1155
  }
1158
- ) : onSkjermbilde || onVelgBilde ? /* @__PURE__ */ jsxs2(View2, { style: { gap: tema.space.sm }, children: [
1159
- onSkjermbilde ? /* @__PURE__ */ jsx3(
1160
- Btn,
1161
- {
1162
- variant: "secondary",
1163
- testID: "legg-ved-skjermbilde",
1164
- ikon: "camera-outline",
1165
- label: tekst.leggVedSkjermbilde,
1166
- hint: tekst.leggVedHint,
1167
- onPress: onSkjermbilde
1168
- }
1169
- ) : null,
1170
- onVelgBilde ? /* @__PURE__ */ jsx3(
1171
- Btn,
1172
- {
1173
- variant: "secondary",
1174
- testID: "velg-bilde",
1175
- ikon: "images-outline",
1176
- label: tekst.velgBilde,
1177
- hint: tekst.velgBildeHint,
1178
- onPress: onVelgBilde
1179
- }
1180
- ) : null,
1181
- bildeNotat ? /* @__PURE__ */ jsx3(View2, { testID: "bilde-notat", children: /* @__PURE__ */ jsx3(Hint, { children: bildeNotat }) }) : null
1182
- ] }) : null,
1156
+ ) : onSkjermbilde || onVelgBilde ? (
1157
+ // F7 (brukerreisene 2026-09-15): knappene har ingen egen hjelpetekst. Web-widgeten
1158
+ // har aldri hatt det, og Følget sender sin egen setning som `imageStepNote` — med
1159
+ // pakkens hint i tillegg sto det tre tekster under to knapper. Løftet om at bildet
1160
+ // tas ved trykk og kan maskeres står i selve steget (Skjermbilde), der det gjelder.
1161
+ /* @__PURE__ */ jsxs2(View2, { style: { gap: tema.space.sm }, children: [
1162
+ onSkjermbilde ? /* @__PURE__ */ jsx3(
1163
+ Btn,
1164
+ {
1165
+ variant: "secondary",
1166
+ testID: "legg-ved-skjermbilde",
1167
+ ikon: "camera-outline",
1168
+ label: tekst.leggVedSkjermbilde,
1169
+ onPress: onSkjermbilde
1170
+ }
1171
+ ) : null,
1172
+ onVelgBilde ? /* @__PURE__ */ jsx3(
1173
+ Btn,
1174
+ {
1175
+ variant: "secondary",
1176
+ testID: "velg-bilde",
1177
+ ikon: "images-outline",
1178
+ label: tekst.velgBilde,
1179
+ onPress: onVelgBilde
1180
+ }
1181
+ ) : null,
1182
+ bildeNotat ? /* @__PURE__ */ jsx3(View2, { testID: "bilde-notat", children: /* @__PURE__ */ jsx3(Hint, { children: bildeNotat }) }) : null
1183
+ ] })
1184
+ ) : null,
1183
1185
  /* @__PURE__ */ jsxs2(View2, { style: { borderTopWidth: tema.hairline, borderTopColor: tema.color.border, paddingTop: tema.space.sm }, children: [
1184
1186
  /* @__PURE__ */ jsx3(
1185
1187
  Pressable2,
@@ -1879,7 +1881,8 @@ function Widget({
1879
1881
  apneOpsjoner,
1880
1882
  onLukk,
1881
1883
  tenantName,
1882
- imageStepNote
1884
+ imageStepNote,
1885
+ onSubmitted
1883
1886
  }) {
1884
1887
  const tema = useTema();
1885
1888
  const insets = useContext3(SafeAreaInsetsContext) ?? initialWindowMetrics?.insets ?? { top: 0, bottom: 0, left: 0, right: 0 };
@@ -2095,6 +2098,7 @@ function Widget({
2095
2098
  });
2096
2099
  }
2097
2100
  setSteg("kvittering");
2101
+ onSubmitted?.(res.status === "queued" ? { type: spor, queued: true } : { type: spor, queued: false, id: res.submission.id });
2098
2102
  } catch (e) {
2099
2103
  if (e instanceof InnspelQueueFullError) setFeil(e.userMessage);
2100
2104
  else if (e instanceof InnspelApiError) setFeil(e.message);
@@ -2102,7 +2106,7 @@ function Widget({
2102
2106
  } finally {
2103
2107
  setSender(false);
2104
2108
  }
2105
- }, [client, spor, verdi, vedlegg, lenketTil, fjernede, apneOpsjoner?.screen]);
2109
+ }, [client, spor, verdi, vedlegg, lenketTil, fjernede, apneOpsjoner?.screen, onSubmitted]);
2106
2110
  const jaOgsa = useCallback2(
2107
2111
  async (k) => {
2108
2112
  setSender(true);
@@ -2316,7 +2320,8 @@ function InnspelProvider({
2316
2320
  colorScheme = "dark",
2317
2321
  tenantName,
2318
2322
  screenshot,
2319
- imageStepNote
2323
+ imageStepNote,
2324
+ onSubmitted
2320
2325
  }) {
2321
2326
  const [synlig, setSynlig] = useState5(false);
2322
2327
  const [apneOpsjoner, setApneOpsjoner] = useState5();
@@ -2351,6 +2356,7 @@ function InnspelProvider({
2351
2356
  ...apneOpsjoner ? { apneOpsjoner } : {},
2352
2357
  ...tenantName ? { tenantName } : {},
2353
2358
  ...imageStepNote ? { imageStepNote } : {},
2359
+ ...onSubmitted ? { onSubmitted } : {},
2354
2360
  onLukk: close
2355
2361
  }
2356
2362
  )