@dosgato/dialog 1.2.6 → 1.2.7

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,6 +1,7 @@
1
1
  <script>import { datetimeSerialize, datetimeDeserialize } from '@txstate-mws/svelte-forms';
2
2
  import FieldStandard from './FieldStandard.svelte';
3
3
  import Input from './Input.svelte';
4
+ import { createEventDispatcher } from 'svelte';
4
5
  let className = '';
5
6
  export { className as class };
6
7
  export let id = undefined;
@@ -16,23 +17,26 @@ export let related = 0;
16
17
  export let extradescid = undefined;
17
18
  export let helptext = undefined;
18
19
  export let inputelement = undefined;
19
- let showBadInputMessage = false;
20
- function wrapOnBlur(onBlur) {
21
- const date = new Date(inputelement.value);
22
- showBadInputMessage = inputelement.validity.badInput || !(date instanceof Date && !isNaN(date.valueOf()));
23
- onBlur();
20
+ const dispatch = createEventDispatcher();
21
+ function onChange(setVal) {
22
+ return () => {
23
+ if (inputelement) {
24
+ const date = new Date(inputelement.value);
25
+ const invalid = inputelement.validity.badInput || !(date instanceof Date && !isNaN(date.valueOf()));
26
+ if (invalid) {
27
+ setVal(undefined);
28
+ dispatch('change', undefined);
29
+ }
30
+ else {
31
+ setVal(datetimeDeserialize(inputelement.value));
32
+ dispatch('change', datetimeDeserialize(inputelement.value));
33
+ }
34
+ }
35
+ };
24
36
  }
25
37
  </script>
26
38
 
27
- <FieldStandard bind:id {label} {path} {required} {defaultValue} {conditional} {related} {helptext} serialize={datetimeSerialize} deserialize={datetimeDeserialize} let:value let:valid let:invalid let:id let:onBlur let:onChange let:helptextid let:messagesid>
28
- {#if showBadInputMessage}<div class="bad-input-warning" aria-live='polite'>{`Field ${label}`} must include both a date and time</div>{/if}
29
- <Input bind:inputelement={inputelement} type="datetime-local" name={path} {value} {id} class="dialog-input {className}" onBlur={() => { wrapOnBlur(onBlur) }} {onChange} {valid} {invalid} {min} {max} {step} {extradescid} {messagesid} {helptextid}/>
39
+ <FieldStandard bind:id {label} {path} {required} {defaultValue} {conditional} {related} {helptext} serialize={datetimeSerialize} deserialize={datetimeDeserialize} let:value let:valid let:invalid let:id let:onBlur let:helptextid let:messagesid let:setVal>
40
+ <Input bind:inputelement={inputelement} type="datetime-local" name={path} {value} {id} class="dialog-input {className}" {onBlur} onChange={onChange(setVal)} {valid} {invalid} {min} {max} {step} {extradescid} {messagesid} {helptextid}/>
30
41
  </FieldStandard>
31
42
 
32
- <style>
33
- .bad-input-warning {
34
- margin-bottom: 0.3em;
35
- color: var(--dg-danger-bg, #9a3332);
36
- }
37
-
38
- </style>
@@ -21,6 +21,8 @@ declare const __propDef: {
21
21
  inputelement?: HTMLInputElement;
22
22
  };
23
23
  events: {
24
+ change: CustomEvent<any>;
25
+ } & {
24
26
  [evt: string]: CustomEvent<any>;
25
27
  };
26
28
  slots: {};
@@ -90,7 +90,7 @@ function iconForItem(item) {
90
90
  {#if $store.initialized}
91
91
  <Tree headers={[
92
92
  { label: 'Path', id: 'name', grow: 4, icon: item => iconForItem(item), get: 'name' }
93
- ]} singleSelect store={treeStore} on:deselect={onDeselect} on:choose={onChoose} />
93
+ ]} singleSelect store={treeStore} on:deselect={onDeselect} on:choose={onChoose} searchable='name' />
94
94
  {/if}
95
95
  </section>
96
96
  <ChooserPreview {thumbnailExpanded} {previewId} {store} on:thumbnailsizechange={() => { thumbnailExpanded = !thumbnailExpanded }}/>
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@dosgato/dialog",
3
3
  "description": "A component library for building forms that edit a JSON document.",
4
- "version": "1.2.6",
4
+ "version": "1.2.7",
5
5
  "scripts": {
6
6
  "prepublishOnly": "svelte-package",
7
7
  "dev": "vite dev --force",