@revolist/ui 4.0.4-rc → 4.0.6-rc
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/MIGRATION.md +36 -0
- package/OWNERSHIP.md +10 -10
- package/README.md +22 -4
- package/_chunks/arrow-up-Cw8hW9vp.js +4 -0
- package/_chunks/badge.view-D30pMUfi.js +14 -0
- package/_chunks/calculator-CDWOuAcp.js +4 -0
- package/_chunks/{calendar-xpZ0v3xf.js → calendar-QWDyYzdo.js} +19 -19
- package/_chunks/chart-frame-hcOlnQ1K.js +145 -0
- package/_chunks/check-BwI7iCAm.js +4 -0
- package/_chunks/choice-chips-A6WR-WJe.js +126 -0
- package/_chunks/{color-palette-D8vyPfld.js → color-palette-DMJUChWC.js} +20 -22
- package/_chunks/color-picker-BK4W1nd6.js +143 -0
- package/_chunks/{component-C_T2VN5u.js → component-CMkF17YZ.js} +281 -265
- package/_chunks/{component-metadata-BMOOmqx5.js → component-metadata-BKd7U8OW.js} +0 -8
- package/_chunks/configurator-actions-By8WSL2m.js +155 -0
- package/_chunks/configurator-field-icon-CmcM_sPs.js +53 -0
- package/_chunks/{control-AHKXD5Eu.js → control-mlH7l0Uq.js} +42 -17
- package/_chunks/{controls-DsNi8V8I.js → controls-FUU-MUKC.js} +171 -186
- package/_chunks/{date-control-DrVFX13g.js → date-control-Dup_P3w5.js} +1 -1
- package/_chunks/{date-time-qIhp5vaX.js → date-time-9z6pAG5T.js} +317 -278
- package/_chunks/dialog.parts-Bi7YbXqS.js +131 -0
- package/_chunks/{duration-CL68Em0o.js → duration-D7oRjsmP.js} +5 -5
- package/_chunks/editor-popup-ByU7qiub.js +82 -0
- package/_chunks/field-configurator-BCINdXpU.js +223 -0
- package/_chunks/{framework-mount--RTLIqE-.js → framework-mount-Bk4O_T7T.js} +1 -1
- package/_chunks/icon-toolbar-DSjOdwM7.js +134 -0
- package/_chunks/magnifying-glass-CvrTDSkB.js +4 -0
- package/_chunks/minus-BOAR3A1C.js +4 -0
- package/_chunks/mount-Cw2zk58T.js +266 -0
- package/_chunks/{native.view-ByyZ1CT5.js → native-Blr3byjO.js} +1 -1
- package/_chunks/native-control-pFMuHf3G.js +644 -0
- package/_chunks/{number-input-BKwA5FnM.js → number-input-DqXV6vgP.js} +7 -7
- package/_chunks/{picker-h1P5RUgp.js → picker-gEGTu1Ki.js} +2 -2
- package/_chunks/plus-CbGRkIGl.js +4 -0
- package/_chunks/popover-controller-D-AvKQ7B.js +102 -0
- package/_chunks/{popup-CT2uD3go.js → popup-C35Isk7p.js} +115 -104
- package/_chunks/{rating-choice-DZgmaic0.js → rating-choice-DbxdUJr-.js} +1 -1
- package/_chunks/{reorder-list-CSlqAGHw.js → reorder-list-B0_13Sja.js} +1 -1
- package/_chunks/request-trail-CCSK6TJA.js +753 -0
- package/_chunks/rich-text-5rnc8lpI.js +842 -0
- package/_chunks/rotate-left-BF6G883o.js +4 -0
- package/_chunks/title-tooltip-Cw6LOZhb.js +11 -0
- package/_chunks/tooltip-D4xkio5G.js +54 -0
- package/_chunks/tooltip-owner-DjdvqKzz.js +19 -0
- package/_chunks/tooltip-session-B6X6x8G_.js +110 -0
- package/_chunks/tooltip-text-BXsUEmBH.js +12 -0
- package/_chunks/top-layer-popup-CNSDdfJV.js +59 -0
- package/_variables.scss +33 -32
- package/ai/_chat.scss +28 -3
- package/ai/_style.scss +55 -2
- package/ai/chat.d.ts +3 -1
- package/ai/components.d.ts +13 -2
- package/ai/index.d.ts +1 -0
- package/ai/index.js +3 -3
- package/ai/mount.d.ts +17 -1
- package/ai/results/_style.scss +83 -0
- package/ai/results/index.d.ts +11 -0
- package/ai/results/metrics.d.ts +5 -0
- package/ai/results/table.d.ts +5 -0
- package/ai/results/text.d.ts +5 -0
- package/ai/results/types.d.ts +29 -0
- package/ai/transcript.d.ts +2 -0
- package/ai/translations.d.ts +1 -1
- package/assignee/assignee.scss +5 -1
- package/assignee/index.js +2 -2
- package/avatar/index.d.ts +25 -2
- package/avatar/index.js +33 -32
- package/badge.view.d.ts +8 -0
- package/brush-range/component.d.ts +1 -3
- package/brush-range/component.js +27 -27
- package/buttons/remove-button.d.ts +1 -1
- package/buttons/remove-button.style.scss +1 -1
- package/buttons/svg-button.d.ts +1 -1
- package/buttons/svg-button.js +16 -16
- package/calendar/_calendar.scss +2 -2
- package/calendar/calendar.js +1 -1
- package/calendar/index.js +2 -2
- package/checkbox/checkbox.scss +1 -22
- package/choice-chips/index.d.ts +3 -1
- package/choice-chips/index.js +1 -1
- package/color-palette/color-palette.js +1 -1
- package/color-palette/color-palette.style.scss +1 -1
- package/color-palette/color-picker.js +2 -2
- package/color-palette/common-palettes.d.ts +1 -1
- package/color-palette/common-palettes.js +1 -1
- package/color-palette/native.d.ts +15 -2
- package/component-catalog.d.ts +9 -7
- package/configurator-actions.d.ts +67 -0
- package/configurator-actions.js +1 -0
- package/configurator-aggregation-list.d.ts +14 -0
- package/configurator-aggregation-list.js +61 -0
- package/configurator-drop-zone.d.ts +38 -0
- package/configurator-drop-zone.js +64 -0
- package/configurator-field-icon.d.ts +10 -0
- package/configurator-field-icon.js +1 -0
- package/configurator-focus.d.ts +4 -0
- package/configurator-focus.js +39 -0
- package/configurator-sections.d.ts +42 -0
- package/configurator-sections.js +71 -0
- package/control-presentation.d.ts +8 -2
- package/control-presentation.js +25 -20
- package/controls.d.ts +1 -2
- package/controls.js +4 -3
- package/core/editor-popup-position.d.ts +6 -2
- package/core/editor-popup.d.ts +4 -0
- package/core/editor-popup.js +1 -1
- package/core/popover-controller.d.ts +35 -0
- package/core/popup-ownership.d.ts +2 -0
- package/core/title-tooltip.d.ts +2 -0
- package/core/tooltip-session.d.ts +29 -0
- package/core/tooltip-surface.d.ts +13 -0
- package/core/tooltip-text.d.ts +6 -0
- package/core/tooltip.d.ts +35 -0
- package/core/top-layer-popup.d.ts +4 -0
- package/core/top-layer-popup.js +1 -23
- package/date-time/attach.d.ts +1 -1
- package/date-time/field.d.ts +3 -2
- package/date-time/index.js +1 -1
- package/date-time/style.scss +64 -7
- package/date-time/time-selection.d.ts +3 -1
- package/date-time/types.d.ts +5 -1
- package/dialog/dialog-action-footer.d.ts +17 -2
- package/dialog/dialog.dom.d.ts +15 -2
- package/dialog/dialog.dom.js +9 -9
- package/dialog/dialog.parts.d.ts +1 -1
- package/dialog/dialog.parts.js +1 -1
- package/distribution-chart/_distribution-chart.scss +12 -54
- package/distribution-chart/area-chart.js +1 -1
- package/distribution-chart/bar-chart.js +1 -1
- package/distribution-chart/index.d.ts +1 -1
- package/distribution-chart/line-chart.js +1 -1
- package/dropdown/content.js +1 -1
- package/dropdown/control.js +1 -1
- package/dropdown/editor-dropdown.style.scss +5 -0
- package/dropdown/index.js +2 -2
- package/dropdown/lookup-field.d.ts +5 -0
- package/dropdown/lookup-field.js +2 -1
- package/dropdown/popup.d.ts +2 -2
- package/dropdown/popup.js +1 -1
- package/duration/index.js +1 -1
- package/editor-actions.js +1 -1
- package/field-configurator.d.ts +27 -0
- package/field-configurator.js +4 -170
- package/field-expansion.d.ts +9 -0
- package/filter/filters/slider/_slider.scss +8 -25
- package/filter/filters/slider/control.js +2 -0
- package/filter/filters/slider/runtime.js +49 -22
- package/filter/filters/slider/single.js +1 -1
- package/filter-badge.js +1 -1
- package/filter-controls.d.ts +0 -1
- package/filter-controls.js +5 -6
- package/form-controls/index.d.ts +10 -2
- package/form-controls/index.js +7 -7
- package/form-controls/presentation.js +12 -12
- package/formatting/index.d.ts +1 -1
- package/formatting/index.js +22 -21
- package/formatting/styles.scss +2 -47
- package/framework.js +226 -222
- package/history-controls.js +27 -1
- package/icon-toolbar.d.ts +62 -0
- package/icon-toolbar.js +1 -0
- package/masked-input/index.js +1 -1
- package/native-control.d.ts +1 -2
- package/native-control.js +1 -1
- package/native-controls.d.ts +54 -2
- package/native-styles.css +1 -1
- package/native.js +46 -43
- package/number-input/index.js +1 -1
- package/package.json +36 -1
- package/pagination.js +11 -11
- package/pdf-viewer/index.js +1 -1
- package/pickers.d.ts +5 -1
- package/preact-mount.js +1 -1
- package/preact.d.ts +8 -6
- package/preact.js +71 -64
- package/rating-choice.js +1 -1
- package/react-control.d.ts +2 -0
- package/react-control.js +2 -2
- package/react.d.ts +5 -6
- package/react.js +68 -66
- package/reorder-list.js +1 -1
- package/resource-picker/resource-picker-popup.js +1 -1
- package/resource-picker/resource-picker.js +4 -4
- package/rich-text/engine.d.ts +1 -0
- package/rich-text/format-html.d.ts +2 -0
- package/rich-text/index.d.ts +4 -0
- package/rich-text/index.js +1 -1
- package/rich-text/model.d.ts +2 -0
- package/rich-text/style.scss +165 -70
- package/rich-text/syntax.d.ts +5 -0
- package/rich-text/translations.d.ts +2 -0
- package/search-input/index.js +1 -1
- package/search-input/native.d.ts +21 -2
- package/select.d.ts +3 -1
- package/select.js +1 -1
- package/status-feedback/exit-snapshot.js +4 -4
- package/status-feedback/popover.js +4 -4
- package/styles/_alert.scss +18 -4
- package/styles/_compositions.scss +3 -3
- package/styles/_editor-slider.scss +0 -2
- package/styles/_field-configurator.scss +147 -0
- package/styles/_fields-grid.scss +37 -0
- package/styles/_palette.scss +0 -24
- package/styles/_primitives.scss +28 -19
- package/styles/configurator-actions.scss +141 -0
- package/styles/{legacy-pagination.css → pagination.css} +19 -2
- package/styles.css +1 -1
- package/styles.scss +2 -2
- package/surfaces.d.ts +36 -2
- package/surfaces.js +35 -132
- package/svelte.js +3 -3
- package/switch/index.js +15 -14
- package/time-grid.d.ts +0 -1
- package/time-grid.js +38 -37
- package/timeline-track/index.js +2 -2
- package/ui.css +1 -1
- package/vue.d.ts +26 -30
- package/vue.js +117 -121
- package/_chunks/chart-frame-Cmc7xU1i.js +0 -130
- package/_chunks/choice-chips-CHQTUdLs.js +0 -110
- package/_chunks/color-picker-CudqPYZo.js +0 -138
- package/_chunks/control-tooltip-uscKfAnV.js +0 -100
- package/_chunks/dialog.parts-CKGkC5zP.js +0 -134
- package/_chunks/editor-popup-WDdtVDNA.js +0 -81
- package/_chunks/history-controls-B3u3INEK.js +0 -27
- package/_chunks/mount-DQ1cpppK.js +0 -257
- package/_chunks/native-control-C_yok8_-.js +0 -605
- package/_chunks/request-trail-DSlFix6i.js +0 -618
- package/_chunks/rich-text-CH7gIqOS.js +0 -636
- package/avatar/index.view.d.ts +0 -25
- package/color-palette/native.view.d.ts +0 -15
- package/control-presentation.view.d.ts +0 -8
- package/dialog/dialog-action-footer.view.d.ts +0 -20
- package/dialog/dialog.dom.view.d.ts +0 -15
- package/form-controls/index.view.d.ts +0 -10
- package/formatting/control-tooltip.d.ts +0 -27
- package/native-controls.view.d.ts +0 -54
- package/search-input/native.view.d.ts +0 -21
- package/surfaces.view.d.ts +0 -63
- /package/styles/{legacy-rating.css → rating.css} +0 -0
package/MIGRATION.md
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Current UI APIs
|
|
2
|
+
|
|
3
|
+
This change removes compatibility-only component names, CSS hooks and forwarding modules. Native mounting APIs (`createPreactElement`, `mountColorPicker`, native controls and dialogs) and React, Vue, Angular and Svelte adapters remain supported.
|
|
4
|
+
|
|
5
|
+
## Component names
|
|
6
|
+
|
|
7
|
+
Use the current names from the matching framework entry:
|
|
8
|
+
|
|
9
|
+
| Removed name | Current name |
|
|
10
|
+
| --- | --- |
|
|
11
|
+
| `Icon` | `SvgIcon` |
|
|
12
|
+
| `RemovableChip` | `FilterChip` |
|
|
13
|
+
| `Slider` | `SingleValueSlider` |
|
|
14
|
+
| `RangeSlider` | `PreactRangeSlider` |
|
|
15
|
+
| `ResourcePicker` | `SharedResourcePicker` |
|
|
16
|
+
| `FeedbackPanel` | `StatusFeedbackPanel` |
|
|
17
|
+
|
|
18
|
+
The same names apply to the Angular/Svelte `UiComponent` component selector. Local import aliases are ordinary language aliases and remain available, for example `import { SingleValueSlider as Slider } from '@revolist/ui/react'`.
|
|
19
|
+
|
|
20
|
+
Import `Legend` from `@revolist/ui/legend` or the framework entry, rather than `@revolist/ui/filter-controls`. Use `ControlTooltip` instead of the unused `TooltipSurface` export. Render `DialogActionFooter` or `ActionFooterView` directly instead of calling the removed `renderDialogActionFooter(h, props)` signature.
|
|
21
|
+
|
|
22
|
+
## Styling
|
|
23
|
+
|
|
24
|
+
`TimeGrid` and `BrushRange` no longer accept `legacyClassPrefix`. Use `rv-time-grid__*` and `brush-range__*` respectively. Slider endpoints use the shared `fromSlider` and `toSlider` classes. Product-owned filter headers, summaries and action controls retain their product-owned names.
|
|
25
|
+
|
|
26
|
+
Checkbox customization uses `--rv-ui-checkbox-bg`, `--rv-ui-checkbox-border`, `--rv-ui-checkbox-checked`, `--rv-ui-checkbox-check` and `--rv-ui-checkbox-focus`; RowSelect/ColumnDialog variable aliases are removed.
|
|
27
|
+
|
|
28
|
+
The active rating and pagination style rules are now in `styles/rating.css` and `styles/pagination.css`, and remain included by the main stylesheet. Primitive `$legacy-*` Sass aliases are removed; internal styles use the existing palette lookup API. The unused scalar-slider fill element is removed; its current range input owns the fill.
|
|
29
|
+
|
|
30
|
+
## Date/time labels
|
|
31
|
+
|
|
32
|
+
A time picker uses `text.chooseTime`, falling back to its default time label. It no longer borrows `text.chooseDate`. Date pickers continue to use `text.chooseDate`.
|
|
33
|
+
|
|
34
|
+
## Source ownership
|
|
35
|
+
|
|
36
|
+
Forwarding-only `.ts` modules have been replaced by their owning TSX implementations at the canonical module paths. Public package entry names stay unchanged. The native mounting bridge remains the shared owner of element-returning adapters.
|
package/OWNERSHIP.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Shared UI ownership
|
|
2
2
|
|
|
3
3
|
`@revolist/ui` is the implementation owner for reusable product controls. Pro's
|
|
4
|
-
|
|
4
|
+
canonical exports and leaf modules contain the current implementations. Product code owns
|
|
5
5
|
values, validation, commands, persistence and domain layout.
|
|
6
6
|
|
|
7
7
|
AI prompt, suggestions, applied-request trail, action status, result and assistant compositions live in
|
|
@@ -11,28 +11,28 @@ view snapshots. Framework adapters and native mounting reuse the same TSX.
|
|
|
11
11
|
|
|
12
12
|
| Component family | Implementation owner under `src/` | Style owner under `src/` |
|
|
13
13
|
| --- | --- | --- |
|
|
14
|
-
| Native button, input, select, textarea, summary | `control-presentation.
|
|
14
|
+
| Native button, input, select, textarea, summary | `control-presentation.tsx`; Preact `native-control.tsx` | `styles/_primitives.scss`, `styles/_control.scss`, `_form.scss` |
|
|
15
15
|
| Button variants, icon button, toggle, group | `controls.tsx`, `buttons/` | `styles/_primitives.scss` |
|
|
16
16
|
| Icon | `icons/icon.tsx` | `styles/_primitives.scss` |
|
|
17
17
|
| Checkbox | `checkbox/index.ts` | `checkbox/checkbox.scss` |
|
|
18
18
|
| Switch | `switch/index.tsx` | `styles/_primitives.scss` |
|
|
19
19
|
| Radio group | `controls.tsx` | `_form.scss`, `styles/_compositions.scss` |
|
|
20
20
|
| Choice chips, segmented control, tabs | `choice-chips/`, `segmented-switch/`; semantic exports in `controls.tsx` | `styles/_primitives.scss` |
|
|
21
|
-
| Search | `search-input/native.
|
|
22
|
-
| Number/date/time inputs, stepper | `controls.tsx`; grid scalar/counter adapters in `native-controls.
|
|
21
|
+
| Search | `search-input/native.tsx`; Preact `search-input/index.tsx` | `styles/_primitives.scss` |
|
|
22
|
+
| Number/date/time inputs, stepper | `controls.tsx`; grid scalar/counter adapters in `native-controls.tsx` | `_form.scss`, `styles/_editor-counter.scss` |
|
|
23
23
|
| Listbox, panes, split layout | `editor-layout/index.tsx`; neutral aliases in `controls.tsx` | `editor-layout/style.scss` |
|
|
24
24
|
| Form field, hint, error, section, disclosure | `form-controls/`, `controls.tsx` | `_form.scss`, `styles/_compositions.scss` |
|
|
25
25
|
| Chips | `form-controls/presentation.tsx` | `styles/_primitives.scss` |
|
|
26
|
-
| Scalar/range sliders | `filter/filters/slider/`, `native-controls.
|
|
26
|
+
| Scalar/range sliders | `filter/filters/slider/`, `native-controls.tsx` | `filter/filters/slider/_slider.scss`, `styles/_editor-slider.scss` |
|
|
27
27
|
| Calendar and date pickers | `calendar/`, `pickers.tsx` | `calendar/_calendar.scss`, `styles/_compositions.scss` |
|
|
28
28
|
| Dropdown, combobox, multi-select | `dropdown/`; compositions in `pickers.tsx` | `dropdown/editor-dropdown.style.scss`, `styles/_compositions.scss` |
|
|
29
29
|
| Color palette/picker | `color-palette/` | `color-palette/*.scss` |
|
|
30
30
|
| Resource picker, avatar | `resource-picker/`, `avatar/` | `resource-picker/resource-picker.scss`, `avatar/avatar.style.scss` |
|
|
31
|
-
| Dialog, popover, tooltip, menu, resize | `surfaces.
|
|
31
|
+
| Dialog, popover, tooltip, menu, resize | `surfaces.tsx`, `dialog/`, `core/`; Preact compositions in `controls.tsx` and `pickers.tsx` | `_dialog.scss`, `styles/_primitives.scss`, `styles/_compositions.scss` |
|
|
32
32
|
| Toolbar, panel, empty state, alerts | `controls.tsx` | `styles/_compositions.scss` |
|
|
33
33
|
| Status feedback and badges | `status-feedback/`, `controls.tsx` | `status-feedback/status-feedback.scss`, `styles/_primitives.scss` |
|
|
34
|
-
| Loading | `native-controls.
|
|
35
|
-
| Pagination, progress, rating | `pagination.ts`, `progress/`, `native-controls.
|
|
34
|
+
| Loading | `native-controls.tsx`, `controls.tsx` | `styles/_loading.scss`, `styles/_compositions.scss` |
|
|
35
|
+
| Pagination, progress, rating | `pagination.ts`, `progress/`, `native-controls.tsx`, `controls.tsx` | `progress/_bar.scss`, `progress/_circular.scss`, `styles/rating.css`, `styles/pagination.css`, `styles/_compositions.scss` |
|
|
36
36
|
| BarChart, LineChart, AreaChart; distribution adapter and brush range | `distribution-chart/bar-chart.tsx`, `line-chart.tsx`, `area-chart.tsx`; shared `chart-frame.tsx` and `geometry.ts`; `brush-range/` | `distribution-chart/_distribution-chart.scss`, `brush-range/_brush-range.scss` |
|
|
37
37
|
| Option rows, legend, inline fields | `filter-controls.tsx` | `styles/_filter-controls.scss` |
|
|
38
38
|
| Weekly time grid and keyboard/paint gesture lifecycle | `time-grid.tsx` | `styles/_time-grid.scss` |
|
|
@@ -72,7 +72,7 @@ integration tests. Canonical suite selection is documented in `TESTING.md`.
|
|
|
72
72
|
|
|
73
73
|
History and export commands use UI's `SvgButton` (or `IconButton` convenience composition) for SVG, count badge and pointer/keyboard tooltip presentation. Element-returning adapters use `decorateIconAction`; Charts renders controls through Preact. Products supply localized labels, permissions, actions and history counts. `ToolbarGroup` groups commands with spacing; `ButtonGroup` remains the bordered choice composition. Both danger button variants use the same red outline presentation.
|
|
74
74
|
|
|
75
|
-
Structured filter adapters retain aggregation, matching, amount/date validation, timezone policy, preset meaning and commit transactions. UI receives explicit data and formatted labels. Expression parsing, syntax tokens, diagnostics and debounce remain in Pro; UI owns the highlighted input's geometry and scroll synchronization. TimeGrid owns keyboard focus and paint gesture cleanup; Pro expands visual buckets into selected hourly filter values.
|
|
75
|
+
Structured filter adapters retain aggregation, matching, amount/date validation, timezone policy, preset meaning and commit transactions. UI receives explicit data and formatted labels. Expression parsing, syntax tokens, diagnostics and debounce remain in Pro; UI owns the highlighted input's geometry and scroll synchronization. TimeGrid owns keyboard focus and paint gesture cleanup; Pro expands visual buckets into selected hourly filter values. Filter consumers use the canonical TimeGrid and BrushRange classes and semantic UI tokens.
|
|
76
76
|
|
|
77
77
|
## Grid-backed filter compositions stay in Pro
|
|
78
78
|
|
|
@@ -120,4 +120,4 @@ Link-style action buttons use `Button variant="link"` or `SvgButton variant="lin
|
|
|
120
120
|
|
|
121
121
|
## Preact element construction
|
|
122
122
|
|
|
123
|
-
All shared UI markup is Preact TSX. Element-returning
|
|
123
|
+
All shared UI markup is Preact TSX. Element-returning native APIs mount the same TSX through `preact-mount.ts`; they do not build parallel DOM trees. Lifecycle controllers may attach, position, focus and dispose rendered roots. Grid/Stencil VNode adapters retain the Core rendering contract. Charts controls use Preact through the same mount boundary; chart scene/export geometry remains scene-owned.
|
package/README.md
CHANGED
|
@@ -65,6 +65,22 @@ export function ReportName() {
|
|
|
65
65
|
|
|
66
66
|
Controls can be used without a RevoGrid instance. Grid cell templates, providers, row data, and product-specific scheduling logic stay in their owning product packages.
|
|
67
67
|
|
|
68
|
+
## Popover dismissal
|
|
69
|
+
|
|
70
|
+
`Popover` accepts `closeOnOutside` and `closeOnEscape`, both enabled by default, matching `PopoverController`. Set either to `false` independently; changes also apply while open. `open` remains controlled: update it in `onClose` (Vue: `@close`), or close it directly from an action.
|
|
71
|
+
|
|
72
|
+
```vue
|
|
73
|
+
<Popover
|
|
74
|
+
:open="open"
|
|
75
|
+
:anchor="anchor"
|
|
76
|
+
:close-on-outside="false"
|
|
77
|
+
:close-on-escape="false"
|
|
78
|
+
@close="open = false"
|
|
79
|
+
>
|
|
80
|
+
<button @click="open = false">Done</button>
|
|
81
|
+
</Popover>
|
|
82
|
+
```
|
|
83
|
+
|
|
68
84
|
## Framework integrations
|
|
69
85
|
|
|
70
86
|
| Framework | Entry point | Integration | Guide |
|
|
@@ -114,7 +130,7 @@ Every component in the shared adapter catalog is listed below. Each name links t
|
|
|
114
130
|
|
|
115
131
|
Actions, grouped commands, toggled state, icons, compact sizing, busy states and pill corners.
|
|
116
132
|
|
|
117
|
-
[Button](https://github.com/revolist/revo-ui/blob/main/docs/api/Button.md) ([examples](https://ui.rv-grid.com/components/buttons/)) | [IconButton](https://github.com/revolist/revo-ui/blob/main/docs/api/IconButton.md) ([examples](https://ui.rv-grid.com/components/buttons/)) | [SvgButton](https://github.com/revolist/revo-ui/blob/main/docs/api/SvgButton.md) ([examples](https://ui.rv-grid.com/components/buttons/)) | [ToggleButton](https://github.com/revolist/revo-ui/blob/main/docs/api/ToggleButton.md) ([examples](https://ui.rv-grid.com/components/buttons/)) | [ButtonGroup](https://github.com/revolist/revo-ui/blob/main/docs/api/ButtonGroup.md) ([examples](https://ui.rv-grid.com/components/buttons/)) | [DeleteButton](https://github.com/revolist/revo-ui/blob/main/docs/api/DeleteButton.md) ([examples](https://ui.rv-grid.com/components/buttons/)) | [RemoveButton](https://github.com/revolist/revo-ui/blob/main/docs/api/RemoveButton.md) ([examples](https://ui.rv-grid.com/components/buttons/)) | [
|
|
133
|
+
[Button](https://github.com/revolist/revo-ui/blob/main/docs/api/Button.md) ([examples](https://ui.rv-grid.com/components/buttons/)) | [IconButton](https://github.com/revolist/revo-ui/blob/main/docs/api/IconButton.md) ([examples](https://ui.rv-grid.com/components/buttons/)) | [SvgButton](https://github.com/revolist/revo-ui/blob/main/docs/api/SvgButton.md) ([examples](https://ui.rv-grid.com/components/buttons/)) | [ToggleButton](https://github.com/revolist/revo-ui/blob/main/docs/api/ToggleButton.md) ([examples](https://ui.rv-grid.com/components/buttons/)) | [ButtonGroup](https://github.com/revolist/revo-ui/blob/main/docs/api/ButtonGroup.md) ([examples](https://ui.rv-grid.com/components/buttons/)) | [DeleteButton](https://github.com/revolist/revo-ui/blob/main/docs/api/DeleteButton.md) ([examples](https://ui.rv-grid.com/components/buttons/)) | [RemoveButton](https://github.com/revolist/revo-ui/blob/main/docs/api/RemoveButton.md) ([examples](https://ui.rv-grid.com/components/buttons/)) | [SvgIcon](https://github.com/revolist/revo-ui/blob/main/docs/api/SvgIcon.md) ([examples](https://ui.rv-grid.com/components/buttons/))
|
|
118
134
|
|
|
119
135
|
### Selection controls
|
|
120
136
|
|
|
@@ -138,13 +154,13 @@ Text, search and numeric entry; field labels, validation, inline layouts and edi
|
|
|
138
154
|
|
|
139
155
|
Single or multiple selections, searchable options, selected-value templates, avatars, resource lists and assignee fields.
|
|
140
156
|
|
|
141
|
-
[Dropdown](https://github.com/revolist/revo-ui/blob/main/docs/api/Dropdown.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [DropdownPopup](https://github.com/revolist/revo-ui/blob/main/docs/api/DropdownPopup.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [DropdownPopupContent](https://github.com/revolist/revo-ui/blob/main/docs/api/DropdownPopupContent.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [Combobox](https://github.com/revolist/revo-ui/blob/main/docs/api/Combobox.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [MultiSelect](https://github.com/revolist/revo-ui/blob/main/docs/api/MultiSelect.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [Chip](https://github.com/revolist/revo-ui/blob/main/docs/api/Chip.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [FilterChip](https://github.com/revolist/revo-ui/blob/main/docs/api/FilterChip.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [
|
|
157
|
+
[Dropdown](https://github.com/revolist/revo-ui/blob/main/docs/api/Dropdown.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [DropdownPopup](https://github.com/revolist/revo-ui/blob/main/docs/api/DropdownPopup.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [DropdownPopupContent](https://github.com/revolist/revo-ui/blob/main/docs/api/DropdownPopupContent.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [Combobox](https://github.com/revolist/revo-ui/blob/main/docs/api/Combobox.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [MultiSelect](https://github.com/revolist/revo-ui/blob/main/docs/api/MultiSelect.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [Chip](https://github.com/revolist/revo-ui/blob/main/docs/api/Chip.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [FilterChip](https://github.com/revolist/revo-ui/blob/main/docs/api/FilterChip.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [Avatar](https://github.com/revolist/revo-ui/blob/main/docs/api/Avatar.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [SharedResourcePicker](https://github.com/revolist/revo-ui/blob/main/docs/api/SharedResourcePicker.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [ResourcePickerAvatar](https://github.com/revolist/revo-ui/blob/main/docs/api/ResourcePickerAvatar.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [AssigneePicker](https://github.com/revolist/revo-ui/blob/main/docs/api/AssigneePicker.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [AssigneeField](https://github.com/revolist/revo-ui/blob/main/docs/api/AssigneeField.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [AssigneePickerLayout](https://github.com/revolist/revo-ui/blob/main/docs/api/AssigneePickerLayout.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/))
|
|
142
158
|
|
|
143
159
|
### Sliders
|
|
144
160
|
|
|
145
161
|
Scalar and interval controls with labels, value badges, thumb values, ticks and units.
|
|
146
162
|
|
|
147
|
-
[
|
|
163
|
+
[SingleValueSlider](https://github.com/revolist/revo-ui/blob/main/docs/api/SingleValueSlider.md) ([examples](https://ui.rv-grid.com/components/sliders/)) | [PreactRangeSlider](https://github.com/revolist/revo-ui/blob/main/docs/api/PreactRangeSlider.md) ([examples](https://ui.rv-grid.com/components/sliders/)) | [SliderField](https://github.com/revolist/revo-ui/blob/main/docs/api/SliderField.md) ([examples](https://ui.rv-grid.com/components/sliders/))
|
|
148
164
|
|
|
149
165
|
### Timeline track
|
|
150
166
|
|
|
@@ -198,7 +214,7 @@ Command menus, nested commands, separators and grouped toolbar actions.
|
|
|
198
214
|
|
|
199
215
|
Semantic badges, counters, alerts, progress indicators, loading surfaces, empty states and feedback panels.
|
|
200
216
|
|
|
201
|
-
[Badge](https://github.com/revolist/revo-ui/blob/main/docs/api/Badge.md) ([examples](https://ui.rv-grid.com/components/status-and-feedback/)) | [CountBadge](https://github.com/revolist/revo-ui/blob/main/docs/api/CountBadge.md) ([examples](https://ui.rv-grid.com/components/status-and-feedback/)) | [Alert](https://github.com/revolist/revo-ui/blob/main/docs/api/Alert.md) ([examples](https://ui.rv-grid.com/components/status-and-feedback/)) | [Spinner](https://github.com/revolist/revo-ui/blob/main/docs/api/Spinner.md) ([examples](https://ui.rv-grid.com/components/status-and-feedback/)) | [LoadingOverlay](https://github.com/revolist/revo-ui/blob/main/docs/api/LoadingOverlay.md) ([examples](https://ui.rv-grid.com/components/status-and-feedback/)) | [EmptyState](https://github.com/revolist/revo-ui/blob/main/docs/api/EmptyState.md) ([examples](https://ui.rv-grid.com/components/status-and-feedback/)) | [
|
|
217
|
+
[Badge](https://github.com/revolist/revo-ui/blob/main/docs/api/Badge.md) ([examples](https://ui.rv-grid.com/components/status-and-feedback/)) | [CountBadge](https://github.com/revolist/revo-ui/blob/main/docs/api/CountBadge.md) ([examples](https://ui.rv-grid.com/components/status-and-feedback/)) | [Alert](https://github.com/revolist/revo-ui/blob/main/docs/api/Alert.md) ([examples](https://ui.rv-grid.com/components/status-and-feedback/)) | [Spinner](https://github.com/revolist/revo-ui/blob/main/docs/api/Spinner.md) ([examples](https://ui.rv-grid.com/components/status-and-feedback/)) | [LoadingOverlay](https://github.com/revolist/revo-ui/blob/main/docs/api/LoadingOverlay.md) ([examples](https://ui.rv-grid.com/components/status-and-feedback/)) | [EmptyState](https://github.com/revolist/revo-ui/blob/main/docs/api/EmptyState.md) ([examples](https://ui.rv-grid.com/components/status-and-feedback/)) | [StatusFeedbackPanel](https://github.com/revolist/revo-ui/blob/main/docs/api/StatusFeedbackPanel.md) ([examples](https://ui.rv-grid.com/components/status-and-feedback/)) | [StatusBadge](https://github.com/revolist/revo-ui/blob/main/docs/api/StatusBadge.md) ([examples](https://ui.rv-grid.com/components/status-and-feedback/))
|
|
202
218
|
|
|
203
219
|
### Layout
|
|
204
220
|
|
|
@@ -426,3 +442,5 @@ Motion follows the system's reduced-motion preference. `data-rv-ui-motion="off"`
|
|
|
426
442
|
## Licensing
|
|
427
443
|
|
|
428
444
|
Revo UI is [MIT licensed](LICENSE). Anyone can use, modify, and distribute it, including in commercial projects.
|
|
445
|
+
|
|
446
|
+
See [Current UI APIs](MIGRATION.md) for removed compatibility names and consumer migrations.
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
//#region ../../node_modules/.pnpm/@fortawesome+fontawesome-free@7.3.1/node_modules/@fortawesome/fontawesome-free/svgs/solid/arrow-down.svg?raw
|
|
2
|
+
var e = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 384 512\"><!--! Font Awesome Free 7.3.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2026 Fonticons, Inc. --><path fill=\"currentColor\" d=\"M169.4 502.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 402.7 224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 370.7-105.4-105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z\"/></svg>", t = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 384 512\"><!--! Font Awesome Free 7.3.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2026 Fonticons, Inc. --><path fill=\"currentColor\" d=\"M214.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3 160 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-370.7 105.4 105.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z\"/></svg>";
|
|
3
|
+
//#endregion
|
|
4
|
+
export { e as n, t };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { t as e } from "./jsxRuntime.module-F6UFnpT-.js";
|
|
2
|
+
import { badgeClassName as t } from "../badge.js";
|
|
3
|
+
//#region src/badge.view.tsx
|
|
4
|
+
function n({ children: n, className: r = "", variant: i, shape: a }) {
|
|
5
|
+
return /* @__PURE__ */ e("span", {
|
|
6
|
+
class: `${t({
|
|
7
|
+
variant: i,
|
|
8
|
+
shape: a
|
|
9
|
+
})} ${r}`,
|
|
10
|
+
children: n
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
//#endregion
|
|
14
|
+
export { n as t };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
//#region ../../node_modules/.pnpm/@fortawesome+fontawesome-free@7.3.1/node_modules/@fortawesome/fontawesome-free/svgs/solid/calculator.svg?raw
|
|
2
|
+
var e = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 384 512\"><!--! Font Awesome Free 7.3.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2026 Fonticons, Inc. --><path fill=\"currentColor\" d=\"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L64 0zM96 64l192 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L96 160c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32zm16 168a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zm80 24a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm128-24a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM88 352a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm128-24a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zm80 24a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM64 424c0-13.3 10.7-24 24-24l112 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L88 448c-13.3 0-24-10.7-24-24zm232-24c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24z\"/></svg>";
|
|
3
|
+
//#endregion
|
|
4
|
+
export { e as t };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { i as e, n as t, t as n } from "./hooks.module-CG3gN83z.js";
|
|
2
2
|
import { t as r } from "./jsxRuntime.module-F6UFnpT-.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { createControlId as i } from "../core/control-id.js";
|
|
4
|
+
import { l as a, t as o } from "./native-control-pFMuHf3G.js";
|
|
5
5
|
import { DEFAULT_CALENDAR_TRANSLATIONS as s } from "../calendar/translations.js";
|
|
6
6
|
import { a as c, n as l } from "./iso-B0YHBK7m.js";
|
|
7
7
|
import { a as u, c as d, d as f, f as p, l as m, n as h, p as g, r as _, s as v, t as y, u as b } from "./model-mPO2tG2f.js";
|
|
@@ -9,7 +9,7 @@ import { CalendarHeader as ee, CalendarWeekdays as te } from "../calendar/header
|
|
|
9
9
|
import { CalendarMonthGrid as x } from "../calendar/month-grid.js";
|
|
10
10
|
import { CalendarYearGrid as ne } from "../calendar/year-grid.js";
|
|
11
11
|
//#region src/calendar/caption.tsx
|
|
12
|
-
function re({ month: e, system: n, locale:
|
|
12
|
+
function re({ month: e, system: n, locale: i, layout: o, start: s, end: c, disabled: l, labels: u, onChange: d }) {
|
|
13
13
|
let h = m(e, n), g = f(e, n), _ = t(() => {
|
|
14
14
|
let t = m(e, n)[0], r = s ? m(s, n)[0] : v(t, -600, n), i = c ? m(c, n)[0] : v(t, 120, n), a = [];
|
|
15
15
|
for (let e = r; e <= i; e = v(e, 12, n)) a.push(e);
|
|
@@ -22,7 +22,7 @@ function re({ month: e, system: n, locale: a, layout: o, start: s, end: c, disab
|
|
|
22
22
|
]);
|
|
23
23
|
return /* @__PURE__ */ r("div", {
|
|
24
24
|
class: "revo-calendar__caption",
|
|
25
|
-
children: [o === "dropdown-years" ? /* @__PURE__ */ r("span", { children: b(e,
|
|
25
|
+
children: [o === "dropdown-years" ? /* @__PURE__ */ r("span", { children: b(e, i, { month: "long" }, n) }) : /* @__PURE__ */ r(a, {
|
|
26
26
|
className: "rv-select",
|
|
27
27
|
config: {
|
|
28
28
|
ariaLabel: u.chooseMonth,
|
|
@@ -33,11 +33,11 @@ function re({ month: e, system: n, locale: a, layout: o, start: s, end: c, disab
|
|
|
33
33
|
value: String(g.month),
|
|
34
34
|
source: h.map((e, t) => ({
|
|
35
35
|
value: String(t + 1),
|
|
36
|
-
label: b(e,
|
|
36
|
+
label: b(e, i, { month: "short" }, n),
|
|
37
37
|
disabled: !!(s && e < p(s, n) || c && e > p(c, n))
|
|
38
38
|
})),
|
|
39
39
|
onChange: (e) => d(h[Number(e) - 1])
|
|
40
|
-
}), o === "dropdown-months" ? /* @__PURE__ */ r("span", { children: b(e,
|
|
40
|
+
}), o === "dropdown-months" ? /* @__PURE__ */ r("span", { children: b(e, i, { year: "numeric" }, n) }) : /* @__PURE__ */ r(a, {
|
|
41
41
|
className: "rv-select",
|
|
42
42
|
config: {
|
|
43
43
|
ariaLabel: u.chooseYear,
|
|
@@ -48,7 +48,7 @@ function re({ month: e, system: n, locale: a, layout: o, start: s, end: c, disab
|
|
|
48
48
|
value: h[0],
|
|
49
49
|
source: _.map((e) => ({
|
|
50
50
|
value: e,
|
|
51
|
-
label: b(e,
|
|
51
|
+
label: b(e, i, { year: "numeric" }, n)
|
|
52
52
|
})),
|
|
53
53
|
onChange: (e) => {
|
|
54
54
|
let t = v(e, g.month - 1, n);
|
|
@@ -60,8 +60,8 @@ function re({ month: e, system: n, locale: a, layout: o, start: s, end: c, disab
|
|
|
60
60
|
//#endregion
|
|
61
61
|
//#region src/calendar/calendar.tsx
|
|
62
62
|
var ie = "2026-08-02";
|
|
63
|
-
function S({ locale:
|
|
64
|
-
let [E] = e(() =>
|
|
63
|
+
function S({ locale: a = "en-US", weekStartsOn: f = 1, showOutsideDays: m = !1, allowOutsideMonthSelection: S = !1, fixedWeeks: ae = !0, showTodayButton: oe = !1, showHeader: se = !0, showNavigation: C = !0, showPreviousButton: ce = C, showNextButton: le = C, showMonthLabel: ue = !0, showWeekdays: de = !0, enableYearView: w = !0, translations: fe = {}, ...T }) {
|
|
64
|
+
let [E] = e(() => i("rv-calendar-feedback")), D = T.calendarSystem ?? "gregory", O = Math.max(1, Math.min(12, Math.trunc(T.numberOfMonths || 1))), k = t(() => {
|
|
65
65
|
let e = T.views ? [...new Set(T.views.filter((e) => e === "month" || e === "year"))] : w ? ["month", "year"] : ["month"];
|
|
66
66
|
return e.length ? e : ["month"];
|
|
67
67
|
}, [T.views, w]), [A, pe] = e(T.defaultView && k.includes(T.defaultView) ? T.defaultView : k[0]), j = k.includes(A) ? A : k[0], M = p(T.month, D), N = t(() => Array.from({ length: O }, (e, t) => v(M, t, D)), [
|
|
@@ -121,7 +121,7 @@ function S({ locale: i = "en-US", weekStartsOn: f = 1, showOutsideDays: m = !1,
|
|
|
121
121
|
let e = F.current.get(r);
|
|
122
122
|
e && (I.current = !1, e.focus());
|
|
123
123
|
}));
|
|
124
|
-
}, q = (e) => T.formatMonth?.(e,
|
|
124
|
+
}, q = (e) => T.formatMonth?.(e, a) ?? b(e, a, {
|
|
125
125
|
month: "long",
|
|
126
126
|
year: "numeric"
|
|
127
127
|
}, D), J = j === "year", Y = J ? 12 : T.pagedNavigation ? O : 1, X = H(v(M, -Y, D), J ? 1 : O), Z = H(v(M, Y, D), J ? 1 : O), Q = (e, t = J ? 1 : O) => {
|
|
@@ -140,13 +140,13 @@ function S({ locale: i = "en-US", weekStartsOn: f = 1, showOutsideDays: m = !1,
|
|
|
140
140
|
children: (J ? [M] : me).map((e, t) => /* @__PURE__ */ r("section", {
|
|
141
141
|
class: "revo-calendar__month-panel",
|
|
142
142
|
children: [se && /* @__PURE__ */ r(ee, {
|
|
143
|
-
label: J ? b(e,
|
|
143
|
+
label: J ? b(e, a, { year: "numeric" }, D) : q(e),
|
|
144
144
|
previousLabel: J ? L.previousYear : L.previousMonth,
|
|
145
145
|
nextLabel: J ? L.nextYear : L.nextMonth,
|
|
146
146
|
caption: !J && T.captionLayout && T.captionLayout !== "label" ? /* @__PURE__ */ r(re, {
|
|
147
147
|
month: e,
|
|
148
148
|
system: D,
|
|
149
|
-
locale:
|
|
149
|
+
locale: a,
|
|
150
150
|
layout: T.captionLayout,
|
|
151
151
|
start: z,
|
|
152
152
|
end: B,
|
|
@@ -172,8 +172,8 @@ function S({ locale: i = "en-US", weekStartsOn: f = 1, showOutsideDays: m = !1,
|
|
|
172
172
|
minDate: T.minDate,
|
|
173
173
|
maxDate: T.maxDate,
|
|
174
174
|
isMonthDisabled: T.isMonthDisabled,
|
|
175
|
-
locale:
|
|
176
|
-
ariaLabel: `${L.chooseMonth} ${b(M,
|
|
175
|
+
locale: a,
|
|
176
|
+
ariaLabel: `${L.chooseMonth} ${b(M, a, { year: "numeric" }, D)}`,
|
|
177
177
|
onEscape: () => G("month"),
|
|
178
178
|
onSelect: (e) => {
|
|
179
179
|
Q(e, O), G("month");
|
|
@@ -184,7 +184,7 @@ function S({ locale: i = "en-US", weekStartsOn: f = 1, showOutsideDays: m = !1,
|
|
|
184
184
|
"aria-label": `${q(e)} ${L.calendar}`,
|
|
185
185
|
children: [de && /* @__PURE__ */ r(te, {
|
|
186
186
|
dates: he,
|
|
187
|
-
locale:
|
|
187
|
+
locale: a,
|
|
188
188
|
format: T.formatWeekday ?? ((e, t) => b(e, t, { weekday: /^(fa|ar)(-|$)/.test(t) ? "narrow" : "short" }, D)),
|
|
189
189
|
weekNumberLabel: T.showWeekNumber ? L.weekNumber : void 0
|
|
190
190
|
}), /* @__PURE__ */ r(x, {
|
|
@@ -202,9 +202,9 @@ function S({ locale: i = "en-US", weekStartsOn: f = 1, showOutsideDays: m = !1,
|
|
|
202
202
|
showOutsideDays: m,
|
|
203
203
|
allowOutsideMonthSelection: S,
|
|
204
204
|
dayClassName: T.dayClassName,
|
|
205
|
-
renderDay: T.renderDay ?? ((e) => b(e,
|
|
205
|
+
renderDay: T.renderDay ?? ((e) => b(e, a, { day: "numeric" }, D)),
|
|
206
206
|
isDisabled: W,
|
|
207
|
-
formatDayLabel: (e) => T.formatDayLabel?.(e,
|
|
207
|
+
formatDayLabel: (e) => T.formatDayLabel?.(e, a) ?? b(e, a, {
|
|
208
208
|
weekday: "long",
|
|
209
209
|
month: "long",
|
|
210
210
|
day: "numeric",
|
|
@@ -212,7 +212,7 @@ function S({ locale: i = "en-US", weekStartsOn: f = 1, showOutsideDays: m = !1,
|
|
|
212
212
|
}, D),
|
|
213
213
|
weekNumber: T.showWeekNumber ? (e) => {
|
|
214
214
|
let t = d(T.weekNumbering === "local" ? e : g(e, (4 - c(e) + 7) % 7), T.weekNumbering === "local" ? f : 1, T.weekNumbering === "local" ? 1 : 4, T.weekNumbering === "local" ? D : "gregory");
|
|
215
|
-
return T.formatWeekNumber?.(t) ?? new Intl.NumberFormat(
|
|
215
|
+
return T.formatWeekNumber?.(t) ?? new Intl.NumberFormat(a).format(t);
|
|
216
216
|
} : void 0,
|
|
217
217
|
weekNumberLabel: L.weekNumber,
|
|
218
218
|
setDayRef: _e,
|
|
@@ -226,7 +226,7 @@ function S({ locale: i = "en-US", weekStartsOn: f = 1, showOutsideDays: m = !1,
|
|
|
226
226
|
}),
|
|
227
227
|
T.presets?.length ? /* @__PURE__ */ r("div", {
|
|
228
228
|
class: "revo-calendar__presets",
|
|
229
|
-
children: T.presets.map((e) => /* @__PURE__ */ r(
|
|
229
|
+
children: T.presets.map((e) => /* @__PURE__ */ r(o, {
|
|
230
230
|
disabled: W(e.date),
|
|
231
231
|
onClick: () => $(e.date),
|
|
232
232
|
children: e.label
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { i as e } from "./preact.module-BBM36DnO.js";
|
|
2
|
+
import { i as t, t as n } from "./hooks.module-CG3gN83z.js";
|
|
3
|
+
import { t as r } from "./jsxRuntime.module-F6UFnpT-.js";
|
|
4
|
+
import { r as i } from "./tooltip-D4xkio5G.js";
|
|
5
|
+
import { t as a } from "./tooltip-text-BXsUEmBH.js";
|
|
6
|
+
//#region src/distribution-chart/geometry.ts
|
|
7
|
+
function o(e) {
|
|
8
|
+
let t = e.map(({ value: e }) => Number.isFinite(e) ? Math.max(0, e) : 0), n = Math.max(1, ...t);
|
|
9
|
+
return {
|
|
10
|
+
values: t,
|
|
11
|
+
max: n,
|
|
12
|
+
points: t.map((t, r) => ({
|
|
13
|
+
x: e.length <= 1 ? 50 : r / (e.length - 1) * 100,
|
|
14
|
+
y: 96 - t / n * 88
|
|
15
|
+
}))
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function s(e, t) {
|
|
19
|
+
return t === "step" ? `H ${e.x} V ${e.y}` : `L ${e.x} ${e.y}`;
|
|
20
|
+
}
|
|
21
|
+
function c(e, t, n = "linear") {
|
|
22
|
+
return `M ${e.x} ${e.y} ${s(t, n)}`;
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
//#region src/distribution-chart/chart-frame.tsx
|
|
26
|
+
function l({ title: e, details: t = [] }) {
|
|
27
|
+
return [e, ...t].filter(Boolean).join(". ");
|
|
28
|
+
}
|
|
29
|
+
function u({ title: t, details: n = [] }) {
|
|
30
|
+
return /* @__PURE__ */ r(e, { children: [/* @__PURE__ */ r("strong", { children: t }), n.map((e) => /* @__PURE__ */ r("span", { children: e }, e))] });
|
|
31
|
+
}
|
|
32
|
+
function d({ data: e, ariaLabel: i, variant: s, height: c = 72, className: d = "", showGrid: f = !1, showLabels: m = !1, showValues: h = !1, legend: g, formatValue: _ = String, tooltip: v = !0, tooltipIndicator: y = "none", renderTooltip: b, positions: x, datumColors: S, renderDatum: C, children: w }) {
|
|
33
|
+
let { values: T, max: E } = o(e), [D, O] = t(0), k = n([]), A = Math.min(D, Math.max(0, e.length - 1)), j = (t) => {
|
|
34
|
+
if (!e.length) return;
|
|
35
|
+
let n = Math.max(0, Math.min(t, e.length - 1));
|
|
36
|
+
O(n), k.current[n]?.focus();
|
|
37
|
+
};
|
|
38
|
+
return /* @__PURE__ */ r("div", {
|
|
39
|
+
class: `rv-distribution-chart rv-distribution-chart--${s} ${d}`.trim(),
|
|
40
|
+
role: "group",
|
|
41
|
+
"aria-label": i,
|
|
42
|
+
"data-empty": e.length ? void 0 : "true",
|
|
43
|
+
children: [
|
|
44
|
+
/* @__PURE__ */ r("div", {
|
|
45
|
+
class: "rv-distribution-chart__region",
|
|
46
|
+
style: { height: `${Math.max(40, Math.min(240, c))}px` },
|
|
47
|
+
children: [
|
|
48
|
+
f && /* @__PURE__ */ r("div", {
|
|
49
|
+
class: "rv-distribution-chart__grid",
|
|
50
|
+
"aria-hidden": "true",
|
|
51
|
+
children: [
|
|
52
|
+
0,
|
|
53
|
+
1,
|
|
54
|
+
2,
|
|
55
|
+
3,
|
|
56
|
+
4
|
|
57
|
+
].map((e) => /* @__PURE__ */ r("span", {}, e))
|
|
58
|
+
}),
|
|
59
|
+
w,
|
|
60
|
+
/* @__PURE__ */ r("div", {
|
|
61
|
+
class: "rv-distribution-chart__data",
|
|
62
|
+
role: "list",
|
|
63
|
+
children: e.map((t, n) => {
|
|
64
|
+
let i = x?.[n], a = !i;
|
|
65
|
+
return /* @__PURE__ */ r(p, {
|
|
66
|
+
indicator: y,
|
|
67
|
+
tooltipText: v ? l(t.tooltip) : void 0,
|
|
68
|
+
tooltipContent: b ? b(t, n) : u(t.tooltip),
|
|
69
|
+
datumRef: (e) => {
|
|
70
|
+
k.current[n] = e;
|
|
71
|
+
},
|
|
72
|
+
class: `rv-distribution-chart__datum${t.selected ? " is-selected" : ""}${a ? " is-bar" : " is-point"}`,
|
|
73
|
+
role: "listitem",
|
|
74
|
+
tabIndex: n === A ? 0 : -1,
|
|
75
|
+
"aria-label": l(t.tooltip),
|
|
76
|
+
style: {
|
|
77
|
+
"--rv-distribution-accent": S?.[n],
|
|
78
|
+
...a ? {} : {
|
|
79
|
+
left: `${i.x}%`,
|
|
80
|
+
top: `${i.y}%`
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
onFocus: () => O(n),
|
|
84
|
+
onKeyDown: (t) => {
|
|
85
|
+
t.key === "ArrowRight" || t.key === "ArrowDown" ? (t.preventDefault(), j(n + 1)) : t.key === "ArrowLeft" || t.key === "ArrowUp" ? (t.preventDefault(), j(n - 1)) : t.key === "Home" ? (t.preventDefault(), j(0)) : t.key === "End" && (t.preventDefault(), j(e.length - 1));
|
|
86
|
+
},
|
|
87
|
+
children: [C(t, n), h && /* @__PURE__ */ r("span", {
|
|
88
|
+
class: "rv-distribution-chart__value",
|
|
89
|
+
style: a ? {
|
|
90
|
+
top: `${100 - Math.max(3, T[n] / E * 100)}%`,
|
|
91
|
+
transform: "translate(-50%, -100%)"
|
|
92
|
+
} : void 0,
|
|
93
|
+
"aria-hidden": "true",
|
|
94
|
+
children: _(t.value)
|
|
95
|
+
})]
|
|
96
|
+
}, t.key);
|
|
97
|
+
})
|
|
98
|
+
})
|
|
99
|
+
]
|
|
100
|
+
}),
|
|
101
|
+
m && /* @__PURE__ */ r("div", {
|
|
102
|
+
class: `rv-distribution-chart__labels${s === "bar" ? " is-bar" : ""}`,
|
|
103
|
+
"aria-hidden": "true",
|
|
104
|
+
children: e.map((e) => /* @__PURE__ */ r(a, {
|
|
105
|
+
title: e.tooltip.title,
|
|
106
|
+
children: e.tooltip.title
|
|
107
|
+
}, e.key))
|
|
108
|
+
}),
|
|
109
|
+
g && /* @__PURE__ */ r("div", {
|
|
110
|
+
class: "rv-distribution-chart__legend",
|
|
111
|
+
children: [/* @__PURE__ */ r("i", { "aria-hidden": "true" }), g]
|
|
112
|
+
})
|
|
113
|
+
]
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
function f({ children: e }) {
|
|
117
|
+
return /* @__PURE__ */ r("svg", {
|
|
118
|
+
class: "rv-distribution-chart__plot",
|
|
119
|
+
viewBox: "0 0 100 100",
|
|
120
|
+
preserveAspectRatio: "none",
|
|
121
|
+
"aria-hidden": "true",
|
|
122
|
+
focusable: "false",
|
|
123
|
+
children: e
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
function p({ tooltipText: t, tooltipContent: n, indicator: a, children: o, onFocus: s, onKeyDown: c, datumRef: l, ...u }) {
|
|
127
|
+
let d = i(t ?? "", !0, {
|
|
128
|
+
className: `rv-distribution-chart__tooltip rv-distribution-chart__tooltip--${a}`,
|
|
129
|
+
content: /* @__PURE__ */ r(e, { children: [a !== "none" && /* @__PURE__ */ r("i", { "aria-hidden": "true" }), n] })
|
|
130
|
+
});
|
|
131
|
+
return /* @__PURE__ */ r("span", {
|
|
132
|
+
ref: l,
|
|
133
|
+
...u,
|
|
134
|
+
...t ? d.triggerProps : {},
|
|
135
|
+
onKeyDown: (e) => {
|
|
136
|
+
d.triggerProps.onKeyDown(e), e.defaultPrevented || c?.(e);
|
|
137
|
+
},
|
|
138
|
+
onFocus: (e) => {
|
|
139
|
+
s?.(e), t && d.triggerProps.onFocus(e);
|
|
140
|
+
},
|
|
141
|
+
children: [o, t && d.tooltip]
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
//#endregion
|
|
145
|
+
export { c as i, f as n, o as r, d as t };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
//#region ../../node_modules/.pnpm/@fortawesome+fontawesome-free@7.3.1/node_modules/@fortawesome/fontawesome-free/svgs/solid/check.svg?raw
|
|
2
|
+
var e = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"><!--! Font Awesome Free 7.3.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2026 Fonticons, Inc. --><path fill=\"currentColor\" d=\"M434.8 70.1c14.3 10.4 17.5 30.4 7.1 44.7l-256 352c-5.5 7.6-14 12.3-23.4 13.1s-18.5-2.7-25.1-9.3l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l101.5 101.5 234-321.7c10.4-14.3 30.4-17.5 44.7-7.1z\"/></svg>";
|
|
3
|
+
//#endregion
|
|
4
|
+
export { e as t };
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { i as e, r as t, t as n } from "./hooks.module-CG3gN83z.js";
|
|
2
|
+
import { t as r } from "./jsxRuntime.module-F6UFnpT-.js";
|
|
3
|
+
import { n as i } from "./popover-controller-D-AvKQ7B.js";
|
|
4
|
+
import { SvgIcon as a } from "../icons/icon.js";
|
|
5
|
+
import { t as o } from "./native-control-pFMuHf3G.js";
|
|
6
|
+
import { RemoveButton as s } from "../buttons/remove-button.js";
|
|
7
|
+
//#region ../../node_modules/.pnpm/@fortawesome+fontawesome-free@7.3.1/node_modules/@fortawesome/fontawesome-free/svgs/solid/circle-info.svg?raw
|
|
8
|
+
var c = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><!--! Font Awesome Free 7.3.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2026 Fonticons, Inc. --><path fill=\"currentColor\" d=\"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM224 160a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-8 64l48 0c13.3 0 24 10.7 24 24l0 88 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l24 0 0-64-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"/></svg>";
|
|
9
|
+
//#endregion
|
|
10
|
+
//#region src/choice-chips/index.tsx
|
|
11
|
+
function l({ value: i, options: a, onChange: o, ariaLabel: s, appearance: c = "soft", scrollable: l = !1, size: u = "medium", className: f = "", itemClassName: p = "", disabled: m = !1, testId: h }) {
|
|
12
|
+
let g = n(null), [_, v] = e(""), y = () => {
|
|
13
|
+
let e = g.current;
|
|
14
|
+
if (!l || !e) return;
|
|
15
|
+
let t = e.scrollLeft > 1, n = e.scrollWidth - e.clientWidth - e.scrollLeft > 1;
|
|
16
|
+
v(`${t ? "left" : ""} ${n ? "right" : ""}`.trim());
|
|
17
|
+
};
|
|
18
|
+
t(() => {
|
|
19
|
+
if (!l || !g.current || (y(), typeof ResizeObserver > "u")) return;
|
|
20
|
+
let e = new ResizeObserver(y);
|
|
21
|
+
e.observe(g.current);
|
|
22
|
+
for (let t of g.current.children) e.observe(t);
|
|
23
|
+
return () => e.disconnect();
|
|
24
|
+
}, [l, a]);
|
|
25
|
+
let b = Array.isArray(i) ? i : i === void 0 ? [] : [i];
|
|
26
|
+
return /* @__PURE__ */ r("div", {
|
|
27
|
+
ref: g,
|
|
28
|
+
onScroll: l ? y : void 0,
|
|
29
|
+
"data-scroll-edges": l ? _ : void 0,
|
|
30
|
+
class: `rv-choice-chips rv-choice-chips--${c} rv-choice-chips--${u}${l ? " rv-choice-chips--scrollable" : ""} ${f}`.trim(),
|
|
31
|
+
role: "group",
|
|
32
|
+
"aria-label": s,
|
|
33
|
+
"data-testid": h,
|
|
34
|
+
children: a.map((e) => {
|
|
35
|
+
let t = b.includes(e.value), n = m || !!e.disabled;
|
|
36
|
+
return /* @__PURE__ */ r(d, {
|
|
37
|
+
className: `${p} ${e.className ?? ""}`.trim(),
|
|
38
|
+
style: e.style,
|
|
39
|
+
color: e.color,
|
|
40
|
+
selected: t,
|
|
41
|
+
"aria-label": e.ariaLabel,
|
|
42
|
+
title: e.title,
|
|
43
|
+
disabled: n,
|
|
44
|
+
"data-value": String(e.value),
|
|
45
|
+
"data-testid": e.testId,
|
|
46
|
+
onSelect: () => {
|
|
47
|
+
n || o(e.value, e);
|
|
48
|
+
},
|
|
49
|
+
info: e.info,
|
|
50
|
+
onRemove: e.onRemove,
|
|
51
|
+
removeLabel: e.removeLabel,
|
|
52
|
+
children: e.label
|
|
53
|
+
}, String(e.value));
|
|
54
|
+
})
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
function u({ "data-tooltip": e, title: s, ref: l, ...u }) {
|
|
58
|
+
let d = n(null), f = e ?? (typeof s == "object" ? s.value : s);
|
|
59
|
+
return t(() => {
|
|
60
|
+
if (!d.current || !f) return;
|
|
61
|
+
let e = new i();
|
|
62
|
+
return e.bind(d.current, f, { trigger: "click" }), () => e.destroy();
|
|
63
|
+
}, [f]), /* @__PURE__ */ r(o, {
|
|
64
|
+
...u,
|
|
65
|
+
type: "button",
|
|
66
|
+
ref: (e) => {
|
|
67
|
+
d.current = e, typeof l == "function" ? l(e) : l && (l.current = e);
|
|
68
|
+
},
|
|
69
|
+
class: `rv-choice-chip-info ${u.className ?? u.class ?? ""}`.trim(),
|
|
70
|
+
children: /* @__PURE__ */ r(a, {
|
|
71
|
+
svg: c,
|
|
72
|
+
size: 12
|
|
73
|
+
})
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
function d({ children: e, color: t, selected: n, onSelect: i, info: a, onRemove: o, removeLabel: c, removeClassName: l = "", className: u = "", disabled: d, ...f }) {
|
|
77
|
+
let p = t ? typeof f.style == "string" ? `${f.style};--rv-choice-chip-color:${t}` : {
|
|
78
|
+
...f.style,
|
|
79
|
+
"--rv-choice-chip-color": t
|
|
80
|
+
} : f.style;
|
|
81
|
+
return !a && !o && i ? /* @__PURE__ */ r("button", {
|
|
82
|
+
...f,
|
|
83
|
+
style: p,
|
|
84
|
+
"data-color": t ? "true" : void 0,
|
|
85
|
+
type: "button",
|
|
86
|
+
class: `rv-choice-chip ${u}`.trim(),
|
|
87
|
+
"aria-pressed": n,
|
|
88
|
+
disabled: d,
|
|
89
|
+
onClick: i,
|
|
90
|
+
children: e
|
|
91
|
+
}) : /* @__PURE__ */ r("span", {
|
|
92
|
+
class: `rv-choice-chip rv-choice-chip--composite ${u}`.trim(),
|
|
93
|
+
role: f.role,
|
|
94
|
+
style: p,
|
|
95
|
+
"data-color": t ? "true" : void 0,
|
|
96
|
+
"data-selected": n ? "true" : void 0,
|
|
97
|
+
"aria-disabled": d || void 0,
|
|
98
|
+
children: [
|
|
99
|
+
i ? /* @__PURE__ */ r("button", {
|
|
100
|
+
...f,
|
|
101
|
+
type: "button",
|
|
102
|
+
class: "rv-choice-chip-label",
|
|
103
|
+
"aria-pressed": n,
|
|
104
|
+
disabled: d,
|
|
105
|
+
onClick: i,
|
|
106
|
+
children: e
|
|
107
|
+
}) : /* @__PURE__ */ r("span", {
|
|
108
|
+
class: "rv-choice-chip-label",
|
|
109
|
+
children: e
|
|
110
|
+
}),
|
|
111
|
+
a,
|
|
112
|
+
o && /* @__PURE__ */ r(s, {
|
|
113
|
+
compact: !0,
|
|
114
|
+
className: l,
|
|
115
|
+
disabled: typeof d == "object" ? d.value : d,
|
|
116
|
+
locale: {
|
|
117
|
+
title: c ?? "Remove",
|
|
118
|
+
ariaLabel: c ?? "Remove"
|
|
119
|
+
},
|
|
120
|
+
onClick: o
|
|
121
|
+
})
|
|
122
|
+
]
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
//#endregion
|
|
126
|
+
export { u as n, l as r, d as t };
|