@hawiyah/react 0.0.0-stage → 0.2.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/LICENSE +73 -0
- package/NOTICE +19 -0
- package/PORTAL.md +74 -0
- package/README.md +461 -2
- package/dist/calendar.d.ts +52 -0
- package/dist/calendar.d.ts.map +1 -0
- package/dist/calendar.js +148 -0
- package/dist/calendar.js.map +1 -0
- package/dist/content-navigation.d.ts +15 -0
- package/dist/content-navigation.d.ts.map +1 -0
- package/dist/content-navigation.js +29 -0
- package/dist/content-navigation.js.map +1 -0
- package/dist/display.d.ts +421 -0
- package/dist/display.d.ts.map +1 -0
- package/dist/display.js +208 -0
- package/dist/display.js.map +1 -0
- package/dist/expanded-content.d.ts +217 -0
- package/dist/expanded-content.d.ts.map +1 -0
- package/dist/expanded-content.js +124 -0
- package/dist/expanded-content.js.map +1 -0
- package/dist/expanded-controls.d.ts +107 -0
- package/dist/expanded-controls.d.ts.map +1 -0
- package/dist/expanded-controls.js +142 -0
- package/dist/expanded-controls.js.map +1 -0
- package/dist/expanded-interactive.d.ts +116 -0
- package/dist/expanded-interactive.d.ts.map +1 -0
- package/dist/expanded-interactive.js +204 -0
- package/dist/expanded-interactive.js.map +1 -0
- package/dist/expanded-layout.d.ts +80 -0
- package/dist/expanded-layout.d.ts.map +1 -0
- package/dist/expanded-layout.js +26 -0
- package/dist/expanded-layout.js.map +1 -0
- package/dist/expanded-shared.d.ts +3 -0
- package/dist/expanded-shared.d.ts.map +1 -0
- package/dist/expanded-shared.js +14 -0
- package/dist/expanded-shared.js.map +1 -0
- package/dist/file-upload-list.d.ts +10 -0
- package/dist/file-upload-list.d.ts.map +1 -0
- package/dist/file-upload-list.js +7 -0
- package/dist/file-upload-list.js.map +1 -0
- package/dist/forms.d.ts +34 -0
- package/dist/forms.d.ts.map +1 -0
- package/dist/forms.js +65 -0
- package/dist/forms.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/interactive.d.ts +60 -0
- package/dist/interactive.d.ts.map +1 -0
- package/dist/interactive.js +321 -0
- package/dist/interactive.js.map +1 -0
- package/dist/mobile-top-bar.d.ts +14 -0
- package/dist/mobile-top-bar.d.ts.map +1 -0
- package/dist/mobile-top-bar.js +8 -0
- package/dist/mobile-top-bar.js.map +1 -0
- package/dist/navigation-drawer.d.ts +20 -0
- package/dist/navigation-drawer.d.ts.map +1 -0
- package/dist/navigation-drawer.js +37 -0
- package/dist/navigation-drawer.js.map +1 -0
- package/dist/portal.d.ts +27 -0
- package/dist/portal.d.ts.map +1 -0
- package/dist/portal.js +16 -0
- package/dist/portal.js.map +1 -0
- package/dist/search-field.d.ts +15 -0
- package/dist/search-field.d.ts.map +1 -0
- package/dist/search-field.js +113 -0
- package/dist/search-field.js.map +1 -0
- package/dist/shared.d.ts +35 -0
- package/dist/shared.d.ts.map +1 -0
- package/dist/shared.js +78 -0
- package/dist/shared.js.map +1 -0
- package/dist/site-verification.d.ts +10 -0
- package/dist/site-verification.d.ts.map +1 -0
- package/dist/site-verification.js +16 -0
- package/dist/site-verification.js.map +1 -0
- package/package.json +54 -3
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { ComponentPropsWithRef } from 'react';
|
|
2
|
+
import type { CalendarSystem } from '@hawiyah/core';
|
|
3
|
+
import type { TextFieldProps } from './forms.js';
|
|
4
|
+
export interface CalendarProps extends Omit<ComponentPropsWithRef<'section'>, 'defaultValue' | 'onChange'> {
|
|
5
|
+
value?: string;
|
|
6
|
+
defaultValue?: string;
|
|
7
|
+
onValueChange?: (value: string) => void;
|
|
8
|
+
month?: string;
|
|
9
|
+
defaultMonth?: string;
|
|
10
|
+
onMonthChange?: (month: string) => void;
|
|
11
|
+
min?: string;
|
|
12
|
+
max?: string;
|
|
13
|
+
locale?: string;
|
|
14
|
+
calendar?: CalendarSystem;
|
|
15
|
+
weekStartsOn?: number;
|
|
16
|
+
isDateDisabled?: (value: string) => boolean;
|
|
17
|
+
disabled?: boolean;
|
|
18
|
+
readOnly?: boolean;
|
|
19
|
+
label?: string;
|
|
20
|
+
previousLabel?: string;
|
|
21
|
+
nextLabel?: string;
|
|
22
|
+
getDayLabel?: (value: string) => string;
|
|
23
|
+
name?: string;
|
|
24
|
+
form?: string;
|
|
25
|
+
}
|
|
26
|
+
export declare function Calendar({ value, defaultValue, onValueChange, month, defaultMonth, onMonthChange, min, max, locale, calendar, weekStartsOn, isDateDisabled, disabled, readOnly, label, previousLabel, nextLabel, getDayLabel, name, form, className, ...props }: CalendarProps): import("react").JSX.Element;
|
|
27
|
+
export interface DatePickerProps extends Omit<TextFieldProps, 'type' | 'value' | 'defaultValue' | 'onChange' | 'min' | 'max'> {
|
|
28
|
+
value?: string;
|
|
29
|
+
defaultValue?: string;
|
|
30
|
+
onValueChange?: (value: string) => void;
|
|
31
|
+
min?: string;
|
|
32
|
+
max?: string;
|
|
33
|
+
locale?: string;
|
|
34
|
+
calendar?: CalendarSystem;
|
|
35
|
+
defaultCalendar?: CalendarSystem;
|
|
36
|
+
onCalendarChange?: (calendar: CalendarSystem) => void;
|
|
37
|
+
calendarSystemLabel?: string;
|
|
38
|
+
gregorianLabel?: string;
|
|
39
|
+
hijriLabel?: string;
|
|
40
|
+
weekStartsOn?: number;
|
|
41
|
+
isDateDisabled?: (value: string) => boolean;
|
|
42
|
+
calendarLabel?: string;
|
|
43
|
+
buttonLabel?: string;
|
|
44
|
+
previousLabel?: string;
|
|
45
|
+
nextLabel?: string;
|
|
46
|
+
closeLabel?: string;
|
|
47
|
+
unavailableMessage?: string;
|
|
48
|
+
unsupportedCalendarMessage?: string;
|
|
49
|
+
invalidMessage?: string;
|
|
50
|
+
}
|
|
51
|
+
export declare function DatePicker({ value, defaultValue, onValueChange, min, max, locale, calendar: controlledCalendar, defaultCalendar, onCalendarChange, calendarSystemLabel, gregorianLabel, hijriLabel, weekStartsOn, isDateDisabled, calendarLabel, buttonLabel, previousLabel, nextLabel, closeLabel, unavailableMessage, invalidMessage, unsupportedCalendarMessage, label, hint, error, ref, className, name, onKeyDown, onFocus, onBlur, ...props }: DatePickerProps): import("react").JSX.Element;
|
|
52
|
+
//# sourceMappingURL=calendar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../src/calendar.tsx"],"names":[],"mappings":"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"}
|
package/dist/calendar.js
ADDED
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useId, useRef, useState } from 'react';
|
|
3
|
+
import { getCalendarLabels, formatCalendarDate, getCalendarMonth, getDirection, isCalendarDateSupported, isDateInRange, isDisabled, moveCalendarDate, UMALQURA_MIN_DATE, UMALQURA_MAX_DATE } from '@hawiyah/core';
|
|
4
|
+
import { Button, TextField } from './forms.js';
|
|
5
|
+
import { Dialog, Tooltip } from './interactive.js';
|
|
6
|
+
import { assignRef, cx, Field, useControllable } from './shared.js';
|
|
7
|
+
import { useFormReset } from './expanded-shared.js';
|
|
8
|
+
function dateMessage(message) {
|
|
9
|
+
return message.split(/([0-9٠-٩]{4}-[0-9٠-٩]{2}-[0-9٠-٩]{2})/u).map((part, index) => /^[0-9٠-٩]{4}-[0-9٠-٩]{2}-[0-9٠-٩]{2}$/u.test(part) ? _jsx("bdi", { dir: "ltr", children: part }, index) : part);
|
|
10
|
+
}
|
|
11
|
+
export function Calendar({ value, defaultValue = '', onValueChange, month, defaultMonth, onMonthChange, min, max, locale = 'ar-SA', calendar = 'gregory', weekStartsOn = 0, isDateDisabled, disabled, readOnly, label, previousLabel, nextLabel, getDayLabel, name, form, className, ...props }) {
|
|
12
|
+
const copy = getCalendarLabels(locale);
|
|
13
|
+
const id = useId();
|
|
14
|
+
const nativeValue = useRef(null);
|
|
15
|
+
const [selected, select] = useControllable(value, defaultValue, onValueChange);
|
|
16
|
+
const [visibleMonth, setMonth] = useControllable(month, defaultMonth ?? (isDateInRange(selected) ? selected : undefined), next => { if (next)
|
|
17
|
+
onMonthChange?.(next); });
|
|
18
|
+
const previousSelected = useRef(selected);
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
if (previousSelected.current === selected)
|
|
21
|
+
return;
|
|
22
|
+
previousSelected.current = selected;
|
|
23
|
+
if (month === undefined && isDateInRange(selected)) {
|
|
24
|
+
setMonth(selected);
|
|
25
|
+
setFocused(selected);
|
|
26
|
+
}
|
|
27
|
+
}, [selected, month]);
|
|
28
|
+
const [focused, setFocused] = useState(isDateInRange(selected) ? selected : undefined);
|
|
29
|
+
const shouldFocus = useRef(false);
|
|
30
|
+
const buttons = useRef(new Map());
|
|
31
|
+
const model = getCalendarMonth({ month: visibleMonth && isDateInRange(visibleMonth) ? visibleMonth : undefined, value: isDateInRange(selected) ? selected : undefined, min, max, locale, calendar, weekStartsOn, fixedWeeks: true });
|
|
32
|
+
const unavailable = (day) => Boolean(disabled || !isCalendarDateSupported(day, calendar) || !isDateInRange(day, min, max) || isDateDisabled?.(day));
|
|
33
|
+
const focusValue = model.days.find(day => day.value === focused && !unavailable(day.value))?.value ?? model.days.find(day => day.selected && !unavailable(day.value))?.value ?? model.days.find(day => day.today && !unavailable(day.value))?.value ?? model.days.find(day => !day.outside && !unavailable(day.value))?.value ?? model.days.find(day => !unavailable(day.value))?.value;
|
|
34
|
+
useFormReset(nativeValue, () => { if (value === undefined)
|
|
35
|
+
select(defaultValue); if (month === undefined)
|
|
36
|
+
setMonth(defaultMonth ?? (defaultValue || undefined)); setFocused(defaultValue || undefined); }, form);
|
|
37
|
+
useEffect(() => { if (shouldFocus.current && focused) {
|
|
38
|
+
const button = buttons.current.get(focused);
|
|
39
|
+
if (button) {
|
|
40
|
+
button.focus();
|
|
41
|
+
shouldFocus.current = false;
|
|
42
|
+
}
|
|
43
|
+
} }, [focused, model.label]);
|
|
44
|
+
const first = model.days.find(day => !day.outside).value;
|
|
45
|
+
const fullLabel = (date) => getDayLabel?.(date) ?? (isCalendarDateSupported(date, calendar) ? formatCalendarDate(date, { locale, calendar, dateStyle: 'full' }) : date);
|
|
46
|
+
function navigate(current, key, shift, direction) {
|
|
47
|
+
try {
|
|
48
|
+
const column = model.days.findIndex(day => day.value === current) % 7;
|
|
49
|
+
let next;
|
|
50
|
+
let step = 1;
|
|
51
|
+
if (key === 'ArrowLeft' || key === 'ArrowRight') {
|
|
52
|
+
step = (key === 'ArrowRight' ? 1 : -1) * (direction === 'rtl' ? -1 : 1);
|
|
53
|
+
next = moveCalendarDate(current, step, 'day', calendar);
|
|
54
|
+
}
|
|
55
|
+
else if (key === 'ArrowUp' || key === 'ArrowDown') {
|
|
56
|
+
step = key === 'ArrowDown' ? 7 : -7;
|
|
57
|
+
next = moveCalendarDate(current, step, 'day', calendar);
|
|
58
|
+
}
|
|
59
|
+
else if (key === 'Home' || key === 'End') {
|
|
60
|
+
step = key === 'Home' ? 1 : -1;
|
|
61
|
+
next = moveCalendarDate(current, key === 'Home' ? -column : 6 - column, 'day', calendar);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
step = key === 'PageDown' ? 1 : -1;
|
|
65
|
+
next = moveCalendarDate(current, step, shift ? 'year' : 'month', calendar);
|
|
66
|
+
}
|
|
67
|
+
for (let attempts = 0; attempts < 366 && unavailable(next); attempts++) {
|
|
68
|
+
if ((min && next < min && step < 0) || (max && next > max && step > 0))
|
|
69
|
+
return;
|
|
70
|
+
next = moveCalendarDate(next, step, 'day', calendar);
|
|
71
|
+
}
|
|
72
|
+
if (unavailable(next))
|
|
73
|
+
return;
|
|
74
|
+
shouldFocus.current = true;
|
|
75
|
+
setFocused(next);
|
|
76
|
+
if (!model.days.some(day => day.value === next && !day.outside))
|
|
77
|
+
setMonth(next);
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
if (!(error instanceof RangeError))
|
|
81
|
+
throw error;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return _jsxs("section", { ...props, className: cx('hw-calendar', className), "aria-label": props['aria-label'] ?? label ?? copy.calendar, "data-calendar": calendar, children: [_jsxs("header", { className: "hw-calendar-header", children: [_jsx(Button, { variant: "ghost", className: "hw-calendar-prev", "aria-label": previousLabel ?? copy.previous, disabled: disabled || model.previous === first || Boolean(min && moveCalendarDate(first, -1, 'day', 'gregory') < min), onClick: () => { setMonth(model.previous); setFocused(undefined); }, children: "\u2039" }), _jsxs("div", { className: "hw-calendar-heading", children: [_jsx("h3", { id: `${id}-month`, "aria-live": "polite", children: model.label }), calendar === 'islamic-umalqura' && _jsx(Tooltip, { className: "hw-calendar-info", content: `${copy.range}: \u2066${UMALQURA_MIN_DATE} – ${UMALQURA_MAX_DATE}\u2069`, children: _jsx("span", { tabIndex: 0, role: "img", className: "hw-calendar-info-icon hw-tooltip-trigger", "aria-label": copy.range, children: "i" }) })] }), _jsx(Button, { variant: "ghost", className: "hw-calendar-next", "aria-label": nextLabel ?? copy.next, disabled: disabled || model.next === first || Boolean(max && model.next > max), onClick: () => { setMonth(model.next); setFocused(undefined); }, children: "\u203A" })] }), _jsxs("table", { role: "grid", "aria-readonly": readOnly || undefined, "aria-labelledby": `${id}-month`, className: "hw-calendar-grid", children: [_jsx("thead", { children: _jsx("tr", { children: model.weekdays.map((day, index) => _jsx("th", { scope: "col", children: day }, index)) }) }), _jsx("tbody", { children: Array.from({ length: 6 }, (_, row) => _jsx("tr", { children: model.days.slice(row * 7, row * 7 + 7).map(day => _jsx("td", { role: "gridcell", "aria-selected": day.selected, children: _jsx("button", { type: "button", className: "hw-calendar-day", "data-date": day.value, "data-outside": day.outside || undefined, "aria-label": fullLabel(day.value), "aria-current": day.today ? 'date' : undefined, disabled: unavailable(day.value), tabIndex: focusValue === day.value ? 0 : -1, ref: node => { if (node)
|
|
85
|
+
buttons.current.set(day.value, node);
|
|
86
|
+
else
|
|
87
|
+
buttons.current.delete(day.value); }, onFocus: () => setFocused(day.value), onClick: () => { if (!readOnly) {
|
|
88
|
+
select(day.value);
|
|
89
|
+
setFocused(day.value);
|
|
90
|
+
if (day.outside)
|
|
91
|
+
setMonth(day.value);
|
|
92
|
+
} }, onKeyDown: event => { if (['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End', 'PageUp', 'PageDown'].includes(event.key)) {
|
|
93
|
+
event.preventDefault();
|
|
94
|
+
navigate(day.value, event.key, event.shiftKey, getDirection(event.currentTarget));
|
|
95
|
+
} }, children: day.label }) }, day.value)) }, row)) })] }), _jsx("input", { ref: nativeValue, type: "hidden", name: name, form: form, value: isCalendarDateSupported(selected, calendar) && isDateInRange(selected, min, max) && !isDateDisabled?.(selected) ? selected : '', disabled: disabled })] });
|
|
96
|
+
}
|
|
97
|
+
export function DatePicker({ value, defaultValue = '', onValueChange, min, max, locale = 'ar-SA', calendar: controlledCalendar, defaultCalendar = 'gregory', onCalendarChange, calendarSystemLabel, gregorianLabel, hijriLabel, weekStartsOn, isDateDisabled, calendarLabel, buttonLabel, previousLabel, nextLabel, closeLabel, unavailableMessage, invalidMessage, unsupportedCalendarMessage, label, hint, error, ref, className, name, onKeyDown, onFocus, onBlur, ...props }) {
|
|
98
|
+
const copy = getCalendarLabels(locale);
|
|
99
|
+
const [calendar, setCalendar] = useControllable(controlledCalendar, defaultCalendar, onCalendarChange);
|
|
100
|
+
const id = useId();
|
|
101
|
+
const input = useRef(null);
|
|
102
|
+
const [selected, select] = useControllable(value, defaultValue, onValueChange);
|
|
103
|
+
const [draft, setDraft] = useState(selected);
|
|
104
|
+
const previousValue = useRef(selected);
|
|
105
|
+
const [editing, setEditing] = useState(false);
|
|
106
|
+
const [open, setOpen] = useState(false);
|
|
107
|
+
const [month, setMonth] = useState(isDateInRange(selected) ? selected : undefined);
|
|
108
|
+
useEffect(() => { if (previousValue.current !== selected) {
|
|
109
|
+
previousValue.current = selected;
|
|
110
|
+
setDraft(selected);
|
|
111
|
+
} }, [selected]);
|
|
112
|
+
useEffect(() => { if (props.disabled || props.readOnly)
|
|
113
|
+
setOpen(false); }, [props.disabled, props.readOnly]);
|
|
114
|
+
useFormReset(input, () => { if (value === undefined)
|
|
115
|
+
select(defaultValue); setDraft(value ?? defaultValue); setOpen(false); setMonth(isDateInRange(value ?? defaultValue) ? (value ?? defaultValue) : undefined); }, props.form);
|
|
116
|
+
const formatted = selected && isCalendarDateSupported(selected, calendar) ? formatCalendarDate(selected, { locale, calendar, dateStyle: 'full' }) : '';
|
|
117
|
+
const formattedId = `${props.id ?? id}-formatted`;
|
|
118
|
+
const dialogId = `${props.id ?? id}-dialog`;
|
|
119
|
+
const malformed = Boolean(draft && !isDateInRange(draft));
|
|
120
|
+
const unsupported = Boolean(draft && !malformed && calendar === 'islamic-umalqura' && !isCalendarDateSupported(draft, calendar));
|
|
121
|
+
const unavailable = Boolean(draft && !malformed && isDateDisabled?.(draft));
|
|
122
|
+
const outside = Boolean(draft && !malformed && !isDateInRange(draft, min, max));
|
|
123
|
+
const message = malformed || outside ? (invalidMessage ?? copy.invalid) : unsupported ? (unsupportedCalendarMessage ?? copy.unsupported) : unavailable ? (unavailableMessage ?? copy.unavailable) : '';
|
|
124
|
+
const displayed = !editing && draft && !message && isCalendarDateSupported(draft, calendar) ? formatCalendarDate(draft, { locale, calendar, dateStyle: 'medium' }) : draft;
|
|
125
|
+
useEffect(() => { input.current?.setCustomValidity(message); }, [message]);
|
|
126
|
+
const blocked = () => props.disabled || props.readOnly || !input.current || isDisabled(input.current);
|
|
127
|
+
const show = () => { if (!blocked()) {
|
|
128
|
+
setMonth(isDateInRange(selected) ? selected : undefined);
|
|
129
|
+
setOpen(true);
|
|
130
|
+
} };
|
|
131
|
+
const commit = (date) => { const canonical = !date || isDateInRange(date); setDraft(canonical && value !== undefined ? value : date); if (canonical)
|
|
132
|
+
select(date); };
|
|
133
|
+
return _jsxs(Field, { label: label ?? (props['aria-label'] || props['aria-labelledby'] ? undefined : copy.date), hint: hint, error: error ?? (message ? dateMessage(message) : undefined), required: props.required, controlId: props.id ?? id, className: cx('hw-date-picker', className), children: [_jsxs("div", { className: "hw-date-picker-control", children: [_jsx(TextField, { ...props, ref: node => { input.current = node; assignRef(ref, node); }, type: "text", min: min, max: max, inputMode: "text", placeholder: props.placeholder ?? 'YYYY-MM-DD', "aria-haspopup": "dialog", "aria-controls": dialogId, "aria-invalid": message ? true : props['aria-invalid'], "aria-describedby": [props['aria-describedby'], formatted ? formattedId : undefined].filter(Boolean).join(' ') || undefined, value: displayed, onFocus: event => { if (!blocked()) {
|
|
134
|
+
event.currentTarget.value = draft;
|
|
135
|
+
event.currentTarget.select();
|
|
136
|
+
setEditing(true);
|
|
137
|
+
} onFocus?.(event); }, onBlur: event => { setEditing(false); onBlur?.(event); }, onChange: event => { if (!blocked())
|
|
138
|
+
commit(event.currentTarget.value); }, onKeyDown: event => { onKeyDown?.(event); if (!event.defaultPrevented && !event.nativeEvent.isComposing && !event.ctrlKey && !event.metaKey && !event.shiftKey && event.key === 'ArrowDown' && !blocked()) {
|
|
139
|
+
event.preventDefault();
|
|
140
|
+
show();
|
|
141
|
+
} } }), _jsxs(Dialog, { id: dialogId, open: open, onOpenChange: next => { if (!next || !blocked())
|
|
142
|
+
setOpen(next); }, title: calendarLabel ?? copy.choose, closeLabel: closeLabel ?? copy.close, trigger: _jsx(Button, { className: "hw-date-picker-trigger", variant: "ghost", disabled: props.disabled || props.readOnly, "aria-label": buttonLabel ?? copy.open, "aria-controls": dialogId, "aria-expanded": open, onClick: show, children: _jsx("span", { className: "hw-date-picker-icon", "aria-hidden": "true" }) }), children: [_jsx("div", { className: "hw-calendar-options", children: _jsx("div", { className: "hw-calendar-system hw-calendar-switch", role: "radiogroup", "aria-label": calendarSystemLabel ?? copy.system, "data-calendar": calendar, children: ['gregory', 'islamic-umalqura'].map(system => _jsxs("label", { children: [_jsx("input", { type: "radio", name: `${id}-calendar-system`, form: "", value: system, checked: calendar === system, disabled: props.disabled || props.readOnly, onChange: () => { setCalendar(system); if (isDateInRange(selected))
|
|
143
|
+
setMonth(selected); } }), _jsx("span", { children: system === 'gregory' ? (gregorianLabel ?? copy.gregorian) : (hijriLabel ?? copy.hijri) })] }, system)) }) }), unsupported && _jsx("p", { role: "status", className: "hw-sr-only", children: dateMessage(unsupportedCalendarMessage ?? copy.unsupported) }), _jsx(Calendar, { disabled: props.disabled, readOnly: props.readOnly, value: isDateInRange(selected) ? selected : '', onValueChange: date => { if (!blocked()) {
|
|
144
|
+
commit(date);
|
|
145
|
+
setOpen(false);
|
|
146
|
+
} }, month: month, onMonthChange: setMonth, min: min, max: max, calendar: calendar, locale: locale, weekStartsOn: weekStartsOn, isDateDisabled: isDateDisabled, label: calendarLabel ?? copy.choose, previousLabel: previousLabel, nextLabel: nextLabel })] })] }), _jsx("input", { type: "hidden", name: name, form: props.form, disabled: props.disabled, value: isDateInRange(selected) ? selected : '' }), _jsx("output", { id: formattedId, htmlFor: props.id ?? id, className: "hw-sr-only hw-date-picker-value", "aria-live": "polite", "aria-atomic": "true", hidden: !formatted, children: formatted })] });
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=calendar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.js","sourceRoot":"","sources":["../src/calendar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ComponentPropsWithRef } from 'react';
|
|
2
|
+
import type { ContentNavigationItem } from '@hawiyah/core';
|
|
3
|
+
export type { ContentNavigationItem } from '@hawiyah/core';
|
|
4
|
+
export interface ContentNavigationProps extends Omit<ComponentPropsWithRef<'nav'>, 'children'> {
|
|
5
|
+
items: readonly ContentNavigationItem[];
|
|
6
|
+
label?: string;
|
|
7
|
+
showHeading?: boolean;
|
|
8
|
+
sticky?: boolean;
|
|
9
|
+
scrollRoot?: HTMLElement | null;
|
|
10
|
+
offset?: number;
|
|
11
|
+
onCurrentChange?: (id: string) => void;
|
|
12
|
+
}
|
|
13
|
+
/** Local section navigation; the application owns section elements and their IDs. */
|
|
14
|
+
export declare function ContentNavigation({ items, label, showHeading, sticky, scrollRoot, offset, onCurrentChange, className, ref, ...props }: ContentNavigationProps): import("react").JSX.Element;
|
|
15
|
+
//# sourceMappingURL=content-navigation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-navigation.d.ts","sourceRoot":"","sources":["../src/content-navigation.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,qBAAqB,EAAwB,MAAM,OAAO,CAAC;AAExE,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,eAAe,CAAC;AAGzD,YAAY,EAAC,qBAAqB,EAAC,MAAM,eAAe,CAAC;AACzD,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IAC5F,KAAK,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAED,qFAAqF;AACrF,wBAAgB,iBAAiB,CAAC,EAAC,KAAK,EAAE,KAAuB,EAAE,WAAkB,EAAE,MAAc,EAAE,UAAiB,EAAE,MAAW,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,KAAK,EAAC,EAAE,sBAAsB,+BAuBxM"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useImperativeHandle, useRef, useState } from 'react';
|
|
3
|
+
import { observeContentNavigation } from '@hawiyah/core';
|
|
4
|
+
import { cx } from './shared.js';
|
|
5
|
+
/** Local section navigation; the application owns section elements and their IDs. */
|
|
6
|
+
export function ContentNavigation({ items, label = 'في هذه الصفحة', showHeading = true, sticky = false, scrollRoot = null, offset = 80, onCurrentChange, className, ref, ...props }) {
|
|
7
|
+
const navigation = useRef(null);
|
|
8
|
+
const observer = useRef(undefined);
|
|
9
|
+
const latest = useRef({ items, scrollRoot, offset, onCurrentChange });
|
|
10
|
+
latest.current = { items, scrollRoot, offset, onCurrentChange };
|
|
11
|
+
const [current, setCurrent] = useState('');
|
|
12
|
+
useImperativeHandle(ref, () => navigation.current, []);
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
if (!navigation.current)
|
|
15
|
+
return;
|
|
16
|
+
observer.current = observeContentNavigation({ navigation: navigation.current, getItems: () => latest.current.items, getScrollRoot: () => latest.current.scrollRoot, offset: () => latest.current.offset, onCurrentChange: id => { setCurrent(id); latest.current.onCurrentChange?.(id); } });
|
|
17
|
+
return () => observer.current?.destroy();
|
|
18
|
+
}, []);
|
|
19
|
+
useEffect(() => { observer.current?.refresh(); }, [items, scrollRoot, offset]);
|
|
20
|
+
const activate = (event, id) => {
|
|
21
|
+
if (event.defaultPrevented || event.button !== 0 || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey)
|
|
22
|
+
return;
|
|
23
|
+
event.preventDefault();
|
|
24
|
+
observer.current?.navigate(id, { focus: event.detail === 0 });
|
|
25
|
+
};
|
|
26
|
+
const renderItems = (entries, nested = false) => _jsx("ul", { className: nested ? 'hw-content-nav-sublist' : 'hw-content-nav-list', children: entries.map(item => _jsxs("li", { children: [item.disabled ? _jsxs("span", { className: "hw-content-nav-link", role: "link", "aria-disabled": "true", "data-hw-section": item.id, children: [_jsx("span", { className: "hw-content-nav-marker", "aria-hidden": "true" }), _jsx("span", { className: "hw-content-nav-label", children: item.label })] }) : _jsxs("a", { className: "hw-content-nav-link", href: `#${encodeURIComponent(item.id)}`, "data-hw-section": item.id, "aria-current": current === item.id ? 'location' : undefined, onClick: event => activate(event, item.id), children: [_jsx("span", { className: "hw-content-nav-marker", "aria-hidden": "true" }), _jsx("span", { className: "hw-content-nav-label", children: item.label })] }), !!item.children?.length && renderItems(item.children, true)] }, item.id)) });
|
|
27
|
+
return _jsxs("nav", { ...props, ref: navigation, className: cx('hw-content-nav', className), "aria-label": label, "data-sticky": sticky || undefined, children: [showHeading && _jsx("h2", { className: "hw-content-nav-heading", children: label }), renderItems(items)] });
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=content-navigation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-navigation.js","sourceRoot":"","sources":["../src/content-navigation.tsx"],"names":[],"mappings":"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"}
|