@lostgradient/cinder 0.9.0 → 0.11.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.
- package/CHANGELOG.md +16 -0
- package/components.json +82 -4
- package/dist/components/access-gate/index.js +381 -239
- package/dist/components/chat/builders.d.ts +17 -8
- package/dist/components/chat/conversation-model.d.ts +1 -1
- package/dist/components/chat/index.d.ts +1 -1
- package/dist/components/chat/index.js +300 -17
- package/dist/components/chat/utilities/conversation.d.ts +6 -6
- package/dist/components/chat-conversation-header/index.js +19 -6
- package/dist/components/chat-conversation-list/index.js +19 -6
- package/dist/components/connection-indicator/connection-indicator.css +136 -0
- package/dist/components/connection-indicator/connection-indicator.css.d.ts +1 -0
- package/dist/components/connection-indicator/connection-indicator.schema.d.ts +3 -0
- package/dist/components/connection-indicator/connection-indicator.schema.js +89 -0
- package/dist/components/connection-indicator/connection-indicator.svelte.d.ts +21 -0
- package/dist/components/connection-indicator/connection-indicator.types.d.ts +46 -0
- package/dist/components/connection-indicator/connection-indicator.variables.d.ts +2 -0
- package/dist/components/connection-indicator/connection-indicator.variables.js +61 -0
- package/dist/components/connection-indicator/index.d.ts +5 -0
- package/dist/components/connection-indicator/index.js +409 -0
- package/dist/components/container/container.schema.js +4 -4
- package/dist/components/invocation-rule-builder/index.d.ts +1 -1
- package/dist/components/invocation-rule-builder/index.js +305 -150
- package/dist/components/invocation-rule-builder/invocation-rule-builder.css +28 -0
- package/dist/components/invocation-rule-builder/invocation-rule-builder.schema.js +89 -5
- package/dist/components/invocation-rule-builder/invocation-rule-builder.svelte.d.ts +2 -1
- package/dist/components/invocation-rule-builder/invocation-rule-builder.types.d.ts +114 -16
- package/dist/components/run-step-timeline/index.d.ts +1 -1
- package/dist/components/run-step-timeline/index.js +992 -559
- package/dist/components/run-step-timeline/run-step-branch-disclosure.svelte.d.ts +17 -0
- package/dist/components/run-step-timeline/run-step-timeline.css +124 -0
- package/dist/components/run-step-timeline/run-step-timeline.schema.js +873 -350
- package/dist/components/run-step-timeline/run-step-timeline.svelte.d.ts +1 -15
- package/dist/components/run-step-timeline/run-step-timeline.types.d.ts +182 -5
- package/dist/components/run-step-timeline/run-step-timeline.utilities.d.ts +52 -0
- package/dist/components/schedule-builder/index.d.ts +5 -0
- package/dist/components/schedule-builder/index.js +3176 -0
- package/dist/components/schedule-builder/schedule-builder.css +121 -0
- package/dist/components/schedule-builder/schedule-builder.css.d.ts +1 -0
- package/dist/components/schedule-builder/schedule-builder.schema.d.ts +3 -0
- package/dist/components/schedule-builder/schedule-builder.schema.js +141 -0
- package/dist/components/schedule-builder/schedule-builder.svelte.d.ts +22 -0
- package/dist/components/schedule-builder/schedule-builder.types.d.ts +130 -0
- package/dist/components/schedule-builder/schedule-builder.utilities.d.ts +78 -0
- package/dist/components/schedule-builder/schedule-builder.variables.d.ts +2 -0
- package/dist/components/schedule-builder/schedule-builder.variables.js +61 -0
- package/dist/components/tag-input/index.js +22 -4
- package/dist/components/tag-input/tag-input.schema.js +5 -1
- package/dist/components/tag-input/tag-input.types.d.ts +4 -0
- package/dist/index.d.ts +6 -2
- package/dist/index.js +22704 -20574
- package/dist/server/components/access-gate/index.js +2 -1
- package/dist/server/components/chat/index.js +4 -4
- package/dist/server/components/chat-conversation-header/index.js +5 -5
- package/dist/server/components/chat-conversation-list/index.js +3 -3
- package/dist/server/components/connection-indicator/index.js +16 -0
- package/dist/server/components/data-table/index.js +3 -3
- package/dist/server/components/diff-viewer/index.js +4 -3
- package/dist/server/components/invocation-rule-builder/index.js +1 -1
- package/dist/server/components/json-schema-editor/index.js +4 -3
- package/dist/server/components/review-editor/index.js +4 -3
- package/dist/server/components/run-step-timeline/index.js +1 -1
- package/dist/server/components/schedule-builder/index.js +30 -0
- package/dist/server/components/side-navigation/index.js +2 -2
- package/dist/server/components/table/index.js +3 -3
- package/dist/server/components/tag-input/index.js +1 -1
- package/dist/server/components/time-field/index.js +5 -3
- package/dist/server/index.js +100 -87
- package/dist/server/index.server-0sx92swg.js +9 -0
- package/dist/server/{index.server-mzzb7dnm.js → index.server-2bbwajb2.js} +1 -1
- package/dist/server/{index.server-q7w4jw89.js → index.server-2s5h1d05.js} +2 -2
- package/dist/server/{index.server-dg83ke3k.js → index.server-2zdbz3rj.js} +1 -1
- package/dist/server/{index.server-0jhra85x.js → index.server-3w72dxz7.js} +4 -4
- package/dist/server/{index.server-qh9qzd5t.js → index.server-4x4hgvqe.js} +283 -13
- package/dist/server/{index.server-c6pe4kaf.js → index.server-5gzyqv78.js} +1 -1
- package/dist/server/{index.server-mqt1ngqw.js → index.server-6hnfzc7f.js} +19 -6
- package/dist/server/index.server-be9bpqeh.js +93 -0
- package/dist/server/{index.server-f3z7tpxr.js → index.server-c42b462p.js} +2 -4
- package/dist/server/{index.server-7vyzen5x.js → index.server-c5qv3p61.js} +171 -63
- package/dist/server/index.server-cch0eed5.js +144 -0
- package/dist/server/index.server-gmh5ar16.js +2 -0
- package/dist/server/{index.server-0atyznp7.js → index.server-h89zk5ev.js} +7 -7
- package/dist/server/{index.server-jxg42jpz.js → index.server-jdcq5zza.js} +7 -7
- package/dist/server/{index.server-2dga5yzr.js → index.server-jfrssta6.js} +1 -1
- package/dist/server/{index.server-fy068yne.js → index.server-jj76374p.js} +1 -1
- package/dist/server/index.server-qbkxz7r2.js +750 -0
- package/dist/server/{index.server-marjz8ps.js → index.server-tcay903b.js} +3 -2
- package/dist/server/index.server-z38bxms8.js +734 -0
- package/dist/server/{index.server-yz4k36cw.js → index.server-z7hxtqs1.js} +1 -1
- package/package.json +66 -3
- package/src/components/chat/builders.ts +445 -14
- package/src/components/chat/conversation-model.ts +1 -0
- package/src/components/chat/index.ts +1 -0
- package/src/components/chat/utilities/conversation.ts +33 -15
- package/src/components/connection-indicator/connection-indicator.css +136 -0
- package/src/components/connection-indicator/connection-indicator.examples.json +31 -0
- package/src/components/connection-indicator/connection-indicator.schema.json +29 -0
- package/src/components/connection-indicator/connection-indicator.schema.ts +36 -0
- package/src/components/connection-indicator/connection-indicator.svelte +63 -0
- package/src/components/connection-indicator/connection-indicator.types.ts +58 -0
- package/src/components/connection-indicator/connection-indicator.variables.json +1 -0
- package/src/components/connection-indicator/connection-indicator.variables.ts +3 -0
- package/src/components/connection-indicator/index.ts +10 -0
- package/src/components/container/container.schema.json +3 -3
- package/src/components/container/container.schema.ts +3 -3
- package/src/components/invocation-rule-builder/index.ts +4 -0
- package/src/components/invocation-rule-builder/invocation-rule-builder.css +28 -0
- package/src/components/invocation-rule-builder/invocation-rule-builder.examples.json +6 -0
- package/src/components/invocation-rule-builder/invocation-rule-builder.schema.json +76 -3
- package/src/components/invocation-rule-builder/invocation-rule-builder.schema.ts +83 -3
- package/src/components/invocation-rule-builder/invocation-rule-builder.svelte +326 -113
- package/src/components/invocation-rule-builder/invocation-rule-builder.types.ts +157 -43
- package/src/components/run-step-timeline/index.ts +8 -0
- package/src/components/run-step-timeline/run-step-branch-disclosure.svelte +16 -0
- package/src/components/run-step-timeline/run-step-timeline.css +124 -0
- package/src/components/run-step-timeline/run-step-timeline.examples.json +18 -0
- package/src/components/run-step-timeline/run-step-timeline.schema.json +872 -349
- package/src/components/run-step-timeline/run-step-timeline.schema.ts +931 -349
- package/src/components/run-step-timeline/run-step-timeline.svelte +387 -268
- package/src/components/run-step-timeline/run-step-timeline.types.ts +192 -5
- package/src/components/run-step-timeline/run-step-timeline.utilities.ts +242 -0
- package/src/components/schedule-builder/index.ts +14 -0
- package/src/components/schedule-builder/schedule-builder.css +121 -0
- package/src/components/schedule-builder/schedule-builder.examples.json +31 -0
- package/src/components/schedule-builder/schedule-builder.schema.json +78 -0
- package/src/components/schedule-builder/schedule-builder.schema.ts +86 -0
- package/src/components/schedule-builder/schedule-builder.svelte +629 -0
- package/src/components/schedule-builder/schedule-builder.types.ts +137 -0
- package/src/components/schedule-builder/schedule-builder.utilities.ts +344 -0
- package/src/components/schedule-builder/schedule-builder.variables.json +1 -0
- package/src/components/schedule-builder/schedule-builder.variables.ts +3 -0
- package/src/components/tag-input/tag-input.schema.json +4 -0
- package/src/components/tag-input/tag-input.schema.ts +4 -0
- package/src/components/tag-input/tag-input.svelte +20 -3
- package/src/components/tag-input/tag-input.types.ts +4 -0
- package/src/index.ts +23 -0
- package/src/styles/components.css +2 -0
- package/dist/server/index.server-qk1h0n02.js +0 -393
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
@layer cinder.tokens, cinder.foundation, cinder.components, cinder.utilities;
|
|
2
|
+
@import '../chip/chip.css';
|
|
3
|
+
@import '../input/input.css';
|
|
4
|
+
@import '../number-input/number-input.css';
|
|
5
|
+
@import '../segmented-control/segmented-control.css';
|
|
6
|
+
@import '../select/select.css';
|
|
7
|
+
@import '../time-field/time-field.css';
|
|
8
|
+
|
|
9
|
+
@layer cinder.components {
|
|
10
|
+
/* ========================================
|
|
11
|
+
* SCHEDULE-BUILDER
|
|
12
|
+
* Recurrence-definition control: presets, cron, and interval authoring
|
|
13
|
+
* modes behind a tablist, with an always-visible summary line, next-fires
|
|
14
|
+
* preview, and timezone display slot.
|
|
15
|
+
* ======================================== */
|
|
16
|
+
|
|
17
|
+
.cinder-schedule-builder {
|
|
18
|
+
display: flex;
|
|
19
|
+
flex-direction: column;
|
|
20
|
+
gap: var(--cinder-space-4);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/* ----------------------------------------
|
|
24
|
+
* Mode panel
|
|
25
|
+
* ---------------------------------------- */
|
|
26
|
+
|
|
27
|
+
.cinder-schedule-builder__panel {
|
|
28
|
+
display: flex;
|
|
29
|
+
flex-direction: column;
|
|
30
|
+
gap: var(--cinder-space-3);
|
|
31
|
+
padding-block-start: var(--cinder-space-1);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.cinder-schedule-builder__preset-kind {
|
|
35
|
+
margin-block-end: var(--cinder-space-1);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.cinder-schedule-builder__field-row {
|
|
39
|
+
display: flex;
|
|
40
|
+
flex-wrap: wrap;
|
|
41
|
+
align-items: flex-end;
|
|
42
|
+
gap: var(--cinder-space-3);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.cinder-schedule-builder__field-row > * {
|
|
46
|
+
flex: 1 1 10rem;
|
|
47
|
+
min-inline-size: 8rem;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.cinder-schedule-builder__weekday-group {
|
|
51
|
+
display: flex;
|
|
52
|
+
flex-wrap: wrap;
|
|
53
|
+
gap: var(--cinder-space-2);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.cinder-schedule-builder__cron-fields {
|
|
57
|
+
display: grid;
|
|
58
|
+
grid-template-columns: repeat(auto-fit, minmax(7rem, 1fr));
|
|
59
|
+
gap: var(--cinder-space-3);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/* ----------------------------------------
|
|
63
|
+
* Always-visible informational blocks: summary, preview, timezone
|
|
64
|
+
* ---------------------------------------- */
|
|
65
|
+
|
|
66
|
+
.cinder-schedule-builder__summary,
|
|
67
|
+
.cinder-schedule-builder__preview,
|
|
68
|
+
.cinder-schedule-builder__timezone {
|
|
69
|
+
display: flex;
|
|
70
|
+
flex-direction: column;
|
|
71
|
+
gap: var(--cinder-space-1);
|
|
72
|
+
margin: 0;
|
|
73
|
+
padding: var(--cinder-space-3);
|
|
74
|
+
border: 1px solid var(--cinder-border-muted);
|
|
75
|
+
border-radius: var(--cinder-radius-md);
|
|
76
|
+
background: var(--cinder-surface-inset);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.cinder-schedule-builder__section-label {
|
|
80
|
+
display: block;
|
|
81
|
+
margin: 0;
|
|
82
|
+
font-size: var(--cinder-text-xs);
|
|
83
|
+
font-weight: var(--cinder-font-semibold);
|
|
84
|
+
text-transform: uppercase;
|
|
85
|
+
color: var(--cinder-text-muted);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.cinder-schedule-builder__summary-text {
|
|
89
|
+
margin: 0;
|
|
90
|
+
font-size: var(--cinder-text-sm);
|
|
91
|
+
color: var(--cinder-text);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.cinder-schedule-builder__preview-list {
|
|
95
|
+
margin: 0;
|
|
96
|
+
padding: 0;
|
|
97
|
+
list-style: none;
|
|
98
|
+
display: flex;
|
|
99
|
+
flex-direction: column;
|
|
100
|
+
gap: var(--cinder-space-1);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.cinder-schedule-builder__preview-item {
|
|
104
|
+
font-size: var(--cinder-text-sm);
|
|
105
|
+
color: var(--cinder-text);
|
|
106
|
+
font-variant-numeric: tabular-nums;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.cinder-schedule-builder__timezone-value {
|
|
110
|
+
margin: 0;
|
|
111
|
+
font-size: var(--cinder-text-sm);
|
|
112
|
+
color: var(--cinder-text);
|
|
113
|
+
font-family: var(--cinder-font-mono);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.cinder-schedule-builder__empty {
|
|
117
|
+
font-size: var(--cinder-text-sm);
|
|
118
|
+
color: var(--cinder-text-muted);
|
|
119
|
+
font-style: italic;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
function __accessProp(key) {
|
|
7
|
+
return this[key];
|
|
8
|
+
}
|
|
9
|
+
var __toESMCache_node;
|
|
10
|
+
var __toESMCache_esm;
|
|
11
|
+
var __toESM = (mod, isNodeMode, target) => {
|
|
12
|
+
var canCache = mod != null && typeof mod === "object";
|
|
13
|
+
if (canCache) {
|
|
14
|
+
var cache = isNodeMode ? __toESMCache_node ??= new WeakMap : __toESMCache_esm ??= new WeakMap;
|
|
15
|
+
var cached = cache.get(mod);
|
|
16
|
+
if (cached)
|
|
17
|
+
return cached;
|
|
18
|
+
}
|
|
19
|
+
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
20
|
+
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
21
|
+
for (let key of __getOwnPropNames(mod))
|
|
22
|
+
if (!__hasOwnProp.call(to, key))
|
|
23
|
+
__defProp(to, key, {
|
|
24
|
+
get: __accessProp.bind(mod, key),
|
|
25
|
+
enumerable: true
|
|
26
|
+
});
|
|
27
|
+
if (canCache)
|
|
28
|
+
cache.set(mod, to);
|
|
29
|
+
return to;
|
|
30
|
+
};
|
|
31
|
+
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
|
32
|
+
var __returnValue = (v) => v;
|
|
33
|
+
function __exportSetter(name, newValue) {
|
|
34
|
+
this[name] = __returnValue.bind(null, newValue);
|
|
35
|
+
}
|
|
36
|
+
var __export = (target, all) => {
|
|
37
|
+
for (var name in all)
|
|
38
|
+
__defProp(target, name, {
|
|
39
|
+
get: all[name],
|
|
40
|
+
enumerable: true,
|
|
41
|
+
configurable: true,
|
|
42
|
+
set: __exportSetter.bind(all, name)
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
46
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
47
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
48
|
+
}) : x)(function(x) {
|
|
49
|
+
if (typeof require !== "undefined")
|
|
50
|
+
return require.apply(this, arguments);
|
|
51
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
// src/components/schedule-builder/schedule-builder.schema.ts
|
|
55
|
+
var schema = {
|
|
56
|
+
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
57
|
+
type: "object",
|
|
58
|
+
properties: {
|
|
59
|
+
value: {
|
|
60
|
+
anyOf: [
|
|
61
|
+
{
|
|
62
|
+
type: "object",
|
|
63
|
+
properties: {
|
|
64
|
+
mode: {
|
|
65
|
+
const: "cron"
|
|
66
|
+
},
|
|
67
|
+
expression: {
|
|
68
|
+
type: "string"
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
additionalProperties: false,
|
|
72
|
+
required: ["expression", "mode"]
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
type: "object",
|
|
76
|
+
properties: {
|
|
77
|
+
mode: {
|
|
78
|
+
const: "interval"
|
|
79
|
+
},
|
|
80
|
+
every: {
|
|
81
|
+
type: "integer",
|
|
82
|
+
minimum: 1
|
|
83
|
+
},
|
|
84
|
+
unit: {
|
|
85
|
+
enum: ["minutes", "hours", "days", "weeks"]
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
additionalProperties: false,
|
|
89
|
+
required: ["every", "mode", "unit"]
|
|
90
|
+
}
|
|
91
|
+
],
|
|
92
|
+
description: "The current recurrence value (controlled). When omitted, the component\nstarts from a sensible default (`interval`, every 15 minutes)."
|
|
93
|
+
},
|
|
94
|
+
previewCount: {
|
|
95
|
+
type: "integer",
|
|
96
|
+
description: "How many upcoming fires to request from `computeNextFires`. Defaults to 5.",
|
|
97
|
+
minimum: 1
|
|
98
|
+
},
|
|
99
|
+
timezoneLabel: {
|
|
100
|
+
type: "string",
|
|
101
|
+
description: "Timezone label rendered in the always-visible timezone display slot."
|
|
102
|
+
},
|
|
103
|
+
label: {
|
|
104
|
+
type: "string",
|
|
105
|
+
description: 'Accessible label for the whole control. Defaults to "Schedule".'
|
|
106
|
+
},
|
|
107
|
+
class: {
|
|
108
|
+
type: "string",
|
|
109
|
+
description: "Additional CSS classes applied to the root element."
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
additionalProperties: false,
|
|
113
|
+
metadata: {
|
|
114
|
+
unsupportedProps: [
|
|
115
|
+
{
|
|
116
|
+
name: "computeNextFires",
|
|
117
|
+
reason: "function-or-snippet",
|
|
118
|
+
description: `Injected next-fires computation. The component passes the current value and
|
|
119
|
+
the requested count and renders whatever fires the consumer returns. When
|
|
120
|
+
omitted, the preview list is hidden (the component ships no date logic).`
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
name: "onchange",
|
|
124
|
+
reason: "function-or-snippet",
|
|
125
|
+
description: `Called whenever the user edits the recurrence. Receives the next lossless
|
|
126
|
+
{@link ScheduleValue}. The consumer owns persistence and validation.`
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
name: "timezone",
|
|
130
|
+
reason: "function-or-snippet",
|
|
131
|
+
description: "Custom content for the timezone display slot. Takes precedence over\n`timezoneLabel` when both are supplied."
|
|
132
|
+
}
|
|
133
|
+
]
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
var schedule_builder_schema_default = schema;
|
|
137
|
+
export {
|
|
138
|
+
schedule_builder_schema_default as default
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
//# debugId=AA80EA75536D901B64756E2164756E21
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @cinder
|
|
3
|
+
* @category form
|
|
4
|
+
* @status beta
|
|
5
|
+
* @purpose Recurrence-definition control that authors a cron or fixed-interval schedule via presets, raw cron fields, or an interval, alongside an always-visible summary, next-fires preview, and timezone slot.
|
|
6
|
+
* @tag schedule
|
|
7
|
+
* @tag recurrence
|
|
8
|
+
* @tag cron
|
|
9
|
+
* @tag form
|
|
10
|
+
* @useWhen Letting a user define when a job or notification recurs, supplying your own date/cron library to compute upcoming fire times.
|
|
11
|
+
* @useWhen You want a friendly presets UI (every N, daily, weekly, monthly) that still round-trips to a portable cron or interval value.
|
|
12
|
+
* @avoidWhen You need overlap policy, jitter, or backfill controls — those belong to the consumer's surrounding form. | invocation-rule-builder
|
|
13
|
+
* @avoidWhen You only need to pick a single point in time, not a recurrence — use date-picker instead. | date-picker
|
|
14
|
+
* @related date-picker, segmented-control, input, time-field
|
|
15
|
+
* @a11yPattern WAI-ARIA Tabs
|
|
16
|
+
* @a11yNote The three authoring modes (presets, cron, interval) are a tablist; each cron field reports validity via aria-invalid and an associated hint/error.
|
|
17
|
+
*/
|
|
18
|
+
export type { ScheduleAuthoringMode, ScheduleBuilderProps, ScheduleFire, ScheduleIntervalUnit, ScheduleValue, } from './schedule-builder.types.ts';
|
|
19
|
+
import type { ScheduleBuilderProps } from './schedule-builder.types.ts';
|
|
20
|
+
declare const ScheduleBuilder: import("svelte").Component<ScheduleBuilderProps, {}, "">;
|
|
21
|
+
type ScheduleBuilder = ReturnType<typeof ScheduleBuilder>;
|
|
22
|
+
export default ScheduleBuilder;
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
3
|
+
/**
|
|
4
|
+
* The unit for an interval recurrence.
|
|
5
|
+
*/
|
|
6
|
+
export type ScheduleIntervalUnit = 'minutes' | 'hours' | 'days' | 'weeks';
|
|
7
|
+
/**
|
|
8
|
+
* The emitted, lossless recurrence value. There are only ever TWO value
|
|
9
|
+
* variants — `cron` and `interval` — even though the UI offers a third
|
|
10
|
+
* "presets" authoring mode. Presets are sugar that lower to one of these two
|
|
11
|
+
* (e.g. "every 15 minutes" → `interval`; "daily at 09:00" → `cron`); there is
|
|
12
|
+
* no `mode: 'preset'` in the value a consumer receives.
|
|
13
|
+
*/
|
|
14
|
+
export type ScheduleValue = {
|
|
15
|
+
/** Discriminator: a 5-field cron recurrence. */
|
|
16
|
+
mode: 'cron';
|
|
17
|
+
/** The 5-field cron expression, space-separated (minute hour day-of-month month day-of-week). */
|
|
18
|
+
expression: string;
|
|
19
|
+
} | {
|
|
20
|
+
/** Discriminator: a fixed-interval recurrence. */
|
|
21
|
+
mode: 'interval';
|
|
22
|
+
/** How many `unit`s between fires. A positive integer. */
|
|
23
|
+
every: number;
|
|
24
|
+
/** The interval unit. */
|
|
25
|
+
unit: ScheduleIntervalUnit;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* The authoring mode surfaced in the UI's SegmentedControl. Distinct from
|
|
29
|
+
* {@link ScheduleValue}'s `mode` discriminator: `presets` is an authoring
|
|
30
|
+
* convenience that emits a `cron` or `interval` value.
|
|
31
|
+
*/
|
|
32
|
+
export type ScheduleAuthoringMode = 'presets' | 'cron' | 'interval';
|
|
33
|
+
/**
|
|
34
|
+
* A single computed upcoming fire, as returned by the injected
|
|
35
|
+
* {@link ScheduleBuilderProps.computeNextFires} callback. The component never
|
|
36
|
+
* computes or formats times itself (it ships no date/cron dependency): the
|
|
37
|
+
* consumer returns already-formatted display strings.
|
|
38
|
+
*/
|
|
39
|
+
export type ScheduleFire = {
|
|
40
|
+
/** Stable identity for the keyed preview list. */
|
|
41
|
+
id: string;
|
|
42
|
+
/** Human-readable label for this fire, e.g. "Mon Jun 1, 09:00". */
|
|
43
|
+
label: string;
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Props for the ScheduleBuilder component.
|
|
47
|
+
*
|
|
48
|
+
* ScheduleBuilder is a presentational recurrence-definition control. It owns
|
|
49
|
+
* no scheduling execution, persistence, or date math. It is date-library-free:
|
|
50
|
+
* the "next N fires" preview is produced by the injected `computeNextFires`
|
|
51
|
+
* callback, and degrades gracefully (the preview is hidden) when the callback
|
|
52
|
+
* is absent. Scope is recurrence only — overlap policy, jitter, and backfill
|
|
53
|
+
* belong to the consumer's surrounding form.
|
|
54
|
+
*/
|
|
55
|
+
export type ScheduleBuilderProps = Omit<HTMLAttributes<HTMLDivElement>, 'class' | 'children' | 'onchange'> & {
|
|
56
|
+
/**
|
|
57
|
+
* The current recurrence value (controlled). Pass the value returned from
|
|
58
|
+
* `onchange` back in to commit an edit. When omitted, the component starts
|
|
59
|
+
* from a sensible default (`interval`, every 15 minutes).
|
|
60
|
+
*/
|
|
61
|
+
value?: ScheduleValue | undefined;
|
|
62
|
+
/**
|
|
63
|
+
* Called whenever the user edits the recurrence. Receives the next lossless
|
|
64
|
+
* {@link ScheduleValue}. The consumer owns persistence and validation.
|
|
65
|
+
*/
|
|
66
|
+
onchange?: ((value: ScheduleValue) => void) | undefined;
|
|
67
|
+
/**
|
|
68
|
+
* Injected next-fires computation. The component passes the current value and
|
|
69
|
+
* the requested count and renders whatever fires the consumer returns. When
|
|
70
|
+
* omitted, the preview list is hidden (the component ships no date logic).
|
|
71
|
+
*/
|
|
72
|
+
computeNextFires?: ((value: ScheduleValue, count: number) => ScheduleFire[]) | undefined;
|
|
73
|
+
/**
|
|
74
|
+
* How many upcoming fires to request from `computeNextFires`. Defaults to 5.
|
|
75
|
+
*/
|
|
76
|
+
previewCount?: number | undefined;
|
|
77
|
+
/**
|
|
78
|
+
* Timezone label rendered in the always-visible timezone display slot, e.g.
|
|
79
|
+
* "America/New_York" or "UTC". Purely presentational — the component does not
|
|
80
|
+
* interpret it. When omitted, provide the `timezone` snippet instead; if
|
|
81
|
+
* neither is supplied the slot shows a "Not set" placeholder (the slot itself
|
|
82
|
+
* is always rendered).
|
|
83
|
+
*/
|
|
84
|
+
timezoneLabel?: string | undefined;
|
|
85
|
+
/**
|
|
86
|
+
* Custom content for the timezone display slot. Takes precedence over
|
|
87
|
+
* `timezoneLabel` when both are supplied.
|
|
88
|
+
*/
|
|
89
|
+
timezone?: Snippet | undefined;
|
|
90
|
+
/** Accessible label for the whole control. Defaults to "Schedule". */
|
|
91
|
+
label?: string | undefined;
|
|
92
|
+
/** Additional CSS classes applied to the root element. */
|
|
93
|
+
class?: string | undefined;
|
|
94
|
+
};
|
|
95
|
+
/**
|
|
96
|
+
* Schema-facing mirror of {@link ScheduleValue}.
|
|
97
|
+
* @schemaObject
|
|
98
|
+
*/
|
|
99
|
+
export type ScheduleValueSchema = {
|
|
100
|
+
mode: 'cron';
|
|
101
|
+
expression: string;
|
|
102
|
+
} | {
|
|
103
|
+
mode: 'interval';
|
|
104
|
+
every: number;
|
|
105
|
+
unit: ScheduleIntervalUnit;
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* Cinder-specific schema surface for ScheduleBuilder.
|
|
109
|
+
*
|
|
110
|
+
* The `onchange`, `computeNextFires`, and `timezone` props are documented but
|
|
111
|
+
* unsupported by JSON Schema because functions and snippets cannot be modeled.
|
|
112
|
+
*/
|
|
113
|
+
export type ScheduleBuilderSchemaProps = {
|
|
114
|
+
/**
|
|
115
|
+
* The current recurrence value (controlled). When omitted, the component
|
|
116
|
+
* starts from a sensible default (`interval`, every 15 minutes).
|
|
117
|
+
* @schemaObject
|
|
118
|
+
*/
|
|
119
|
+
value?: ScheduleValueSchema | undefined;
|
|
120
|
+
/**
|
|
121
|
+
* How many upcoming fires to request from `computeNextFires`. Defaults to 5.
|
|
122
|
+
*/
|
|
123
|
+
previewCount?: number | undefined;
|
|
124
|
+
/** Timezone label rendered in the always-visible timezone display slot. */
|
|
125
|
+
timezoneLabel?: string | undefined;
|
|
126
|
+
/** Accessible label for the whole control. Defaults to "Schedule". */
|
|
127
|
+
label?: string | undefined;
|
|
128
|
+
/** Additional CSS classes applied to the root element. */
|
|
129
|
+
class?: string | undefined;
|
|
130
|
+
};
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type { ScheduleIntervalUnit, ScheduleValue } from './schedule-builder.types.ts';
|
|
2
|
+
/** The interval units offered in the interval mode selector, in order. */
|
|
3
|
+
export declare const INTERVAL_UNITS: readonly ScheduleIntervalUnit[];
|
|
4
|
+
/** Weekday chips for the weekly preset. `value` matches cron day-of-week (0 = Sunday). */
|
|
5
|
+
export declare const WEEKDAYS: readonly {
|
|
6
|
+
value: number;
|
|
7
|
+
short: string;
|
|
8
|
+
long: string;
|
|
9
|
+
}[];
|
|
10
|
+
/** The five cron fields, in order, with their valid numeric ranges and hints. */
|
|
11
|
+
export declare const CRON_FIELDS: readonly {
|
|
12
|
+
name: string;
|
|
13
|
+
min: number;
|
|
14
|
+
max: number;
|
|
15
|
+
hint: string;
|
|
16
|
+
}[];
|
|
17
|
+
/** The default value used when the consumer passes none. */
|
|
18
|
+
export declare function defaultScheduleValue(): ScheduleValue;
|
|
19
|
+
/**
|
|
20
|
+
* Validate a single cron field value against its field range. Accepts a
|
|
21
|
+
* wildcard, a step, a range, a comma list, or a plain number. Returns an error
|
|
22
|
+
* message when invalid, or `undefined` when the field is acceptable.
|
|
23
|
+
*/
|
|
24
|
+
export declare function validateCronField(rawValue: string, fieldIndex: number): string | undefined;
|
|
25
|
+
/** Whether all five cron fields are individually valid. */
|
|
26
|
+
export declare function cronFieldsValid(fields: string[]): boolean;
|
|
27
|
+
/** Join five cron fields into a normalized single-space expression. */
|
|
28
|
+
export declare function joinCron(fields: string[]): string;
|
|
29
|
+
/** Split a cron expression into exactly five fields, padding with `*` if short. */
|
|
30
|
+
export declare function splitCron(expression: string): [string, string, string, string, string];
|
|
31
|
+
/** Clamp/parse a `HH:MM` time string into `{ hour, minute }`, defaulting to 00:00. */
|
|
32
|
+
export declare function parseTime(time: string): {
|
|
33
|
+
hour: number;
|
|
34
|
+
minute: number;
|
|
35
|
+
};
|
|
36
|
+
/** "every N minutes/hours" → an interval value. */
|
|
37
|
+
export declare function lowerEveryN(every: number, unit: ScheduleIntervalUnit): ScheduleValue;
|
|
38
|
+
/** "daily at HH:MM" → a cron value. */
|
|
39
|
+
export declare function lowerDailyAt(time: string): ScheduleValue;
|
|
40
|
+
/** "weekly on [days] at HH:MM" → a cron value. Empty days falls back to every day. */
|
|
41
|
+
export declare function lowerWeeklyAt(days: number[], time: string): ScheduleValue;
|
|
42
|
+
/** "monthly on day N at HH:MM" → a cron value. */
|
|
43
|
+
export declare function lowerMonthlyOnDay(day: number, time: string): ScheduleValue;
|
|
44
|
+
/**
|
|
45
|
+
* Convert any value into cron fields, so switching into cron mode always has
|
|
46
|
+
* something sensible to show. Only `minutes` and `hours` intervals whose
|
|
47
|
+
* `every` evenly divides their field's cycle (60 for minutes, 24 for hours)
|
|
48
|
+
* are losslessly representable as a cron step wildcard — see
|
|
49
|
+
* `isEvenDivisorStep`. A non-dividing minute/hour interval (e.g. every 45
|
|
50
|
+
* minutes or every 5 hours), and `days`/`weeks` intervals (a step wildcard on
|
|
51
|
+
* the day-of-month field resets at the start of every month rather than
|
|
52
|
+
* repeating every N days, and cron has no field for "every N weeks" at all),
|
|
53
|
+
* would silently change the schedule's actual cadence the moment a user
|
|
54
|
+
* merely LOOKED at the Cron tab if lowered to a step wildcard. Seed an honest
|
|
55
|
+
* neutral default (daily at midnight) instead for all of those — see
|
|
56
|
+
* `valueToInterval` below, which mirrors this by only recovering a step that
|
|
57
|
+
* actually divides evenly.
|
|
58
|
+
*/
|
|
59
|
+
export declare function valueToCronFields(value: ScheduleValue): string[];
|
|
60
|
+
/**
|
|
61
|
+
* Recover an interval `{ every, unit }` from a value when representable, so
|
|
62
|
+
* switching into interval mode is lossless for simple step patterns. Only a
|
|
63
|
+
* `minutes` or `hours` step that evenly divides its field's cycle (60 or 24
|
|
64
|
+
* — see `isEvenDivisorStep`) is recovered: a non-dividing minute/hour step
|
|
65
|
+
* (e.g. a 45-minute step wildcard) is not a true fixed-gap interval, and a
|
|
66
|
+
* day-of-month step
|
|
67
|
+
* wildcard is deliberately NOT read back as `{ unit: 'days' }` at all —
|
|
68
|
+
* cron's day-of-month step resets every month, so it is not equivalent to
|
|
69
|
+
* "every N days" and `valueToCronFields` never produces one for an interval
|
|
70
|
+
* value. Returns `undefined` when the cron expression is not a pure,
|
|
71
|
+
* evenly-dividing minute/hour interval.
|
|
72
|
+
*/
|
|
73
|
+
export declare function valueToInterval(value: ScheduleValue): {
|
|
74
|
+
every: number;
|
|
75
|
+
unit: ScheduleIntervalUnit;
|
|
76
|
+
} | undefined;
|
|
77
|
+
/** A concise, human-readable description of a recurrence value. */
|
|
78
|
+
export declare function describeValue(value: ScheduleValue): string;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
function __accessProp(key) {
|
|
7
|
+
return this[key];
|
|
8
|
+
}
|
|
9
|
+
var __toESMCache_node;
|
|
10
|
+
var __toESMCache_esm;
|
|
11
|
+
var __toESM = (mod, isNodeMode, target) => {
|
|
12
|
+
var canCache = mod != null && typeof mod === "object";
|
|
13
|
+
if (canCache) {
|
|
14
|
+
var cache = isNodeMode ? __toESMCache_node ??= new WeakMap : __toESMCache_esm ??= new WeakMap;
|
|
15
|
+
var cached = cache.get(mod);
|
|
16
|
+
if (cached)
|
|
17
|
+
return cached;
|
|
18
|
+
}
|
|
19
|
+
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
20
|
+
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
21
|
+
for (let key of __getOwnPropNames(mod))
|
|
22
|
+
if (!__hasOwnProp.call(to, key))
|
|
23
|
+
__defProp(to, key, {
|
|
24
|
+
get: __accessProp.bind(mod, key),
|
|
25
|
+
enumerable: true
|
|
26
|
+
});
|
|
27
|
+
if (canCache)
|
|
28
|
+
cache.set(mod, to);
|
|
29
|
+
return to;
|
|
30
|
+
};
|
|
31
|
+
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
|
32
|
+
var __returnValue = (v) => v;
|
|
33
|
+
function __exportSetter(name, newValue) {
|
|
34
|
+
this[name] = __returnValue.bind(null, newValue);
|
|
35
|
+
}
|
|
36
|
+
var __export = (target, all) => {
|
|
37
|
+
for (var name in all)
|
|
38
|
+
__defProp(target, name, {
|
|
39
|
+
get: all[name],
|
|
40
|
+
enumerable: true,
|
|
41
|
+
configurable: true,
|
|
42
|
+
set: __exportSetter.bind(all, name)
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
46
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
47
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
48
|
+
}) : x)(function(x) {
|
|
49
|
+
if (typeof require !== "undefined")
|
|
50
|
+
return require.apply(this, arguments);
|
|
51
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
// src/components/schedule-builder/schedule-builder.variables.ts
|
|
55
|
+
var variables = [];
|
|
56
|
+
var schedule_builder_variables_default = variables;
|
|
57
|
+
export {
|
|
58
|
+
schedule_builder_variables_default as default
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
//# debugId=638BB268C8E04A7364756E2164756E21
|
|
@@ -57,7 +57,7 @@ import"@lostgradient/cinder/tag-input/styles";
|
|
|
57
57
|
// src/components/tag-input/tag-input.svelte
|
|
58
58
|
import"svelte/internal/disclose-version";
|
|
59
59
|
import * as $2 from "svelte/internal/client";
|
|
60
|
-
import { tick, untrack } from "svelte";
|
|
60
|
+
import { flushSync, tick, untrack } from "svelte";
|
|
61
61
|
|
|
62
62
|
// ../../node_modules/esm-env/true.js
|
|
63
63
|
var true_default = true;
|
|
@@ -267,6 +267,7 @@ var rest_excludes = new Set([
|
|
|
267
267
|
"max",
|
|
268
268
|
"validate",
|
|
269
269
|
"allowDuplicates",
|
|
270
|
+
"commitOnSubmit",
|
|
270
271
|
"disabled",
|
|
271
272
|
"readonly",
|
|
272
273
|
"name",
|
|
@@ -290,7 +291,7 @@ var root_4 = $2.from_html(`<div><div class="cinder-tag-input__control"><ul class
|
|
|
290
291
|
function Tag_input($$anchor, $$props) {
|
|
291
292
|
const generatedId = $2.props_id();
|
|
292
293
|
$2.push($$props, true);
|
|
293
|
-
let delimiter = $2.prop($$props, "delimiter", 3, ","), allowDuplicates = $2.prop($$props, "allowDuplicates", 3, false), readonly = $2.prop($$props, "readonly", 3, false), rest = $2.rest_props($$props, rest_excludes);
|
|
294
|
+
let delimiter = $2.prop($$props, "delimiter", 3, ","), allowDuplicates = $2.prop($$props, "allowDuplicates", 3, false), commitOnSubmit = $2.prop($$props, "commitOnSubmit", 3, false), readonly = $2.prop($$props, "readonly", 3, false), rest = $2.rest_props($$props, rest_excludes);
|
|
294
295
|
const initialDefaultTags = untrack(() => [...$$props.defaultValue ?? []]);
|
|
295
296
|
const context = getFormFieldContext();
|
|
296
297
|
let rootElement = $2.state(null);
|
|
@@ -345,6 +346,19 @@ function Tag_input($$anchor, $$props) {
|
|
|
345
346
|
const form = $2.get(inputElement).closest("form");
|
|
346
347
|
if (!form)
|
|
347
348
|
return;
|
|
349
|
+
const onSubmit = (event2) => {
|
|
350
|
+
if (!commitOnSubmit() || $2.get(field).disabled || $2.get(resolvedReadonly))
|
|
351
|
+
return;
|
|
352
|
+
if (!$2.get(draftValue).trim())
|
|
353
|
+
return;
|
|
354
|
+
let committed = false;
|
|
355
|
+
flushSync(() => {
|
|
356
|
+
committed = commitDraft();
|
|
357
|
+
});
|
|
358
|
+
if (!committed) {
|
|
359
|
+
event2.preventDefault();
|
|
360
|
+
}
|
|
361
|
+
};
|
|
348
362
|
const onReset = () => {
|
|
349
363
|
$2.set(draftValue, "");
|
|
350
364
|
$2.set(inlineError, null);
|
|
@@ -353,8 +367,12 @@ function Tag_input($$anchor, $$props) {
|
|
|
353
367
|
$2.set(uncontrolledTags, [...initialDefaultTags], true);
|
|
354
368
|
}
|
|
355
369
|
};
|
|
370
|
+
form.addEventListener("submit", onSubmit, true);
|
|
356
371
|
form.addEventListener("reset", onReset);
|
|
357
|
-
return () =>
|
|
372
|
+
return () => {
|
|
373
|
+
form.removeEventListener("submit", onSubmit, true);
|
|
374
|
+
form.removeEventListener("reset", onReset);
|
|
375
|
+
};
|
|
358
376
|
});
|
|
359
377
|
function getChipElements() {
|
|
360
378
|
return Array.from($2.get(rootElement)?.querySelectorAll(".cinder-tag-input__remove") ?? []);
|
|
@@ -622,4 +640,4 @@ export {
|
|
|
622
640
|
Tag_input as TagInput
|
|
623
641
|
};
|
|
624
642
|
|
|
625
|
-
//# debugId=
|
|
643
|
+
//# debugId=5AB42CD56739898464756E2164756E21
|
|
@@ -82,6 +82,10 @@ var schema = {
|
|
|
82
82
|
type: "boolean",
|
|
83
83
|
description: "Allow the same trimmed tag value to appear more than once."
|
|
84
84
|
},
|
|
85
|
+
commitOnSubmit: {
|
|
86
|
+
type: "boolean",
|
|
87
|
+
description: "Commit a non-empty pending draft before the parent form submits."
|
|
88
|
+
},
|
|
85
89
|
autocapitalize: {
|
|
86
90
|
enum: ["off", "on", "characters", "none", "sentences", "words", null],
|
|
87
91
|
description: "Autocapitalization hint forwarded to the visible text input."
|
|
@@ -219,4 +223,4 @@ export {
|
|
|
219
223
|
tag_input_schema_default as default
|
|
220
224
|
};
|
|
221
225
|
|
|
222
|
-
//# debugId=
|
|
226
|
+
//# debugId=9E1D0F308A91268B64756E2164756E21
|
|
@@ -15,6 +15,8 @@ export type TagInputProps = SupportedInputAttributes & {
|
|
|
15
15
|
validate?: (tag: string) => boolean | string;
|
|
16
16
|
/** Allow the same trimmed tag value to appear more than once. */
|
|
17
17
|
allowDuplicates?: boolean;
|
|
18
|
+
/** Commit a non-empty pending draft before the parent form submits. */
|
|
19
|
+
commitOnSubmit?: boolean;
|
|
18
20
|
/** Disable the input and chip removal affordances. */
|
|
19
21
|
disabled?: boolean;
|
|
20
22
|
/** Render the pending-tag input as read-only and make committed tags non-removable. */
|
|
@@ -39,6 +41,8 @@ export interface TagInputSchemaProps {
|
|
|
39
41
|
delimiter?: string | RegExp;
|
|
40
42
|
/** Allow the same trimmed tag value to appear more than once. */
|
|
41
43
|
allowDuplicates?: boolean;
|
|
44
|
+
/** Commit a non-empty pending draft before the parent form submits. */
|
|
45
|
+
commitOnSubmit?: boolean;
|
|
42
46
|
/** Autocomplete hint forwarded to the visible text input. */
|
|
43
47
|
autocomplete?: HTMLInputAttributes['autocomplete'];
|
|
44
48
|
/** Autocapitalization hint forwarded to the visible text input. */
|