@dosgato/dialog 0.0.27 → 0.0.28

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.
@@ -0,0 +1,67 @@
1
+ <script>import { passActions } from '@txstate-mws/svelte-components';
2
+ import { nullableSerialize, nullableDeserialize, FORM_CONTEXT, FormStore } from '@txstate-mws/svelte-forms';
3
+ import CodeFlask from 'codeflask';
4
+ import { getContext, onMount } from 'svelte';
5
+ import { getDescribedBy, FieldStandard } from './';
6
+ let className = '';
7
+ export { className as class };
8
+ export let id = undefined;
9
+ export let path;
10
+ export let label = '';
11
+ export let notNull = false;
12
+ export let defaultValue = notNull ? '' : undefined;
13
+ export let rows = undefined;
14
+ export let conditional = undefined;
15
+ export let required = false;
16
+ export let use = [];
17
+ export let inputelement = undefined;
18
+ export let helptext = undefined;
19
+ export let language;
20
+ const store = getContext(FORM_CONTEXT);
21
+ const value = store.getField(path);
22
+ let editorelement;
23
+ let flask;
24
+ let codeValue = '';
25
+ onMount(() => {
26
+ flask = new CodeFlask(editorelement, { language, lineNumbers: true, areaId: id });
27
+ flask.onUpdate(code => { codeValue = code; });
28
+ inputelement = editorelement.querySelector(`#${id}`);
29
+ if (className)
30
+ inputelement.classList.add(...className.split(' '));
31
+ inputelement.addEventListener('change', onChange);
32
+ updateValidState(invalid, messagesid);
33
+ });
34
+ $: flask?.updateCode($value ?? '');
35
+ let invalid;
36
+ let messagesid;
37
+ let helptextid;
38
+ let onChange;
39
+ function setSlotProps(helptextidIn, onChangeIn) {
40
+ helptextid = helptextidIn;
41
+ onChange = onChangeIn;
42
+ }
43
+ function updateValidState(invalidIn, messagesIdIn) {
44
+ invalid = !!invalidIn;
45
+ messagesid = messagesIdIn;
46
+ inputelement?.setAttribute('aria-invalid', String(!!invalid));
47
+ const descby = getDescribedBy([messagesid, helptextid]);
48
+ if (descby)
49
+ inputelement?.setAttribute('aria-describedby', getDescribedBy([messagesid, helptextid]));
50
+ else
51
+ inputelement?.removeAttribute('aria-describedby');
52
+ }
53
+ </script>
54
+
55
+ <FieldStandard bind:id {label} {path} {required} {defaultValue} {conditional} {helptext} serialize={!notNull && nullableSerialize} deserialize={!notNull && nullableDeserialize} let:value let:valid let:invalid let:id let:onBlur let:onChange let:messagesid let:helptextid>
56
+ {@const _ = setSlotProps(helptextid, onChange)}
57
+ {@const __ = updateValidState(invalid, messagesid)}
58
+ <div bind:this={editorelement} style:height="{rows * 1.333}em" class:valid class:invalid on:paste on:focusout={onBlur} use:passActions={use}></div>
59
+ </FieldStandard>
60
+
61
+ <style>
62
+ div {
63
+ overflow: hidden;
64
+ resize: vertical;
65
+ }
66
+
67
+ </style>
@@ -0,0 +1,31 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ import { type HTMLActionEntry } from '@txstate-mws/svelte-components';
3
+ declare const __propDef: {
4
+ props: {
5
+ class?: string;
6
+ id?: string | undefined;
7
+ path: string;
8
+ label?: string;
9
+ notNull?: boolean;
10
+ defaultValue?: any;
11
+ rows?: number | undefined;
12
+ conditional?: boolean | undefined;
13
+ required?: boolean;
14
+ use?: HTMLActionEntry[];
15
+ inputelement?: HTMLTextAreaElement;
16
+ helptext?: string | undefined;
17
+ language: 'js' | 'css' | 'html';
18
+ };
19
+ events: {
20
+ paste: ClipboardEvent;
21
+ } & {
22
+ [evt: string]: CustomEvent<any>;
23
+ };
24
+ slots: {};
25
+ };
26
+ export type FieldCodeEditorProps = typeof __propDef.props;
27
+ export type FieldCodeEditorEvents = typeof __propDef.events;
28
+ export type FieldCodeEditorSlots = typeof __propDef.slots;
29
+ export default class FieldCodeEditor extends SvelteComponentTyped<FieldCodeEditorProps, FieldCodeEditorEvents, FieldCodeEditorSlots> {
30
+ }
31
+ export {};
package/Switcher.svelte CHANGED
@@ -13,7 +13,7 @@ export let horizontal = false;
13
13
  export let label;
14
14
  export let required = false;
15
15
  export let helptext = undefined;
16
- export let messages;
16
+ export let messages = [];
17
17
  export let iptValue = choices[0].value;
18
18
  export let valid = false;
19
19
  export let invalid = false;
