@emuanalytics/flow-rdf-ui 4.1.27 → 4.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/dist/index.d.mts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { FlowCoreMap } from '@emuanalytics/flow-rdf-core';
2
2
  import * as lit_html from 'lit-html';
3
3
  import * as lit from 'lit';
4
- import { LitElement, CSSResultGroup, ReactiveController, ReactiveControllerHost, TemplateResult, PropertyValueMap } from 'lit';
4
+ import { LitElement, CSSResultGroup, ReactiveController, ReactiveControllerHost, TemplateResult, PropertyValues, PropertyValueMap } from 'lit';
5
5
  import * as chartjs_chart_matrix from 'chartjs-chart-matrix';
6
6
  import * as chart_js from 'chart.js';
7
7
  import { ChartComponentLike, Chart, ChartTypeRegistry, ChartOptions, ChartData, Plugin } from 'chart.js';
@@ -852,6 +852,9 @@ interface Translation extends Translation$1 {
852
852
  close: string;
853
853
  copy: string;
854
854
  currentValue: string;
855
+ dateAfterMax: (max: string) => string;
856
+ dateBeforeMin: (min: string) => string;
857
+ dateRangeTooLong: (maxRange: string) => string;
855
858
  goToSlide: (slide: number, count: number) => string;
856
859
  hidePassword: string;
857
860
  loading: string;
@@ -859,6 +862,8 @@ interface Translation extends Translation$1 {
859
862
  numOptionsSelected: (num: number) => string;
860
863
  previousSlide: string;
861
864
  progress: string;
865
+ rangeEndTime: string;
866
+ rangeStartTime: string;
862
867
  remove: string;
863
868
  resize: string;
864
869
  scrollToEnd: string;
@@ -1336,6 +1341,8 @@ interface FlowQueryBuilderRuleSet {
1336
1341
  * - `!like`: `<field>` does not matched a wildcard pattern `<value>`. (string fields only)
1337
1342
  * - `regex`: `<field>` matches a regular expression pattern `<value>`. (string fields only)
1338
1343
  * - `!regex`: `<field>` does not match a regular expression pattern `<value>`. (string fields only)
1344
+ * - `between`: `<field>` is greater than or equal to `<value>[0]` and less than `<value>[1]`. `<value>` is an array of
1345
+ * two ISO8601 date/time strings. (date, time and datetime fields only)
1339
1346
  *
1340
1347
  * Wildcard patterns use `*` to match any sequence of characters and `?` to match any single character.
1341
1348
  *
@@ -1375,9 +1382,10 @@ interface FlowQueryBuilderFieldMap {
1375
1382
  *
1376
1383
  * - `string`: A text field, displayed as an input box. Supports string-matching operators.
1377
1384
  * - `number`: A numeric field, displayed as an numeric input box with stepper controls. Supports numeric comparison operators.
1378
- * - `date`: A date field, displayed as a date picker. Supports numeric comparison operators.
1379
- * - `time`: A time field, displayed as a time picker. Supports numeric comparison operators.
1380
- * - `datetime`: A date-time field, displayed as a date-time picker. Supports numeric comparison operators.
1385
+ * - `date`: A date field, displayed as a date picker. Supports numeric comparison operators and `between`.
1386
+ * - `time`: A time field, displayed as a time picker. Supports numeric comparison operators and `between`.
1387
+ * - `datetime`: A date-time field, displayed as a date-time picker. Supports numeric comparison operators and
1388
+ * `between`.
1381
1389
  * - `select`: A select field, displayed as a dropdown list. Supports `in` and `!in` operators.
1382
1390
  *
1383
1391
  * In addition, all field types support equality operators (`=`, `!=`).
@@ -1399,7 +1407,10 @@ interface FlowQueryBuilderFieldBase<ValueType = any> {
1399
1407
  defaultValue?: ValueType | (() => ValueType);
1400
1408
  /** Default operator for the field. */
1401
1409
  defaultOperator?: string;
1402
- /** Optional function to convert the user-entered value before applying a rule set converter. */
1410
+ /**
1411
+ * Optional function to convert the user-entered value before applying a rule set converter. For the `between`
1412
+ * operator, the function is called separately for each end of the range.
1413
+ */
1403
1414
  convertValue?: (value: ValueType) => any;
1404
1415
  /** Optional validator function to validate the user-entered value. */
1405
1416
  validator?: (rule: FlowQueryBuilderRule<ValueType>) => string;
@@ -1606,6 +1617,16 @@ declare const isRuleSet: (r: unknown) => r is FlowQueryBuilderRuleSet;
1606
1617
  * Helper function to determine if the supplied argument is a {@link FlowQueryBuilderRule} or {@link FlowQueryBuilderRuleSet}
1607
1618
  */
1608
1619
  declare const isRuleOrRuleset: (r: unknown) => r is FlowQueryBuilderRule | FlowQueryBuilderRuleSet;
1620
+ /**
1621
+ * The start and end of a `between` rule's `[start, end]` value, each converted with the field's `convertValue`
1622
+ * function, if any. Gives `undefined` if the value isn't an array of two values.
1623
+ *
1624
+ * For a time field, a range that ends at 24:00 (the start of the day after its start) has no upper bound, because
1625
+ * every time of day is before it. The end is then `undefined`.
1626
+ *
1627
+ * @internal
1628
+ */
1629
+ declare function betweenRuleValues(rule: FlowQueryBuilderRule, field: FlowQueryBuilderField): [any, any | undefined] | undefined;
1609
1630
 
1610
1631
  declare const converter$2: FlowQueryBuilderConverter;
1611
1632
 
@@ -1985,6 +2006,19 @@ declare class FlowUiAutocomplete extends FlowRdfFormControl {
1985
2006
  private pendingChangeEvent;
1986
2007
  private pendingInputEvent;
1987
2008
  private hasOptions;
2009
+ /** @internal True while the user is typing to filter (input text has diverged from the committed value). */
2010
+ private inputChanged;
2011
+ /** @internal Stable base used to generate option DOM ids when the host has no `id` of its own. */
2012
+ private optionIdBase;
2013
+ /** @internal Monotonic per-host suffix for option DOM ids, so ids never collide across re-renders. */
2014
+ private nextOptionId;
2015
+ /**
2016
+ * @internal True while hide()'s close animation is in flight. `open` stays true across that
2017
+ * animation (so the popup remains visible while it fades out), which would otherwise make a
2018
+ * concurrent show() no-op at its `!this.open` guard. show() flips this to false to cancel the
2019
+ * close and reopen; hide() bails after its animation if it finds the close was cancelled.
2020
+ */
2021
+ private closing;
1988
2022
  private readonly formControlController;
1989
2023
  /** The autocomplete's size */
1990
2024
  size: 'small' | 'medium' | 'large';
@@ -2044,7 +2078,9 @@ declare class FlowUiAutocomplete extends FlowRdfFormControl {
2044
2078
  hasFocus: boolean;
2045
2079
  private input;
2046
2080
  private popup;
2081
+ private listbox;
2047
2082
  connectedCallback(): void;
2083
+ disconnectedCallback(): void;
2048
2084
  /** Gets the associated form, if one exists. */
2049
2085
  getForm(): HTMLFormElement | null;
2050
2086
  /** Gets the validity state object.*/
@@ -2063,10 +2099,31 @@ declare class FlowUiAutocomplete extends FlowRdfFormControl {
2063
2099
  private getFirstOption;
2064
2100
  /**
2065
2101
  * @internal
2066
- * Un-highlights currently highlighted option
2067
- * and highlights the given option
2102
+ * Gives each slotted option a stable DOM `id` (`<host-id>-option-<n>`) used purely for
2103
+ * ARIA wiring (`aria-activedescendant`). A consumer-provided `id` is preserved. This `id` is
2104
+ * independent of the option's `value` (domain identity). See ADR-0001.
2105
+ *
2106
+ * The suffix comes from a monotonic per-host counter rather than the option's index: a filter
2107
+ * re-render can retain some option elements while creating others, so an index-based suffix
2108
+ * could hand a new element an id that a retained element already owns.
2109
+ */
2110
+ private assignOptionIds;
2111
+ /**
2112
+ * @internal
2113
+ * Un-highlights currently highlighted option and highlights the given option.
2114
+ *
2115
+ * DOM focus stays on the `<input>` (per the APG editable-combobox pattern); the highlighted
2116
+ * ("current") option is conveyed to assistive tech via the input's `aria-activedescendant`,
2117
+ * not by moving focus. See ADR-0001.
2068
2118
  */
2069
2119
  private setCurrentOption;
2120
+ /**
2121
+ * @internal
2122
+ * Sets the input's `aria-activedescendant` to the given option `id`, or clears it (to `''`,
2123
+ * per the APG reference) when passed `null` or an empty id. Centralises the ARIA wiring so the
2124
+ * highlight and close paths stay in sync. See ADR-0001.
2125
+ */
2126
+ private setActiveDescendant;
2070
2127
  /**
2071
2128
  * @internal
2072
2129
  * Unselects currently selected option
@@ -2108,6 +2165,17 @@ declare class FlowUiAutocomplete extends FlowRdfFormControl {
2108
2165
  private removeListenersForDropdown;
2109
2166
  /** @internal Handles changes in the default slot */
2110
2167
  private handleDefaultSlotChange;
2168
+ /**
2169
+ * @internal
2170
+ * Establishes the highlighted ("current") option per the APG rules (ADR-0001):
2171
+ * - while filtering (input text has changed): always the first option, so type-then-Enter
2172
+ * selects the narrowed-down top option.
2173
+ * - on open with unchanged input: the selected option if one matches, else the first.
2174
+ *
2175
+ * Called both on slot change (list re-rendered) and on open (listbox shown without a
2176
+ * re-render, e.g. clicking back into the input), since the latter fires no slot change.
2177
+ */
2178
+ private highlightCurrentOption;
2111
2179
  /** @internal Toggles listbox based on focus and options in the default slot. */
2112
2180
  toggleListbox(): void;
2113
2181
  /**
@@ -2622,8 +2690,22 @@ declare global {
2622
2690
  }
2623
2691
 
2624
2692
  /**
2693
+ * The calendar component is used to select a date, a time or both. It is also used in the popups of the
2694
+ * [date time picker](./flow-ui-date-time-picker) and [timer](./flow-ui-timer) components.
2695
+ *
2696
+ * Set `range` to select a range instead of a single value. The type of range depends on `display-mode`:
2697
+ *
2698
+ * - `date` - A range of days.
2699
+ * - `datetime` - A range of days with a start time and an end time.
2700
+ * - `time` - A range of times within a single day.
2701
+ *
2702
+ * In range mode, the value is not updated and no events are emitted until both ends of the range have been selected.
2703
+ *
2704
+ * Use `min`, `max` and `max-range` to restrict the dates that can be selected. Note that the calendar does not change
2705
+ * a value that is outside these limits.
2706
+ *
2625
2707
  * @tagname flow-ui-calendar
2626
- * @summary A calendar component for selecting dates and times.
2708
+ * @summary Calendars allow users to select a date, time or date range.
2627
2709
  *
2628
2710
  * @dependency flow-ui-icon-button
2629
2711
  * @dependency flow-ui-input
@@ -2635,7 +2717,8 @@ declare global {
2635
2717
  *
2636
2718
  * @csspart base - The component's base wrapper.
2637
2719
  *
2638
- * @cssproperty --width - The width of the calendar in CSS units. Set automatically if `size` is set.
2720
+ * @cssproperty --width - The width of the calendar in CSS units, or of each month when `months` is `2`. Set
2721
+ * automatically if `size` is set.
2639
2722
  * @cssproperty --font-size - The font size of the calendar. Set automatically if `size` is set.
2640
2723
  * @cssproperty --day-font-size - The font size of the day labels. Set automatically if `size` is set.
2641
2724
  *
@@ -2646,35 +2729,166 @@ declare class FlowUiCalendar extends FlowRdfElement {
2646
2729
  private _yearSelect;
2647
2730
  private _displayDate;
2648
2731
  private _selectedDate?;
2649
- /** The value of the control. (ISO8601 date/time string) */
2732
+ /** The selected date range in range mode (half-open, in whole days). */
2733
+ private _selectedRange?;
2734
+ /** The first day the user clicked in a range that isn't complete yet. It may become the range start or the last day. */
2735
+ private _pendingDay?;
2736
+ /** The day that the pointer or focus is on while a range is pending, used for the hover preview. */
2737
+ private _hoverDate?;
2738
+ /** The start time of a datetime range, on the range start. */
2739
+ private _startTime;
2740
+ /** The end time of a datetime range, on the last day. 24:00:00 is the end of the last day. */
2741
+ private _endTime;
2742
+ private readonly localize;
2743
+ /**
2744
+ * The value of the control. (ISO8601 date/time string) In range mode, the value is an ISO8601 interval string
2745
+ * (`<start>/<end>`) and the end is exclusive. For example, the date range October 1 to October 2 has the value
2746
+ * `2026-10-01T00:00:00.000+01:00/2026-10-03T00:00:00.000+01:00`.
2747
+ */
2650
2748
  value: string;
2651
- /** Select whether to show date only, time only or both date and time. */
2749
+ /** The display mode: date only, time only, or both date and time. */
2652
2750
  displayMode: 'date' | 'time' | 'datetime';
2751
+ /** Set to `true` to select a date, datetime or time range instead of a single value, depending on `display-mode`. */
2752
+ range: boolean;
2653
2753
  /** Set the timezone for display. If not set the default timezone will be used. (TZ name e.g. `'Europe/London'`) */
2654
2754
  timezone?: string;
2655
2755
  /** Set the locale for display. If not set the default locale will be used. (e.g `'en-GB'`) */
2656
2756
  locale?: string;
2657
2757
  /** Set the size of the calendar. */
2658
2758
  size: 'small' | 'medium' | 'large';
2759
+ /** The number of months to show side by side. */
2760
+ months: 1 | 2;
2761
+ /**
2762
+ * The earliest date that can be selected. (ISO8601 date or date/time string) Note that `min` is ignored when
2763
+ * `display-mode` is `time`.
2764
+ */
2765
+ min?: string;
2766
+ /**
2767
+ * The latest date that can be selected. (ISO8601 date or date/time string) Note that `max` is ignored when
2768
+ * `display-mode` is `time`.
2769
+ */
2770
+ max?: string;
2771
+ /**
2772
+ * The maximum length of a range. (Duration string, e.g. `'7 days'` or `'1 month'`) Supported units are milliseconds,
2773
+ * seconds, minutes, hours, days, weeks and months.
2774
+ */
2775
+ maxRange?: string;
2659
2776
  connectedCallback(): void;
2660
2777
  disconnectedCallback(): void;
2778
+ /** The number of months shown. Anything other than `2` shows one month. */
2779
+ private get monthCount();
2780
+ /** Whether the calendar selects a range: a date range, a datetime range or a time range. */
2781
+ private get isRangeMode();
2782
+ /** Whether the calendar selects a datetime range, with start and end times. */
2783
+ private get isDateTimeRangeMode();
2784
+ /** Whether the calendar selects a time range: start and end times, with no days. */
2785
+ private get isTimeRangeMode();
2786
+ /** The parsed `min`, `max` and `max-range`, in the calendar's timezone. There are no limits in time display mode. */
2787
+ private get limits();
2788
+ /**
2789
+ * Whether the user can't select `day` (the start of a day): it is outside `min` or `max`, or, while a range is
2790
+ * pending, it would make the range longer than `max-range`.
2791
+ */
2792
+ private isDayDisabled;
2793
+ /** Clamp a date and time to `min` and `max`, so that the time inputs can't select a time outside the limits. */
2794
+ private clampToLimits;
2795
+ /** The first and last months the user can navigate to, as the start of each month, if `min` or `max` is set. */
2796
+ private get monthLimits();
2797
+ /** Clamp a month to the months the user can navigate to. */
2798
+ private clampMonth;
2661
2799
  /** @internal */
2662
2800
  handleValueChange(): void;
2801
+ private handleRangeValueChange;
2802
+ /**
2803
+ * Show the month of `date` as the first month. In the two-month view, a date in the second month is already shown,
2804
+ * so the display doesn't move.
2805
+ */
2806
+ private showMonthOf;
2663
2807
  /** @internal */
2664
2808
  handleTimezoneChange(): void;
2809
+ /** @internal */
2810
+ handleRangeChange(): void;
2811
+ /** @internal */
2812
+ handleDisplayModeChange(): void;
2665
2813
  private dateClicked;
2814
+ /**
2815
+ * Handle a day click in range mode. The first click sets the pending day. The second click completes the range,
2816
+ * whichever order the two days were clicked in, so the user can click the last day first and then go back to the
2817
+ * range start.
2818
+ */
2819
+ private rangeDateClicked;
2820
+ /** Whether `max-range` only allows ranges of one day starting on `day`, so that a range is a single day. */
2821
+ private isSingleDayOnly;
2822
+ /** Complete a range from `first` to `last` (both the start of a day) and update the value. */
2823
+ private completeRange;
2824
+ /**
2825
+ * The datetime range from the start time on `first` to the end time on `last` (both the start of a day), clamped to
2826
+ * `min` and `max`. If the times would make the range empty, for example an end time before the start time on a
2827
+ * single day, the end time is reset to 24:00:00. If the range would be longer than `max-range`, the end is moved
2828
+ * back.
2829
+ */
2830
+ private makeDateTimeRange;
2831
+ private dayHovered;
2832
+ /**
2833
+ * Discard a pending range, so that the user can click a new range start. The value is unchanged. Returns `true` if a
2834
+ * range was pending.
2835
+ *
2836
+ * @internal
2837
+ */
2838
+ cancelPendingRange(): boolean;
2839
+ private handleKeyDown;
2840
+ private clearPendingRange;
2666
2841
  private stepDisplayDate;
2667
2842
  /**
2668
- * Generate a list of years for the year select dropdown
2843
+ * Generate a list of years for the year select dropdown, newest first. With no limits, the years are from next year
2844
+ * to six years ago. With `min` or `max`, the list starts or ends at their years, and always includes the year shown.
2669
2845
  */
2670
- private yearOptionsForDate;
2846
+ private yearOptions;
2671
2847
  private makeDate;
2848
+ /**
2849
+ * Parse an ISO8601 interval string. In date mode, the interval is widened to whole days in the calendar's timezone:
2850
+ * the start is rounded down to the start of its day and the end is rounded up to the start of the next day. An
2851
+ * invalid or empty interval gives `undefined`.
2852
+ */
2853
+ private makeRange;
2854
+ /**
2855
+ * The days to highlight in range mode: the hover preview while a range is pending, otherwise the selected range.
2856
+ */
2857
+ private highlightedDays;
2672
2858
  private updateValue;
2673
2859
  private handleHeaderSelectChange;
2674
2860
  private handleTimeChange;
2861
+ /**
2862
+ * Handle a change in the Start or End row of a datetime range or a time range. In a datetime range, the start time
2863
+ * applies to the range start and the end time to the last day. The edited time can't pass the other one, so the range
2864
+ * is never empty.
2865
+ */
2866
+ private handleRangeTimeChange;
2867
+ /**
2868
+ * The header for the month at `index`. The first month has the month and year selects and the second month has a
2869
+ * static label. The previous button is on the first month and the next button on the last. In the two-month view, a
2870
+ * hidden button takes the place of each missing button, so the month label stays centered.
2871
+ */
2675
2872
  private calendarHeaderTemplate;
2873
+ private headerSelectsTemplate;
2874
+ /** Whether a month of the year shown is outside the months the user can navigate to. */
2875
+ private isMonthDisabled;
2676
2876
  private dayOfWeekGridTemplate;
2877
+ /**
2878
+ * The days shown in the grid for a month, including the filler days from the adjacent months that complete the
2879
+ * first and last weeks. In the two-month view, the filler days between the two months are hidden, because the other
2880
+ * month shows them.
2881
+ */
2882
+ private daysForMonth;
2677
2883
  private dayGridTemplate;
2884
+ private monthTemplate;
2885
+ private handleGridMouseLeave;
2886
+ /** The hour, minute and second inputs for `time`. */
2887
+ private timeInputsTemplate;
2888
+ /**
2889
+ * The time inputs: one row in single mode, or the Start and End rows of a datetime range or a time range. The Start
2890
+ * and End rows are stacked, except in a datetime range in the two-month view.
2891
+ */
2678
2892
  private timeTemplate;
2679
2893
  render(): lit_html.TemplateResult<1>;
2680
2894
  }
@@ -3904,8 +4118,16 @@ declare global {
3904
4118
  }
3905
4119
 
3906
4120
  /**
4121
+ * The date time picker component displays its value in a text field and opens a [calendar](./flow-ui-calendar) in a
4122
+ * popup to change it.
4123
+ *
4124
+ * Set `range` to select a date, datetime or time range instead of a single value, depending on `display-mode`.
4125
+ *
4126
+ * Use `min`, `max` and `max-range` to restrict the dates that can be selected. Note that a value outside these limits
4127
+ * is not changed, but fails validation.
4128
+ *
3907
4129
  * @tagname flow-ui-date-time-picker
3908
- * @summary Date time pickers allow users to select a date and time from a calendar and clock interface.
4130
+ * @summary Date time pickers allow users to select a date and time, or a date range, from a calendar.
3909
4131
  *
3910
4132
  * @dependency flow-ui-icon
3911
4133
  * @dependency flow-ui-popup
@@ -3950,12 +4172,25 @@ declare class FlowUiDateTimePicker extends FlowRdfFormControl {
3950
4172
  private displayLabel;
3951
4173
  /** The name of the date/time picker, submitted as a name/value pair with form data. */
3952
4174
  name: string;
3953
- /** The current value of the date/time picker. (ISO8601 date/time string) */
4175
+ /**
4176
+ * The current value of the date/time picker. (ISO8601 date/time string) In range mode, the value is an ISO8601
4177
+ * interval string (`<start>/<end>`) and the end is exclusive. For example, the date range October 1 to October 2 has
4178
+ * the value `2026-10-01T00:00:00.000+01:00/2026-10-03T00:00:00.000+01:00`.
4179
+ */
3954
4180
  value: string;
3955
- /** Select whether to show date only, time only or both date and time. */
4181
+ /** The display mode: date only, time only, or both date and time. */
3956
4182
  displayMode: 'date' | 'time' | 'datetime';
3957
- /** Specify the display format using a [Luxon format string](https://moment.github.io/luxon/#/formatting?id=table-of-tokens). */
3958
- format: string;
4183
+ /** Set to `true` to select a date, datetime or time range instead of a single value, depending on `display-mode`. */
4184
+ range: boolean;
4185
+ /** The format set by the user, if any. The default format depends on `display-mode`, so it is not stored here. */
4186
+ private _format?;
4187
+ /**
4188
+ * The format to use for display as a
4189
+ * [Luxon format string](https://moment.github.io/luxon/#/formatting?id=table-of-tokens). If not set, the format
4190
+ * depends on `display-mode` (`'DD'` for `date`, `'HH:mm'` for `time` and `'FFF'` for `datetime`).
4191
+ */
4192
+ get format(): string;
4193
+ set format(format: string);
3959
4194
  /** Set the timezone for display. If not set the default timezone will be used. (TZ name e.g. `'Europe/London'`) */
3960
4195
  timezone?: string;
3961
4196
  /** Set the locale for display. If not set the default locale will be used. (e.g `'en-GB'`) */
@@ -3964,6 +4199,23 @@ declare class FlowUiDateTimePicker extends FlowRdfFormControl {
3964
4199
  defaultValue: string;
3965
4200
  /** The date/time picker's size. */
3966
4201
  size: 'small' | 'medium' | 'large';
4202
+ /** The number of months to show side by side in the calendar. */
4203
+ months: 1 | 2;
4204
+ /**
4205
+ * The earliest date that can be selected. (ISO8601 date or date/time string) Note that `min` is ignored when
4206
+ * `display-mode` is `time`.
4207
+ */
4208
+ min?: string;
4209
+ /**
4210
+ * The latest date that can be selected. (ISO8601 date or date/time string) Note that `max` is ignored when
4211
+ * `display-mode` is `time`.
4212
+ */
4213
+ max?: string;
4214
+ /**
4215
+ * The maximum length of a range. (Duration string, e.g. `'7 days'` or `'1 month'`) Supported units are milliseconds,
4216
+ * seconds, minutes, hours, days, weeks and months.
4217
+ */
4218
+ maxRange?: string;
3967
4219
  /** Placeholder text to show as a hint when the date/time picker is empty. */
3968
4220
  placeholder: string;
3969
4221
  /** Disables the date/time picker control. */
@@ -4007,6 +4259,8 @@ declare class FlowUiDateTimePicker extends FlowRdfFormControl {
4007
4259
  inline: boolean;
4008
4260
  /** Indicates that the control should display a divider */
4009
4261
  divider: boolean;
4262
+ /** The message set with `setCustomValidity()`. It takes precedence over the limits messages. */
4263
+ private customValidityMessage;
4010
4264
  /** Gets the validity state object */
4011
4265
  get validity(): ValidityState;
4012
4266
  /** Gets the validation message */
@@ -4014,8 +4268,17 @@ declare class FlowUiDateTimePicker extends FlowRdfFormControl {
4014
4268
  connectedCallback(): void;
4015
4269
  private addOpenListeners;
4016
4270
  private removeOpenListeners;
4271
+ /** Whether the picker selects a range: a date range, a datetime range or a time range. */
4272
+ private get isRangeMode();
4017
4273
  /** @internal */
4018
4274
  updateDisplayLabel(): void;
4275
+ /**
4276
+ * The label for a range. For a date range, it shows the range start and the last day, both included, and a range of
4277
+ * one day shows that day once. For a datetime range, it shows the start and end instants. For a time range, it shows
4278
+ * the start and end times, with an end at the end of the day shown as 24:00. An invalid range shows an empty label,
4279
+ * as the calendar shows no selection.
4280
+ */
4281
+ private rangeLabel;
4019
4282
  private handleFocus;
4020
4283
  private handleBlur;
4021
4284
  private handleDocumentFocusIn;
@@ -4026,6 +4289,7 @@ declare class FlowUiDateTimePicker extends FlowRdfFormControl {
4026
4289
  private handleComboboxKeyDown;
4027
4290
  private handleClearClick;
4028
4291
  private handleClearMouseDown;
4292
+ private handleCalendarInput;
4029
4293
  private handleCalendarChange;
4030
4294
  private handleInvalid;
4031
4295
  /** @internal */
@@ -4046,6 +4310,11 @@ declare class FlowUiDateTimePicker extends FlowRdfFormControl {
4046
4310
  reportValidity(): boolean;
4047
4311
  /** Sets a custom validation message. Pass an empty string to restore validity. */
4048
4312
  setCustomValidity(message: string): void;
4313
+ protected updated(changedProperties: PropertyValues<this>): void;
4314
+ /** Set the value input's custom validity: the message from `setCustomValidity()`, or a limits message. */
4315
+ private updateCustomValidity;
4316
+ /** The validation message for a value outside `min`, `max` or `max-range`, or an empty string. */
4317
+ private limitsValidityMessage;
4049
4318
  /** Sets focus on the control. */
4050
4319
  focus(options?: FocusOptions): void;
4051
4320
  /** Removes focus from the control. */
@@ -6715,4 +6984,4 @@ declare global {
6715
6984
  }
6716
6985
  }
6717
6986
 
6718
- export { type BaseColorMapperField, type BaseColorStopOptions, type ColorMapperField, type ColorMapperOptions, type ColorMapperValue, type ColorStopOptions, type ColorStopValue, type FlowQueryBuilderConfig, type FlowQueryBuilderConverter, type FlowQueryBuilderConverterOptions, type FlowQueryBuilderDateField, type FlowQueryBuilderDateTimeField, type FlowQueryBuilderDateTimeFieldBase, type FlowQueryBuilderField, type FlowQueryBuilderFieldBase, type FlowQueryBuilderFieldDefinition, type FlowQueryBuilderFieldMap, type FlowQueryBuilderFieldType, type FlowQueryBuilderFieldTypeMap, type FlowQueryBuilderNumberField, type FlowQueryBuilderOption, type FlowQueryBuilderRule, type FlowQueryBuilderRuleSet, type FlowQueryBuilderSelectField, type FlowQueryBuilderStringField, type FlowQueryBuilderTemplateFn, type FlowQueryBuilderTimeField, type FlowAfterCollapseEvent as FlowUiAfterCollapseEvent, type FlowAfterExpandEvent as FlowUiAfterExpandEvent, type FlowAfterHideEvent as FlowUiAfterHideEvent, type FlowAfterShowEvent as FlowUiAfterShowEvent, FlowUiAlert, FlowUiAnimation, type FlowApplyEvent as FlowUiApplyEvent, FlowUiAutocomplete, FlowUiAvatar, FlowUiBadge, FlowUiBaseControl, type FlowBlurEvent as FlowUiBlurEvent, FlowUiBreadcrumb, FlowUiBreadcrumbItem, FlowUiBusyOverlay, FlowUiButton, FlowUiButtonGroup, FlowUiCalendar, type FlowCancelEvent as FlowUiCancelEvent, FlowUiCard, FlowUiCarousel, FlowUiCarouselItem, type FlowChangeEvent as FlowUiChangeEvent, FlowUiChart, FlowUiCheckbox, FlowUiCheckboxGroup, type FlowClearEvent as FlowUiClearEvent, type FlowCloseEvent as FlowUiCloseEvent, type FlowCollapseEvent as FlowUiCollapseEvent, type FlowCollapseTreeEvent as FlowUiCollapseSplitViewEvent, FlowUiColorMapper, FlowUiColorPicker, FlowUiColorStop, FlowUiDateTimePicker, FlowUiDetails, FlowUiDialog, FlowUiDivider, type FlowDragDropEvent as FlowUiDragDrop, type FlowDragEndEvent as FlowUiDragEndEvent, type FlowDragEvent as FlowUiDragEvent, type FlowDragOverEvent as FlowUiDragOverEvent, type FlowDragStartEvent as FlowUiDragStartEvent, FlowUiDrawer, FlowUiDropdown, type FlowErrorEvent as FlowUiErrorEvent, type FlowExpandEvent as FlowUiExpandEvent, type FlowExpandTreeEvent as FlowUiExpandSplitViewEvent, type FlowFinishEvent as FlowUiFinishEvent, type FlowFocusEvent as FlowUiFocusEvent, FlowUiFormGroup, FlowUiGauge, type FlowHideEvent as FlowUiHideEvent, type FlowHoverEvent as FlowUiHoverEvent, FlowUiIcon, FlowUiIconButton, type FlowInitialFocusEvent as FlowUiInitialFocusEvent, FlowUiInput, type FlowInputEvent as FlowUiInputEvent, type FlowInvalidEvent as FlowUiInvalidEvent, type FlowLazyChangeEvent as FlowUiLazyChangeEvent, type FlowLazyLoadEvent as FlowUiLazyLoadEvent, FlowUiList, FlowUiListItem, type FlowLoadEvent as FlowUiLoadEvent, FlowUiMap, type FlowMapLoadEvent as FlowUiMapLoadEvent, FlowUiMenu, FlowUiMenuItem, FlowUiMenuLabel, type FlowMutationEvent as FlowUiMutationEvent, FlowUiMutationObserver, FlowUiOption, FlowUiPanel, FlowUiPanelHeader, type FlowPanelToggleEvent as FlowUiPanelToggleEvent, FlowUiPopup, FlowUiProgressBar, FlowUiProgressRing, FlowUiQueryBuilder, FlowUiRadio, FlowUiRadioGroup, FlowUiRange, type FlowRemoveEvent as FlowUiRemoveEvent, type FlowRepositionEvent as FlowUiRepositionEvent, type FlowRequestCloseEvent as FlowUiRequestCloseEvent, type FlowResizeEvent as FlowUiResizeEvent, FlowUiResizeObserver, FlowUiScrollView, FlowUiSelect, type FlowSelectEvent as FlowUiSelectEvent, type FlowShowEvent as FlowUiShowEvent, type FlowSlideChange as FlowUiSlideChange, FlowUiSplitView, FlowUiSplitViewDivider, FlowUiSplitViewPane, FlowUiSplitViewToggleButton, type FlowStartEvent as FlowUiStartEvent, FlowUiStepper, FlowUiStepperPanel, FlowUiSwitch, FlowUiTab, FlowUiTabGroup, type FlowTabHideEvent as FlowUiTabHideEvent, FlowUiTabPanel, type FlowTabShowEvent as FlowUiTabShowEvent, FlowUiTag, FlowUiTextarea, FlowUiTimer, FlowUiToolButton, FlowUiToolButtonGroup, FlowUiTooltip, FlowUiTree, FlowUiTreeItem, FlowUiVisuallyHidden, JavaScriptFilterError, type JavaScriptFilterFn, LocalizeController, type NumberColorMapperField, type NumberColorStopOptions, type SelectColorMapperField, type SelectColorStopOptions, type StringColorMapperField, type StringColorStopOptions, type Translation, addIcons, colorMapperValueToMaplibreExpression, countRuleSet, escapeMaplibreString, filterRuleSet, converter$2 as flowQueryConverter, getAnimationNames, getEasingNames, initialize, initializeChartJs, isRule, isRuleOrRuleset, isRuleSet, converter$1 as javascriptFilterConverter, converter as mapLayerFilterConverter, registerChartComponent, registerComponents, registerIconLibrary, registerTranslation, renameRuleSetFields, setDefaultLocale, setDefaultTimeZone, transformRuleSet, unregisterIconLibrary };
6987
+ export { type BaseColorMapperField, type BaseColorStopOptions, type ColorMapperField, type ColorMapperOptions, type ColorMapperValue, type ColorStopOptions, type ColorStopValue, type FlowQueryBuilderConfig, type FlowQueryBuilderConverter, type FlowQueryBuilderConverterOptions, type FlowQueryBuilderDateField, type FlowQueryBuilderDateTimeField, type FlowQueryBuilderDateTimeFieldBase, type FlowQueryBuilderField, type FlowQueryBuilderFieldBase, type FlowQueryBuilderFieldDefinition, type FlowQueryBuilderFieldMap, type FlowQueryBuilderFieldType, type FlowQueryBuilderFieldTypeMap, type FlowQueryBuilderNumberField, type FlowQueryBuilderOption, type FlowQueryBuilderRule, type FlowQueryBuilderRuleSet, type FlowQueryBuilderSelectField, type FlowQueryBuilderStringField, type FlowQueryBuilderTemplateFn, type FlowQueryBuilderTimeField, type FlowAfterCollapseEvent as FlowUiAfterCollapseEvent, type FlowAfterExpandEvent as FlowUiAfterExpandEvent, type FlowAfterHideEvent as FlowUiAfterHideEvent, type FlowAfterShowEvent as FlowUiAfterShowEvent, FlowUiAlert, FlowUiAnimation, type FlowApplyEvent as FlowUiApplyEvent, FlowUiAutocomplete, FlowUiAvatar, FlowUiBadge, FlowUiBaseControl, type FlowBlurEvent as FlowUiBlurEvent, FlowUiBreadcrumb, FlowUiBreadcrumbItem, FlowUiBusyOverlay, FlowUiButton, FlowUiButtonGroup, FlowUiCalendar, type FlowCancelEvent as FlowUiCancelEvent, FlowUiCard, FlowUiCarousel, FlowUiCarouselItem, type FlowChangeEvent as FlowUiChangeEvent, FlowUiChart, FlowUiCheckbox, FlowUiCheckboxGroup, type FlowClearEvent as FlowUiClearEvent, type FlowCloseEvent as FlowUiCloseEvent, type FlowCollapseEvent as FlowUiCollapseEvent, type FlowCollapseTreeEvent as FlowUiCollapseSplitViewEvent, FlowUiColorMapper, FlowUiColorPicker, FlowUiColorStop, FlowUiDateTimePicker, FlowUiDetails, FlowUiDialog, FlowUiDivider, type FlowDragDropEvent as FlowUiDragDrop, type FlowDragEndEvent as FlowUiDragEndEvent, type FlowDragEvent as FlowUiDragEvent, type FlowDragOverEvent as FlowUiDragOverEvent, type FlowDragStartEvent as FlowUiDragStartEvent, FlowUiDrawer, FlowUiDropdown, type FlowErrorEvent as FlowUiErrorEvent, type FlowExpandEvent as FlowUiExpandEvent, type FlowExpandTreeEvent as FlowUiExpandSplitViewEvent, type FlowFinishEvent as FlowUiFinishEvent, type FlowFocusEvent as FlowUiFocusEvent, FlowUiFormGroup, FlowUiGauge, type FlowHideEvent as FlowUiHideEvent, type FlowHoverEvent as FlowUiHoverEvent, FlowUiIcon, FlowUiIconButton, type FlowInitialFocusEvent as FlowUiInitialFocusEvent, FlowUiInput, type FlowInputEvent as FlowUiInputEvent, type FlowInvalidEvent as FlowUiInvalidEvent, type FlowLazyChangeEvent as FlowUiLazyChangeEvent, type FlowLazyLoadEvent as FlowUiLazyLoadEvent, FlowUiList, FlowUiListItem, type FlowLoadEvent as FlowUiLoadEvent, FlowUiMap, type FlowMapLoadEvent as FlowUiMapLoadEvent, FlowUiMenu, FlowUiMenuItem, FlowUiMenuLabel, type FlowMutationEvent as FlowUiMutationEvent, FlowUiMutationObserver, FlowUiOption, FlowUiPanel, FlowUiPanelHeader, type FlowPanelToggleEvent as FlowUiPanelToggleEvent, FlowUiPopup, FlowUiProgressBar, FlowUiProgressRing, FlowUiQueryBuilder, FlowUiRadio, FlowUiRadioGroup, FlowUiRange, type FlowRemoveEvent as FlowUiRemoveEvent, type FlowRepositionEvent as FlowUiRepositionEvent, type FlowRequestCloseEvent as FlowUiRequestCloseEvent, type FlowResizeEvent as FlowUiResizeEvent, FlowUiResizeObserver, FlowUiScrollView, FlowUiSelect, type FlowSelectEvent as FlowUiSelectEvent, type FlowShowEvent as FlowUiShowEvent, type FlowSlideChange as FlowUiSlideChange, FlowUiSplitView, FlowUiSplitViewDivider, FlowUiSplitViewPane, FlowUiSplitViewToggleButton, type FlowStartEvent as FlowUiStartEvent, FlowUiStepper, FlowUiStepperPanel, FlowUiSwitch, FlowUiTab, FlowUiTabGroup, type FlowTabHideEvent as FlowUiTabHideEvent, FlowUiTabPanel, type FlowTabShowEvent as FlowUiTabShowEvent, FlowUiTag, FlowUiTextarea, FlowUiTimer, FlowUiToolButton, FlowUiToolButtonGroup, FlowUiTooltip, FlowUiTree, FlowUiTreeItem, FlowUiVisuallyHidden, JavaScriptFilterError, type JavaScriptFilterFn, LocalizeController, type NumberColorMapperField, type NumberColorStopOptions, type SelectColorMapperField, type SelectColorStopOptions, type StringColorMapperField, type StringColorStopOptions, type Translation, addIcons, betweenRuleValues, colorMapperValueToMaplibreExpression, countRuleSet, escapeMaplibreString, filterRuleSet, converter$2 as flowQueryConverter, getAnimationNames, getEasingNames, initialize, initializeChartJs, isRule, isRuleOrRuleset, isRuleSet, converter$1 as javascriptFilterConverter, converter as mapLayerFilterConverter, registerChartComponent, registerComponents, registerIconLibrary, registerTranslation, renameRuleSetFields, setDefaultLocale, setDefaultTimeZone, transformRuleSet, unregisterIconLibrary };