@sylwellsoftware/fray 0.2.0 → 0.4.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/README.md +139 -13
- package/dist/Components/Placeholder.d.ts +1 -1
- package/dist/Components/Placeholder.d.ts.map +1 -1
- package/dist/Components/component.d.ts +5 -0
- package/dist/Components/component.d.ts.map +1 -1
- package/dist/Components/controlUtils.d.ts.map +1 -1
- package/dist/Components/data/filterState.d.ts +38 -0
- package/dist/Components/data/filterState.d.ts.map +1 -0
- package/dist/Components/data/listview/listview.d.ts +16 -5
- package/dist/Components/data/listview/listview.d.ts.map +1 -1
- package/dist/Components/data/selectionhandler.d.ts +24 -5
- package/dist/Components/data/selectionhandler.d.ts.map +1 -1
- package/dist/Components/data/table/DataTable.d.ts +36 -30
- package/dist/Components/data/table/DataTable.d.ts.map +1 -1
- package/dist/Components/data/table/FilterPanel.d.ts +8 -1
- package/dist/Components/data/table/FilterPanel.d.ts.map +1 -1
- package/dist/Components/data/table/TableHeaderCell.d.ts.map +1 -1
- package/dist/Components/data/table/tableDataSource.d.ts +49 -0
- package/dist/Components/data/table/tableDataSource.d.ts.map +1 -0
- package/dist/Components/data/table/tableQuery.d.ts +6 -2
- package/dist/Components/data/table/tableQuery.d.ts.map +1 -1
- package/dist/Components/data/treeview/treeModel.d.ts +23 -0
- package/dist/Components/data/treeview/treeModel.d.ts.map +1 -0
- package/dist/Components/data/treeview/treeview.d.ts +1 -1
- package/dist/Components/data/treeview/treeview.d.ts.map +1 -1
- package/dist/Components/dialog/dialog.d.ts +1 -1
- package/dist/Components/dialog/dialog.d.ts.map +1 -1
- package/dist/Components/lineinputs/checkbox/Checkbox.d.ts +1 -1
- package/dist/Components/lineinputs/checkbox/Checkbox.d.ts.map +1 -1
- package/dist/Components/lineinputs/checkbox/QuadCheckbox.d.ts +2 -2
- package/dist/Components/lineinputs/checkbox/QuadCheckbox.d.ts.map +1 -1
- package/dist/Components/lineinputs/checkbox/TriCheckbox.d.ts +2 -2
- package/dist/Components/lineinputs/checkbox/TriCheckbox.d.ts.map +1 -1
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2680 -726
- package/dist/index.js.map +1 -1
- package/dist/{jsx-dev-runtime-DukiDpV9.js → jsx-dev-runtime-pzseD2Sz.js} +527 -414
- package/dist/jsx-dev-runtime-pzseD2Sz.js.map +1 -0
- package/dist/jsx-dev-runtime.js +3 -3
- package/dist/jsx-runtime.js +2 -2
- package/dist/runtime.d.ts +4 -0
- package/dist/runtime.d.ts.map +1 -1
- package/dist/services.d.ts +45 -0
- package/dist/services.d.ts.map +1 -0
- package/dist/util/filterMode.d.ts +6 -4
- package/dist/util/filterMode.d.ts.map +1 -1
- package/package.json +4 -9
- package/styles/structural.css +9 -3
- package/themes/README.md +1 -1
- package/themes/minimal/theme.css +1 -1
- package/EXPERIMENTAL.md +0 -75
- package/dist/button-CqDGmkBt.js +0 -212
- package/dist/button-CqDGmkBt.js.map +0 -1
- package/dist/experimental.d.ts +0 -16
- package/dist/experimental.d.ts.map +0 -1
- package/dist/experimental.js +0 -1399
- package/dist/experimental.js.map +0 -1
- package/dist/jsx-dev-runtime-DukiDpV9.js.map +0 -1
package/dist/button-CqDGmkBt.js
DELETED
|
@@ -1,212 +0,0 @@
|
|
|
1
|
-
var N = Object.defineProperty;
|
|
2
|
-
var I = (e, t, a) => t in e ? N(e, t, { enumerable: !0, configurable: !0, writable: !0, value: a }) : e[t] = a;
|
|
3
|
-
var n = (e, t, a) => I(e, typeof t != "symbol" ? t + "" : t, a);
|
|
4
|
-
import { C as k, j as y, c as x, a as T } from "./jsx-dev-runtime-DukiDpV9.js";
|
|
5
|
-
import { Emitter as V } from "@sylwellsoftware/glue";
|
|
6
|
-
let j = 1;
|
|
7
|
-
function B(e, t) {
|
|
8
|
-
return t != null && String(t).length > 0 ? String(t) : `fray-${e}-${j++}`;
|
|
9
|
-
}
|
|
10
|
-
function q(e, t, a, i) {
|
|
11
|
-
if (t.valueEmitter != null)
|
|
12
|
-
return R(t.valueEmitter, "valueEmitter"), t.valueEmitter;
|
|
13
|
-
const s = t.defaultValue ?? t.value ?? t.initialValue ?? a, o = { owner: e, purpose: i };
|
|
14
|
-
return new V(s, o);
|
|
15
|
-
}
|
|
16
|
-
function R(e, t = "emitter") {
|
|
17
|
-
if (e == null || typeof e != "object" && typeof e != "function" || typeof Reflect.get(e, "get") != "function" || typeof Reflect.get(e, "set") != "function" || typeof Reflect.get(e, "subscribe") != "function")
|
|
18
|
-
throw new TypeError(`${t} must be an emitter`);
|
|
19
|
-
}
|
|
20
|
-
function w(e) {
|
|
21
|
-
return e.className ?? e.class ?? "";
|
|
22
|
-
}
|
|
23
|
-
function E(e, ...t) {
|
|
24
|
-
if (e != null) {
|
|
25
|
-
if (typeof e != "function") throw new TypeError("Control callback must be a function");
|
|
26
|
-
e(...t);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
function F(e, t = "options") {
|
|
30
|
-
if (!Array.isArray(e)) throw new TypeError(`${t} must be an array`);
|
|
31
|
-
}
|
|
32
|
-
function $(e) {
|
|
33
|
-
return e === "" ? "prefer" : e === "!" ? "deny" : e === "_" ? "require" : e === "☐" ? "neutral" : String(e);
|
|
34
|
-
}
|
|
35
|
-
const b = {
|
|
36
|
-
/** Deny mode: Excludes items that match the filter. */
|
|
37
|
-
Deny: "!",
|
|
38
|
-
/** Require mode: Includes only items that match the filter. */
|
|
39
|
-
Require: "_",
|
|
40
|
-
/** Prefer mode: If there are any filter options that are set to Prefer, at least one of the preferred filter options must match. Otherwise, it is treated as Neutral. */
|
|
41
|
-
Prefer: "",
|
|
42
|
-
/** Neutral mode: Does not affect the inclusion or exclusion of items. */
|
|
43
|
-
Neutral: "☐"
|
|
44
|
-
};
|
|
45
|
-
class u extends k {
|
|
46
|
-
constructor(a = {}) {
|
|
47
|
-
super(a);
|
|
48
|
-
n(this, "symbols");
|
|
49
|
-
n(this, "valueEmitter");
|
|
50
|
-
n(this, "semanticStateEmitter");
|
|
51
|
-
const i = this.constructor;
|
|
52
|
-
this.symbols = a.symbols ?? i.symbols, D(this.symbols);
|
|
53
|
-
const s = a.initialSemanticState ?? i.defaultSemanticState ?? this.symbols[0][1], o = { ...a };
|
|
54
|
-
o.defaultValue == null && a.initialSemanticState != null && (o.defaultValue = a.initialSemanticState), this.valueEmitter = q(
|
|
55
|
-
this,
|
|
56
|
-
o,
|
|
57
|
-
s,
|
|
58
|
-
"checkbox semantic state"
|
|
59
|
-
), this.semanticStateEmitter = this.valueEmitter;
|
|
60
|
-
}
|
|
61
|
-
initialize() {
|
|
62
|
-
this.watch(this.valueEmitter);
|
|
63
|
-
}
|
|
64
|
-
cycleState(a = 1, i = null) {
|
|
65
|
-
if (this.props.disabled) return;
|
|
66
|
-
const s = this.symbols.findIndex(([, d]) => Object.is(d, this.valueEmitter.get())), c = ((s < 0 ? 0 : s) + a + this.symbols.length) % this.symbols.length, l = this.symbols[c][1];
|
|
67
|
-
this.valueEmitter.set(l, "checkbox state changed"), E(this.props.onChange, l, i);
|
|
68
|
-
}
|
|
69
|
-
render() {
|
|
70
|
-
const {
|
|
71
|
-
label: a = this.props.value ?? "Option",
|
|
72
|
-
disabled: i = !1,
|
|
73
|
-
required: s = !1,
|
|
74
|
-
name: o,
|
|
75
|
-
value: c
|
|
76
|
-
} = this.props, l = this.valueEmitter.get(), [d] = this.symbols.find(([, r]) => Object.is(r, l)) ?? ["?", l], f = $(l), m = l === b.Prefer || l === b.Require, h = this.Host;
|
|
77
|
-
return /* @__PURE__ */ y(
|
|
78
|
-
h,
|
|
79
|
-
{
|
|
80
|
-
className: w(this.props) || null,
|
|
81
|
-
"data-disabled": i ? "" : null,
|
|
82
|
-
"data-required": s ? "" : null,
|
|
83
|
-
"data-state": f,
|
|
84
|
-
children: /* @__PURE__ */ T(
|
|
85
|
-
"button",
|
|
86
|
-
{
|
|
87
|
-
type: "button",
|
|
88
|
-
role: "checkbox",
|
|
89
|
-
disabled: i,
|
|
90
|
-
name: o,
|
|
91
|
-
value: c == null ? void 0 : String(c),
|
|
92
|
-
"data-part": "control",
|
|
93
|
-
"aria-checked": m ? "true" : "false",
|
|
94
|
-
"aria-required": s ? "true" : null,
|
|
95
|
-
"aria-label": `${a}: ${f}`,
|
|
96
|
-
onClick: (r) => this.cycleState(1, r),
|
|
97
|
-
onKeyDown: (r) => {
|
|
98
|
-
r.key === "ArrowRight" || r.key === "ArrowDown" ? (r.preventDefault(), this.cycleState(1, r)) : (r.key === "ArrowLeft" || r.key === "ArrowUp") && (r.preventDefault(), this.cycleState(-1, r));
|
|
99
|
-
},
|
|
100
|
-
children: [
|
|
101
|
-
/* @__PURE__ */ y("span", { "data-part": "symbol", "aria-hidden": "true", children: d }),
|
|
102
|
-
/* @__PURE__ */ y("span", { "data-part": "label", children: a })
|
|
103
|
-
]
|
|
104
|
-
}
|
|
105
|
-
)
|
|
106
|
-
}
|
|
107
|
-
);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
n(u, "symbols", [
|
|
111
|
-
["☐", b.Neutral],
|
|
112
|
-
["✓", b.Prefer]
|
|
113
|
-
]), n(u, "defaultSemanticState", b.Neutral), n(u, "hostName", "checkbox"), n(u, "standaloneHostName", "check-box"), n(u, "baseStyles", [
|
|
114
|
-
["&", ["inputline"]],
|
|
115
|
-
['& > [data-part="control"]', ["input", "inputline"]],
|
|
116
|
-
["&[data-disabled]", ["disabled"]]
|
|
117
|
-
]), n(u, "css", x`
|
|
118
|
-
& > [data-part="control"] {
|
|
119
|
-
display: inline-flex;
|
|
120
|
-
align-items: center;
|
|
121
|
-
gap: 0.35em;
|
|
122
|
-
width: auto;
|
|
123
|
-
font-family: inherit;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
& [data-part="symbol"] {
|
|
127
|
-
display: inline-grid;
|
|
128
|
-
width: 1em;
|
|
129
|
-
height: 1em;
|
|
130
|
-
line-height: 1;
|
|
131
|
-
place-items: center;
|
|
132
|
-
color: var(--fray-checkbox-symbol-color, currentColor);
|
|
133
|
-
background: var(--fray-checkbox-box-background, transparent);
|
|
134
|
-
border: var(--fray-checkbox-box-border, var(--cbx-o-border));
|
|
135
|
-
border-radius: var(--cbx-border-radius, var(--fray-radius-sm));
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
& [data-part="control"][aria-checked="true"] [data-part="symbol"] {
|
|
139
|
-
background: var(
|
|
140
|
-
--fray-checkbox-box-background-checked,
|
|
141
|
-
var(--fray-selection-background)
|
|
142
|
-
);
|
|
143
|
-
}
|
|
144
|
-
`);
|
|
145
|
-
function D(e) {
|
|
146
|
-
if (!Array.isArray(e) || e.length === 0)
|
|
147
|
-
throw new TypeError("Checkbox symbols must be a non-empty tuple array");
|
|
148
|
-
for (const t of e)
|
|
149
|
-
if (!Array.isArray(t) || t.length < 2)
|
|
150
|
-
throw new TypeError("Checkbox symbols must be [symbol, state] tuples");
|
|
151
|
-
}
|
|
152
|
-
class S extends k {
|
|
153
|
-
constructor(t = {}) {
|
|
154
|
-
if (super(t), t.onClick != null && typeof t.onClick != "function")
|
|
155
|
-
throw new TypeError("Button onClick must be a function");
|
|
156
|
-
}
|
|
157
|
-
render() {
|
|
158
|
-
const {
|
|
159
|
-
children: t = [],
|
|
160
|
-
label: a,
|
|
161
|
-
type: i = "button",
|
|
162
|
-
disabled: s = !1,
|
|
163
|
-
pressed: o,
|
|
164
|
-
busy: c = !1,
|
|
165
|
-
busyLabel: l,
|
|
166
|
-
id: d,
|
|
167
|
-
name: f,
|
|
168
|
-
value: m,
|
|
169
|
-
title: h,
|
|
170
|
-
ariaLabel: r,
|
|
171
|
-
onClick: v
|
|
172
|
-
} = this.props, p = (Array.isArray(t) ? t.length > 0 : t != null && typeof t != "boolean") ? t : a ?? "", C = c ? l ?? p : p, g = s || c;
|
|
173
|
-
return /* @__PURE__ */ y(
|
|
174
|
-
"button",
|
|
175
|
-
{
|
|
176
|
-
id: d,
|
|
177
|
-
name: f,
|
|
178
|
-
value: m == null ? void 0 : String(m),
|
|
179
|
-
title: h,
|
|
180
|
-
type: i,
|
|
181
|
-
disabled: g,
|
|
182
|
-
className: w(this.props) || void 0,
|
|
183
|
-
"data-fray-component": "button",
|
|
184
|
-
"aria-label": r,
|
|
185
|
-
"aria-pressed": o == null ? null : String(!!o),
|
|
186
|
-
"aria-busy": c ? "true" : null,
|
|
187
|
-
onClick: (A) => {
|
|
188
|
-
g || E(v, A);
|
|
189
|
-
},
|
|
190
|
-
children: C
|
|
191
|
-
}
|
|
192
|
-
);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
n(S, "baseStyles", [
|
|
196
|
-
['button[data-fray-component="button"]', ["uiline", "button"]]
|
|
197
|
-
]), n(S, "css", x`
|
|
198
|
-
button[data-fray-component="button"] {
|
|
199
|
-
font-family: inherit;
|
|
200
|
-
}
|
|
201
|
-
`);
|
|
202
|
-
export {
|
|
203
|
-
S as B,
|
|
204
|
-
u as C,
|
|
205
|
-
b as F,
|
|
206
|
-
q as a,
|
|
207
|
-
B as b,
|
|
208
|
-
w as c,
|
|
209
|
-
F as d,
|
|
210
|
-
E as i
|
|
211
|
-
};
|
|
212
|
-
//# sourceMappingURL=button-CqDGmkBt.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"button-CqDGmkBt.js","sources":["../src/Components/controlUtils.ts","../src/util/filterMode.ts","../src/Components/lineinputs/checkbox/Checkbox.tsx","../src/Components/menu/button.tsx"],"sourcesContent":["import {Emitter} from '@sylwellsoftware/glue'\nimport type {EmitterOptions, ReadableEmitter} from '@sylwellsoftware/glue'\n\nimport type {Component, ComponentProps} from './component.js'\n\nexport interface ValueEmitter<TValue> extends ReadableEmitter<TValue, unknown> {\n set(value: TValue, eventOrCause?: unknown): boolean\n}\n\nexport interface ValueControlProps<TValue> extends ComponentProps {\n valueEmitter?: ValueEmitter<TValue>\n value?: TValue\n defaultValue?: TValue\n initialValue?: TValue\n}\n\nlet nextControlId = 1\n\nexport function controlId(prefix: string, provided?: string | number | null): string {\n if (provided != null && String(provided).length > 0) return String(provided)\n return `fray-${prefix}-${nextControlId++}`\n}\n\nexport function createValueEmitter<TValue>(\n component: Component,\n props: ValueControlProps<TValue>,\n fallback: TValue,\n purpose: string,\n): ValueEmitter<TValue> {\n if (props.valueEmitter != null) {\n assertEmitter<TValue>(props.valueEmitter, 'valueEmitter')\n return props.valueEmitter\n }\n const initialValue = props.defaultValue\n ?? props.value\n ?? props.initialValue\n ?? fallback\n const options: EmitterOptions<TValue> = {owner: component, purpose}\n return new Emitter(initialValue, options)\n}\n\nexport function assertEmitter<TValue = unknown>(\n value: unknown,\n name = 'emitter',\n): asserts value is ValueEmitter<TValue> {\n if (value == null\n || (typeof value !== 'object' && typeof value !== 'function')\n || typeof Reflect.get(value, 'get') !== 'function'\n || typeof Reflect.get(value, 'set') !== 'function'\n || typeof Reflect.get(value, 'subscribe') !== 'function') {\n throw new TypeError(`${name} must be an emitter`)\n }\n}\n\nexport function classNames(...values: unknown[]): string {\n return values\n .flatMap((value) => typeof value === 'string' ? value.split(/\\s+/) : [])\n .filter(Boolean)\n .join(' ')\n}\n\nexport function componentClass(props: Pick<ComponentProps, 'class' | 'className'>): string {\n return props.className ?? props.class ?? ''\n}\n\nexport function invoke<TArguments extends unknown[]>(\n callback: ((...args: TArguments) => void) | null | undefined,\n ...args: TArguments\n): void {\n if (callback == null) return\n if (typeof callback !== 'function') throw new TypeError('Control callback must be a function')\n callback(...args)\n}\n\nexport function assertOptions<TOption>(\n options: unknown,\n name = 'options',\n): asserts options is TOption[] {\n if (!Array.isArray(options)) throw new TypeError(`${name} must be an array`)\n}\n\nexport function describeState(value: unknown): string {\n if (value === '') return 'prefer'\n if (value === '!') return 'deny'\n if (value === '_') return 'require'\n if (value === '☐') return 'neutral'\n return String(value)\n}\n","/** Represents the filter mode for a query. */\nexport const FilterMode = {\n /** Deny mode: Excludes items that match the filter. */\n Deny: '!',\n /** Require mode: Includes only items that match the filter. */\n Require: '_',\n /** Prefer mode: If there are any filter options that are set to Prefer, at least one of the preferred filter options must match. Otherwise, it is treated as Neutral. */\n Prefer: '',\n /** Neutral mode: Does not affect the inclusion or exclusion of items. */\n Neutral: '☐',\n} as const\n\nexport type FilterModeValue = typeof FilterMode[keyof typeof FilterMode]\n","import {Component, css} from '../../component.js'\nimport type {ComponentProps, FrayChild} from '../../component.js'\nimport {\n componentClass,\n createValueEmitter,\n describeState,\n invoke,\n} from '../../controlUtils.js'\nimport type {ValueControlProps, ValueEmitter} from '../../controlUtils.js'\nimport {FilterMode} from '../../../util/filterMode.js'\nimport type {FilterModeValue} from '../../../util/filterMode.js'\n\nexport type CheckboxValue = string | number\nexport type CheckboxSymbol<TValue extends CheckboxValue = FilterModeValue> = readonly [\n symbol: FrayChild,\n value: TValue,\n]\n\nexport interface CheckboxProps<TValue extends CheckboxValue = FilterModeValue>\n extends ValueControlProps<TValue> {\n symbols?: readonly CheckboxSymbol<TValue>[]\n initialSemanticState?: TValue\n label?: FrayChild\n disabled?: boolean\n required?: boolean\n name?: string\n onChange?: (value: TValue, event: Event | null) => void\n}\n\n/** Keyboard-operable semantic state cycler. */\nexport class Checkbox<TValue extends CheckboxValue = FilterModeValue>\n extends Component<CheckboxProps<TValue>> {\n static symbols: readonly CheckboxSymbol<FilterModeValue>[] = [\n ['☐', FilterMode.Neutral],\n ['✓', FilterMode.Prefer],\n ]\n static defaultSemanticState = FilterMode.Neutral\n\n readonly symbols: readonly CheckboxSymbol<TValue>[]\n readonly valueEmitter: ValueEmitter<TValue>\n readonly semanticStateEmitter: ValueEmitter<TValue>\n\n constructor(props: CheckboxProps<TValue> = {}) {\n super(props)\n const componentType = this.constructor as typeof Checkbox\n // Static members cannot carry the instance's generic state parameter;\n // subclasses validate the tuple values before this boundary is used.\n this.symbols = props.symbols\n ?? componentType.symbols as unknown as readonly CheckboxSymbol<TValue>[]\n validateSymbols(this.symbols)\n const fallback = props.initialSemanticState\n ?? componentType.defaultSemanticState as TValue\n ?? this.symbols[0]![1]\n const emitterProps: CheckboxProps<TValue> = {...props}\n if (emitterProps.defaultValue == null && props.initialSemanticState != null) {\n emitterProps.defaultValue = props.initialSemanticState\n }\n this.valueEmitter = createValueEmitter<TValue>(this, emitterProps, fallback,\n 'checkbox semantic state')\n // Compatibility alias used only by the experimental filter implementation.\n this.semanticStateEmitter = this.valueEmitter\n }\n\n initialize(): void {\n this.watch(this.valueEmitter)\n }\n\n cycleState(direction = 1, event: Event | null = null): void {\n if (this.props.disabled) return\n const currentIndex = this.symbols.findIndex(([, state]) =>\n Object.is(state, this.valueEmitter.get()))\n const baseIndex = currentIndex < 0 ? 0 : currentIndex\n const nextIndex = (baseIndex + direction + this.symbols.length) % this.symbols.length\n const nextValue = this.symbols[nextIndex]![1]\n this.valueEmitter.set(nextValue, 'checkbox state changed')\n invoke(this.props.onChange, nextValue, event)\n }\n\n render(): FrayChild {\n const {\n label = this.props.value ?? 'Option',\n disabled = false,\n required = false,\n name,\n value,\n } = this.props\n const semanticState = this.valueEmitter.get()\n const [symbol] = this.symbols.find(([, state]) => Object.is(state, semanticState))\n ?? ['?', semanticState]\n const stateName = describeState(semanticState)\n const checked = semanticState === FilterMode.Prefer\n || semanticState === FilterMode.Require\n\n const Host = this.Host\n return <Host\n className={componentClass(this.props) || null}\n data-disabled={disabled ? '' : null}\n data-required={required ? '' : null}\n data-state={stateName}\n >\n <button\n type=\"button\"\n role=\"checkbox\"\n disabled={disabled}\n name={name}\n value={value == null ? undefined : String(value)}\n data-part=\"control\"\n aria-checked={checked ? 'true' : 'false'}\n aria-required={required ? 'true' : null}\n aria-label={`${label}: ${stateName}`}\n onClick={(event: MouseEvent) => this.cycleState(1, event)}\n onKeyDown={(event: KeyboardEvent) => {\n if (event.key === 'ArrowRight' || event.key === 'ArrowDown') {\n event.preventDefault()\n this.cycleState(1, event)\n } else if (event.key === 'ArrowLeft' || event.key === 'ArrowUp') {\n event.preventDefault()\n this.cycleState(-1, event)\n }\n }}\n >\n <span data-part=\"symbol\" aria-hidden=\"true\">{symbol}</span>\n <span data-part=\"label\">{label}</span>\n </button>\n </Host>\n }\n\n static override hostName = 'checkbox'\n static override standaloneHostName = 'check-box'\n\n static baseStyles = [\n ['&', ['inputline']],\n ['& > [data-part=\"control\"]', ['input', 'inputline']],\n ['&[data-disabled]', ['disabled']],\n ]\n\n static css = css`\n & > [data-part=\"control\"] {\n display: inline-flex;\n align-items: center;\n gap: 0.35em;\n width: auto;\n font-family: inherit;\n }\n\n & [data-part=\"symbol\"] {\n display: inline-grid;\n width: 1em;\n height: 1em;\n line-height: 1;\n place-items: center;\n color: var(--fray-checkbox-symbol-color, currentColor);\n background: var(--fray-checkbox-box-background, transparent);\n border: var(--fray-checkbox-box-border, var(--cbx-o-border));\n border-radius: var(--cbx-border-radius, var(--fray-radius-sm));\n }\n\n & [data-part=\"control\"][aria-checked=\"true\"] [data-part=\"symbol\"] {\n background: var(\n --fray-checkbox-box-background-checked,\n var(--fray-selection-background)\n );\n }\n `\n}\n\nfunction validateSymbols<TValue extends CheckboxValue>(\n symbols: unknown,\n): asserts symbols is readonly CheckboxSymbol<TValue>[] {\n if (!Array.isArray(symbols) || symbols.length === 0) {\n throw new TypeError('Checkbox symbols must be a non-empty tuple array')\n }\n for (const tuple of symbols) {\n if (!Array.isArray(tuple) || tuple.length < 2) {\n throw new TypeError('Checkbox symbols must be [symbol, state] tuples')\n }\n }\n}\n","import {Component, css} from '../component.js'\nimport type {ComponentProps, FrayChild} from '../component.js'\nimport {componentClass, invoke} from '../controlUtils.js'\n\nexport interface ButtonProps extends ComponentProps {\n label?: FrayChild\n type?: 'button' | 'reset' | 'submit'\n disabled?: boolean\n pressed?: boolean\n busy?: boolean\n busyLabel?: FrayChild\n id?: string\n name?: string\n value?: string | number\n title?: string\n ariaLabel?: string\n onClick?: (event: MouseEvent) => void\n}\n\n/** Native actionable button primitive. */\nexport class Button extends Component<ButtonProps> {\n constructor(props: ButtonProps = {}) {\n super(props)\n if (props.onClick != null && typeof props.onClick !== 'function') {\n throw new TypeError('Button onClick must be a function')\n }\n }\n\n render(): FrayChild {\n const {\n children = [],\n label,\n type = 'button',\n disabled = false,\n pressed,\n busy = false,\n busyLabel,\n id,\n name,\n value,\n title,\n ariaLabel,\n onClick,\n } = this.props\n const hasChildren = Array.isArray(children)\n ? children.length > 0\n : children != null && typeof children !== 'boolean'\n const normalContent = hasChildren ? children : (label ?? '')\n const content = busy ? (busyLabel ?? normalContent) : normalContent\n const unavailable = disabled || busy\n\n return <button\n id={id}\n name={name}\n value={value == null ? undefined : String(value)}\n title={title}\n type={type}\n disabled={unavailable}\n className={componentClass(this.props) || undefined}\n data-fray-component=\"button\"\n aria-label={ariaLabel}\n aria-pressed={pressed == null ? null : String(Boolean(pressed))}\n aria-busy={busy ? 'true' : null}\n onClick={(event: MouseEvent) => {\n if (!unavailable) invoke(onClick, event)\n }}\n >{content}</button>\n }\n\n static baseStyles = [\n ['button[data-fray-component=\"button\"]', ['uiline', 'button']],\n ]\n\n static css = css`\n button[data-fray-component=\"button\"] {\n font-family: inherit;\n }\n `\n}\n"],"names":["nextControlId","controlId","prefix","provided","createValueEmitter","component","props","fallback","purpose","assertEmitter","initialValue","options","Emitter","value","name","componentClass","invoke","callback","args","assertOptions","describeState","FilterMode","Checkbox","Component","__publicField","componentType","validateSymbols","emitterProps","direction","event","currentIndex","state","nextIndex","nextValue","label","disabled","required","semanticState","symbol","stateName","checked","Host","jsx","jsxs","css","symbols","tuple","Button","children","type","pressed","busy","busyLabel","id","title","ariaLabel","onClick","normalContent","content","unavailable"],"mappings":"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"}
|
package/dist/experimental.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Experimental data APIs. These exports may change in any prerelease and are
|
|
3
|
-
* intentionally excluded from the stable package barrel.
|
|
4
|
-
*/
|
|
5
|
-
export * from './Components/Placeholder.js';
|
|
6
|
-
export * from './Components/data/listview/listview.js';
|
|
7
|
-
export * from './Components/data/selectionhandler.js';
|
|
8
|
-
export * from './Components/data/table/DataTable.js';
|
|
9
|
-
export * from './Components/data/table/FilterPanel.js';
|
|
10
|
-
export * from './Components/data/table/TableHeader.js';
|
|
11
|
-
export * from './Components/data/table/TableHeaderCell.js';
|
|
12
|
-
export * from './Components/data/table/tableQuery.js';
|
|
13
|
-
export * from './Components/data/treeview/treeitem.js';
|
|
14
|
-
export * from './Components/data/treeview/treeview.js';
|
|
15
|
-
export * from './Components/dialog/dialog.js';
|
|
16
|
-
//# sourceMappingURL=experimental.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"experimental.d.ts","sourceRoot":"","sources":["../src/experimental.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,6BAA6B,CAAA;AAC3C,cAAc,wCAAwC,CAAA;AACtD,cAAc,uCAAuC,CAAA;AACrD,cAAc,sCAAsC,CAAA;AACpD,cAAc,wCAAwC,CAAA;AACtD,cAAc,wCAAwC,CAAA;AACtD,cAAc,4CAA4C,CAAA;AAC1D,cAAc,uCAAuC,CAAA;AACrD,cAAc,wCAAwC,CAAA;AACtD,cAAc,wCAAwC,CAAA;AACtD,cAAc,+BAA+B,CAAA"}
|