@@ -14,7 +14,7 @@ declare const __propDef: {
14
14
  label: string;
15
15
  required?: boolean;
16
16
  helptext?: string | undefined;
17
- messages: Feedback[];
17
+ messages?: Feedback[];
18
18
  iptValue?: string;
19
19
  valid?: boolean;
20
20
  invalid?: boolean;
package/Tabs.svelte CHANGED
@@ -8,19 +8,21 @@ import { TabStore, TAB_CONTEXT } from './TabStore';
8
8
  export let tabs;
9
9
  export let active = undefined;
10
10
  export let store = new TabStore(tabs, active);
11
+ export let disableDialogControl = false;
11
12
  $: store.update(v => ({ ...v, tabs }));
12
13
  const activeStore = new Store({});
13
14
  const tabelements = [];
14
15
  let activeelement;
15
16
  setContext(TAB_CONTEXT, { store, onClick, onKeyDown, tabelements });
16
- const dialogContext = getContext(DIALOG_TABS_CONTEXT) ?? { change: () => { } };
17
+ const dialogContext = (disableDialogControl ? undefined : getContext(DIALOG_TABS_CONTEXT)) ?? { change: () => { } };
17
18
  dialogContext.onNext = () => { store.right(); };
18
19
  dialogContext.onPrev = () => { store.left(); };
19
20
  $: dialogContext.prevTitle = $store.prevTitle;
20
21
  $: dialogContext.nextTitle = $store.nextTitle;
21
22
  $: dialogContext.hasRequired = $store.requireNext;
22
23
  $: dialogContext.change($store);
23
- setContext(DIALOG_TABS_CONTEXT, { change: () => { } }); // reset context so that any sub-tabs do NOT control the Dialog component
24
+ if (!disableDialogControl)
25
+ setContext(DIALOG_TABS_CONTEXT, { change: () => { } }); // reset context so that any sub-tabs do NOT control the Dialog component
24
26
  const currentTitle = store.currentTitle();
25
27
  const currentIdx = store.currentIdx();
26
28
  const accordion = store.accordion();
package/Tabs.svelte.d.ts CHANGED
@@ -5,6 +5,7 @@ declare const __propDef: {
5
5
  tabs: TabDef[];
6
6
  active?: string | undefined;
7
7
  store?: TabStore;
8
+ disableDialogControl?: boolean;
8
9
  };
9
10
  events: {
10
11
  [evt: string]: CustomEvent<any>;
package/index.d.ts CHANGED
@@ -7,6 +7,7 @@ export { default as FieldAutocomplete } from './FieldAutocomplete.svelte';
7
7
  export { default as FieldCheckbox } from './FieldCheckbox.svelte';
8
8
  export { default as FieldChoices } from './FieldChoices.svelte';
9
9
  export { default as FieldChooserLink } from './FieldChooserLink.svelte';
10
+ export { default as FieldCodeEditor } from './FieldCodeEditor.svelte';
10
11
  export { default as FieldDate } from './FieldDate.svelte';
11
12
  export { default as FieldDateTime } from './FieldDateTime.svelte';
12
13
  export { default as FieldDualListbox } from './FieldDualListbox.svelte';
package/index.js CHANGED
@@ -7,6 +7,7 @@ export { default as FieldAutocomplete } from './FieldAutocomplete.svelte';
7
7
  export { default as FieldCheckbox } from './FieldCheckbox.svelte';
8
8
  export { default as FieldChoices } from './FieldChoices.svelte';
9
9
  export { default as FieldChooserLink } from './FieldChooserLink.svelte';
10
+ export { default as FieldCodeEditor } from './FieldCodeEditor.svelte';
10
11
  export { default as FieldDate } from './FieldDate.svelte';
11
12
  export { default as FieldDateTime } from './FieldDateTime.svelte';
12
13
  export { default as FieldDualListbox } from './FieldDualListbox.svelte';
package/package.json CHANGED
@@ -1,19 +1,21 @@
1
1
  {
2
2
  "name": "@dosgato/dialog",
3
3
  "description": "A component library for building forms that edit a JSON document.",
4
- "version": "0.0.27",
4
+ "version": "0.0.28",
5
5
  "dependencies": {
6
6
  "@txstate-mws/svelte-components": "^1.3.5",
7
7
  "@txstate-mws/svelte-forms": "^1.2.1",
8
8
  "@iconify/svelte": "^3.0.0",
9
9
  "@iconify-icons/mdi": "^1.2.22",
10
10
  "@iconify-icons/ph": "^1.2.2",
11
+ "codeflask": "^1.4.1",
11
12
  "txstate-utils": "^1.8.0"
12
13
  },
13
14
  "devDependencies": {
14
15
  "@sveltejs/adapter-auto": "next",
15
16
  "@sveltejs/kit": "next",
16
17
  "@sveltejs/package": "^1.0.0-next.5",
18
+ "@types/codeflask": "^1.4.3",
17
19
  "eslint-config-standard-with-typescript": "^23.0.0",
18
20
  "eslint-plugin-svelte3": "^4.0.0",
19
21
  "svelte-check": "^2.2.6",
@@ -37,6 +39,7 @@
37
39
  "./FieldCheckbox.svelte": "./FieldCheckbox.svelte",
38
40
  "./FieldChoices.svelte": "./FieldChoices.svelte",
39
41
  "./FieldChooserLink.svelte": "./FieldChooserLink.svelte",
42
+ "./FieldCodeEditor.svelte": "./FieldCodeEditor.svelte",
40
43
  "./FieldDate.svelte": "./FieldDate.svelte",
41
44
  "./FieldDateTime.svelte": "./FieldDateTime.svelte",
42
45
  "./FieldDualListbox.svelte": "./FieldDualListbox.svelte",