@panneau/fields 5.0.0-alpha.6 → 5.0.0-alpha.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.
- package/dist/boolean/BooleanField.js +78 -17
- package/dist/boolean/BooleanField.js.map +1 -1
- package/dist/color/ColorField.js.map +1 -1
- package/dist/date/DateField.js.map +1 -1
- package/dist/datetime/DateTimeField.js +107 -20
- package/dist/datetime/DateTimeField.js.map +1 -1
- package/dist/duration/DurationField.js +126 -41
- package/dist/duration/DurationField.js.map +1 -1
- package/dist/email/EmailField.js.map +1 -1
- package/dist/embed/EmbedField.js +185 -69
- package/dist/embed/EmbedField.js.map +1 -1
- package/dist/file/FileField.d.ts.map +1 -1
- package/dist/file/FileField.js +167 -77
- package/dist/file/FileField.js.map +1 -1
- package/dist/group/GroupField.js.map +1 -1
- package/dist/json/JsonField.js +104 -22
- package/dist/json/JsonField.js.map +1 -1
- package/dist/locales/index.js.map +1 -1
- package/dist/localized/LocalizedField.js.map +1 -1
- package/dist/location/LocationField.d.ts.map +1 -1
- package/dist/location/LocationField.js +351 -138
- package/dist/location/LocationField.js.map +1 -1
- package/dist/location/LocationMap.d.ts.map +1 -1
- package/dist/location/LocationMap.js +155 -65
- package/dist/location/LocationMap.js.map +1 -1
- package/dist/location/leafletCss.js.map +1 -1
- package/dist/location/nominatim.js.map +1 -1
- package/dist/missing/MissingField.d.ts +3 -2
- package/dist/missing/MissingField.d.ts.map +1 -1
- package/dist/missing/MissingField.js +3 -2
- package/dist/missing/MissingField.js.map +1 -1
- package/dist/number/NumberField.js.map +1 -1
- package/dist/range/RangeField.js +82 -11
- package/dist/range/RangeField.js.map +1 -1
- package/dist/relation/RelationField.js +485 -145
- package/dist/relation/RelationField.js.map +1 -1
- package/dist/repeater/RepeaterField.js +118 -34
- package/dist/repeater/RepeaterField.js.map +1 -1
- package/dist/select/SelectField.js.map +1 -1
- package/dist/shared/DefinitionField.js.map +1 -1
- package/dist/shared/builtIn.js.map +1 -1
- package/dist/shared/check.js.map +1 -1
- package/dist/shared/context.js.map +1 -1
- package/dist/shared/cx.js.map +1 -1
- package/dist/shared/dates.js.map +1 -1
- package/dist/shared/embed.js.map +1 -1
- package/dist/shared/entry.js.map +1 -1
- package/dist/shared/relation.js.map +1 -1
- package/dist/slug/SlugField.d.ts.map +1 -1
- package/dist/slug/SlugField.js +184 -36
- package/dist/slug/SlugField.js.map +1 -1
- package/dist/tags/TagsField.js.map +1 -1
- package/dist/tel/TelField.js.map +1 -1
- package/dist/text/TextField.js.map +1 -1
- package/dist/textarea/TextAreaField.js.map +1 -1
- package/dist/time/TimeField.js +64 -10
- package/dist/time/TimeField.js.map +1 -1
- package/dist/upload/FilePicker.js +107 -24
- package/dist/upload/FilePicker.js.map +1 -1
- package/dist/upload/UploadList.js.map +1 -1
- package/dist/upload/files.js.map +1 -1
- package/dist/upload/useRejectionMessage.js.map +1 -1
- package/dist/upload/useUploads.js.map +1 -1
- package/dist/uppy/uploader.js.map +1 -1
- package/dist/url/UrlField.js +69 -14
- package/dist/url/UrlField.js.map +1 -1
- package/package.json +4 -4
package/dist/url/UrlField.js
CHANGED
|
@@ -19,24 +19,55 @@ function withScheme(url, scheme = "https://") {
|
|
|
19
19
|
* A URL, with the URL keyboard on phones and a link to open it. A URL typed without a scheme
|
|
20
20
|
* gets `https://` on blur, as v4 did.
|
|
21
21
|
*/
|
|
22
|
-
function UrlField(
|
|
22
|
+
function UrlField(t0) {
|
|
23
|
+
const $ = c(23);
|
|
24
|
+
let onBlur;
|
|
25
|
+
let onChange;
|
|
26
|
+
let props;
|
|
27
|
+
let t1;
|
|
28
|
+
let value;
|
|
29
|
+
if ($[0] !== t0) {
|
|
30
|
+
({value, onChange, onBlur, defaultScheme: t1, ...props} = t0);
|
|
31
|
+
$[0] = t0;
|
|
32
|
+
$[1] = onBlur;
|
|
33
|
+
$[2] = onChange;
|
|
34
|
+
$[3] = props;
|
|
35
|
+
$[4] = t1;
|
|
36
|
+
$[5] = value;
|
|
37
|
+
} else {
|
|
38
|
+
onBlur = $[1];
|
|
39
|
+
onChange = $[2];
|
|
40
|
+
props = $[3];
|
|
41
|
+
t1 = $[4];
|
|
42
|
+
value = $[5];
|
|
43
|
+
}
|
|
44
|
+
const defaultScheme = t1 === void 0 ? "https://" : t1;
|
|
23
45
|
const intl = usePanneauIntl();
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
46
|
+
let t2;
|
|
47
|
+
if ($[6] !== value) {
|
|
48
|
+
t2 = value !== null && value !== void 0 && /^https?:\/\//i.test(value);
|
|
49
|
+
$[6] = value;
|
|
50
|
+
$[7] = t2;
|
|
51
|
+
} else t2 = $[7];
|
|
52
|
+
const openable = t2;
|
|
53
|
+
let t3;
|
|
54
|
+
if ($[8] !== defaultScheme || $[9] !== onBlur || $[10] !== onChange || $[11] !== value) {
|
|
55
|
+
t3 = () => {
|
|
33
56
|
if (value !== null && value !== void 0) {
|
|
34
57
|
const next = withScheme(value, defaultScheme);
|
|
35
58
|
if (next !== value) onChange?.(next === "" ? null : next);
|
|
36
59
|
}
|
|
37
60
|
onBlur?.();
|
|
38
|
-
}
|
|
39
|
-
|
|
61
|
+
};
|
|
62
|
+
$[8] = defaultScheme;
|
|
63
|
+
$[9] = onBlur;
|
|
64
|
+
$[10] = onChange;
|
|
65
|
+
$[11] = value;
|
|
66
|
+
$[12] = t3;
|
|
67
|
+
} else t3 = $[12];
|
|
68
|
+
let t4;
|
|
69
|
+
if ($[13] !== intl || $[14] !== openable || $[15] !== value) {
|
|
70
|
+
t4 = openable ? /* @__PURE__ */ jsx("a", {
|
|
40
71
|
href: value,
|
|
41
72
|
target: "_blank",
|
|
42
73
|
rel: "noopener noreferrer",
|
|
@@ -46,8 +77,32 @@ function UrlField({ value, onChange, onBlur, defaultScheme = "https://", ...prop
|
|
|
46
77
|
icon: ExternalLink,
|
|
47
78
|
label: intl.formatMessage(messages.openLink)
|
|
48
79
|
})
|
|
49
|
-
}) : void 0
|
|
50
|
-
|
|
80
|
+
}) : void 0;
|
|
81
|
+
$[13] = intl;
|
|
82
|
+
$[14] = openable;
|
|
83
|
+
$[15] = value;
|
|
84
|
+
$[16] = t4;
|
|
85
|
+
} else t4 = $[16];
|
|
86
|
+
let t5;
|
|
87
|
+
if ($[17] !== onChange || $[18] !== props || $[19] !== t3 || $[20] !== t4 || $[21] !== value) {
|
|
88
|
+
t5 = /* @__PURE__ */ jsx(TextField, {
|
|
89
|
+
autoComplete: "off",
|
|
90
|
+
...props,
|
|
91
|
+
type: "url",
|
|
92
|
+
inputMode: "url",
|
|
93
|
+
value,
|
|
94
|
+
onChange,
|
|
95
|
+
onBlur: t3,
|
|
96
|
+
suffix: t4
|
|
97
|
+
});
|
|
98
|
+
$[17] = onChange;
|
|
99
|
+
$[18] = props;
|
|
100
|
+
$[19] = t3;
|
|
101
|
+
$[20] = t4;
|
|
102
|
+
$[21] = value;
|
|
103
|
+
$[22] = t5;
|
|
104
|
+
} else t5 = $[22];
|
|
105
|
+
return t5;
|
|
51
106
|
}
|
|
52
107
|
/** The `url` type: setting `defaultScheme`. */
|
|
53
108
|
function UrlFieldEntry(props) {
|
package/dist/url/UrlField.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UrlField.js","names":["styles","_c"],"sources":["../../src/url/UrlField.tsx"],"sourcesContent":["import { ExternalLink } from 'lucide-react';\n\nimport { Icon, usePanneauIntl } from '@panneau/ui';\n\nimport { getFieldProps, getSetting, isString } from '../shared/entry';\nimport { messages } from '../shared/messages';\nimport type { FieldEntryProps } from '../shared/types';\nimport { TextField, type TextFieldProps } from '../text/TextField';\nimport styles from './UrlField.module.css';\n\nexport interface UrlFieldProps extends Omit<TextFieldProps, 'type' | 'inputMode' | 'suffix'> {\n /** Scheme added on blur to a URL without one (`example.com`). Defaults to `https://`. */\n defaultScheme?: string;\n}\n\nconst SCHEME = /^[a-z][a-z0-9+.-]*:/i;\n\n/** Adds a scheme to a URL that has none, and isn't a path or an anchor. */\nexport function withScheme(url: string, scheme = 'https://'): string {\n const trimmed = url.trim();\n if (trimmed.startsWith('//')) {\n return `${scheme}${trimmed.slice(2)}`;\n }\n if (trimmed === '' || SCHEME.test(trimmed) || /^[/#?]/.test(trimmed)) {\n return trimmed;\n }\n return `${scheme}${trimmed}`;\n}\n\n/**\n * A URL, with the URL keyboard on phones and a link to open it. A URL typed without a scheme\n * gets `https://` on blur, as v4 did.\n */\nexport function UrlField({\n value,\n onChange,\n onBlur,\n defaultScheme = 'https://',\n ...props\n}: UrlFieldProps) {\n const intl = usePanneauIntl();\n const openable = value !== null && value !== undefined && /^https?:\\/\\//i.test(value);\n return (\n <TextField\n autoComplete=\"off\"\n {...props}\n type=\"url\"\n inputMode=\"url\"\n value={value}\n onChange={onChange}\n onBlur={() => {\n if (value !== null && value !== undefined) {\n const next = withScheme(value, defaultScheme);\n if (next !== value) {\n onChange?.(next === '' ? null : next);\n }\n }\n onBlur?.();\n }}\n suffix={\n openable ? (\n <a\n href={value}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={styles.open}\n title={intl.formatMessage(messages.openLink)}\n >\n <Icon icon={ExternalLink} label={intl.formatMessage(messages.openLink)} />\n </a>\n ) : undefined\n }\n />\n );\n}\n\n/** The `url` type: setting `defaultScheme`. */\nexport function UrlFieldEntry(props: FieldEntryProps) {\n const defaultScheme = getSetting(props.field, 'defaultScheme', isString);\n return (\n <UrlField\n {...getFieldProps(props)}\n value={isString(props.value) ? props.value : null}\n onChange={props.onChange}\n {...(defaultScheme !== undefined ? { defaultScheme } : {})}\n />\n );\n}\n"],"mappings":";;;;;;;;;AAeA,
|
|
1
|
+
{"version":3,"file":"UrlField.js","names":["ExternalLink","Icon","usePanneauIntl","getFieldProps","getSetting","isString","messages","FieldEntryProps","TextField","TextFieldProps","styles","UrlFieldProps","Omit","defaultScheme","SCHEME","withScheme","url","scheme","trimmed","trim","startsWith","slice","test","UrlField","t0","$","_c","onBlur","onChange","props","t1","value","undefined","intl","t2","openable","t3","next","t4","open","formatMessage","openLink","t5","UrlFieldEntry","field","_c","styles"],"sources":["../../src/url/UrlField.tsx"],"sourcesContent":["import { ExternalLink } from 'lucide-react';\n\nimport { Icon, usePanneauIntl } from '@panneau/ui';\n\nimport { getFieldProps, getSetting, isString } from '../shared/entry';\nimport { messages } from '../shared/messages';\nimport type { FieldEntryProps } from '../shared/types';\nimport { TextField, type TextFieldProps } from '../text/TextField';\nimport styles from './UrlField.module.css';\n\nexport interface UrlFieldProps extends Omit<TextFieldProps, 'type' | 'inputMode' | 'suffix'> {\n /** Scheme added on blur to a URL without one (`example.com`). Defaults to `https://`. */\n defaultScheme?: string;\n}\n\nconst SCHEME = /^[a-z][a-z0-9+.-]*:/i;\n\n/** Adds a scheme to a URL that has none, and isn't a path or an anchor. */\nexport function withScheme(url: string, scheme = 'https://'): string {\n const trimmed = url.trim();\n if (trimmed.startsWith('//')) {\n return `${scheme}${trimmed.slice(2)}`;\n }\n if (trimmed === '' || SCHEME.test(trimmed) || /^[/#?]/.test(trimmed)) {\n return trimmed;\n }\n return `${scheme}${trimmed}`;\n}\n\n/**\n * A URL, with the URL keyboard on phones and a link to open it. A URL typed without a scheme\n * gets `https://` on blur, as v4 did.\n */\nexport function UrlField({\n value,\n onChange,\n onBlur,\n defaultScheme = 'https://',\n ...props\n}: UrlFieldProps) {\n const intl = usePanneauIntl();\n const openable = value !== null && value !== undefined && /^https?:\\/\\//i.test(value);\n return (\n <TextField\n autoComplete=\"off\"\n {...props}\n type=\"url\"\n inputMode=\"url\"\n value={value}\n onChange={onChange}\n onBlur={() => {\n if (value !== null && value !== undefined) {\n const next = withScheme(value, defaultScheme);\n if (next !== value) {\n onChange?.(next === '' ? null : next);\n }\n }\n onBlur?.();\n }}\n suffix={\n openable ? (\n <a\n href={value}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={styles.open}\n title={intl.formatMessage(messages.openLink)}\n >\n <Icon icon={ExternalLink} label={intl.formatMessage(messages.openLink)} />\n </a>\n ) : undefined\n }\n />\n );\n}\n\n/** The `url` type: setting `defaultScheme`. */\nexport function UrlFieldEntry(props: FieldEntryProps) {\n const defaultScheme = getSetting(props.field, 'defaultScheme', isString);\n return (\n <UrlField\n {...getFieldProps(props)}\n value={isString(props.value) ? props.value : null}\n onChange={props.onChange}\n {...(defaultScheme !== undefined ? { defaultScheme } : {})}\n />\n );\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@panneau/fields",
|
|
3
|
-
"version": "5.0.0-alpha.
|
|
3
|
+
"version": "5.0.0-alpha.7",
|
|
4
4
|
"description": "Controlled field components of Panneau for the protocol's built-in field types, one subpath per field, and uploads to storage (Uppy 6 in its own entry point).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -178,9 +178,9 @@
|
|
|
178
178
|
},
|
|
179
179
|
"dependencies": {
|
|
180
180
|
"@internationalized/date": "^3.12.4",
|
|
181
|
-
"@panneau/intl": "5.0.0-alpha.
|
|
182
|
-
"@panneau/protocol": "5.0.0-alpha.
|
|
183
|
-
"@panneau/ui": "5.0.0-alpha.
|
|
181
|
+
"@panneau/intl": "5.0.0-alpha.7",
|
|
182
|
+
"@panneau/protocol": "5.0.0-alpha.7",
|
|
183
|
+
"@panneau/ui": "5.0.0-alpha.7",
|
|
184
184
|
"leaflet": "^1.9.4",
|
|
185
185
|
"lucide-react": "^1.57.0"
|
|
186
186
|
},
|