@quidgest/ui 0.20.0 → 0.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +28 -1
- package/README.md +10 -0
- package/dist/json/api.json +312 -14
- package/dist/manifest/components.json +1 -0
- package/dist/ui.css +245 -248
- package/dist/ui.esm.js +805 -683
- package/dist/ui.js +1083 -961
- package/dist/ui.min.css +1 -1
- package/dist/ui.min.js +1083 -961
- package/dist/ui.scss +535 -299
- package/esm/components/QAccordion/QAccordionItem.vue.js +1 -1
- package/esm/components/QBadge/QBadge.d.ts.map +1 -1
- package/esm/components/QBadge/QBadge.vue.js +20 -24
- package/esm/components/QButton/QButton.d.ts.map +1 -1
- package/esm/components/QButton/QButton.vue.js +32 -29
- package/esm/components/QCheckbox/QCheckbox.vue.js +1 -1
- package/esm/components/QDialog/QDialog.d.ts +4 -2
- package/esm/components/QDialog/QDialog.d.ts.map +1 -1
- package/esm/components/QDialog/QDialog.vue.js +84 -74
- package/esm/components/QDialog/QDialogProvider.d.ts.map +1 -1
- package/esm/components/QDialog/QDialogProvider.vue.js +21 -12
- package/esm/components/QDialog/index.d.ts +72 -3
- package/esm/components/QDialog/index.d.ts.map +1 -1
- package/esm/components/QDialog/types.d.ts +10 -1
- package/esm/components/QDialog/types.d.ts.map +1 -1
- package/esm/components/QDismissibleLayer/QDismissibleLayer.d.ts.map +1 -1
- package/esm/components/QDismissibleLayer/QDismissibleLayer.vue.js +9 -8
- package/esm/components/QDivider/QDivider.d.ts.map +1 -1
- package/esm/components/QDivider/QDivider.vue.js +3 -3
- package/esm/components/QFileUpload/QFileUpload.vue.js +1 -1
- package/esm/components/QGauge/QGauge.d.ts +56 -0
- package/esm/components/QGauge/QGauge.d.ts.map +1 -0
- package/esm/components/QGauge/QGauge.vue.js +305 -0
- package/esm/components/QGauge/QGauge2.vue.js +5 -0
- package/esm/components/QGauge/constants.d.ts +6 -0
- package/esm/components/QGauge/constants.d.ts.map +1 -0
- package/esm/components/QGauge/constants.js +8 -0
- package/esm/components/QGauge/index.d.ts +124 -0
- package/esm/components/QGauge/index.d.ts.map +1 -0
- package/esm/components/QGauge/index.js +6 -0
- package/esm/components/QGauge/types.d.ts +146 -0
- package/esm/components/QGauge/types.d.ts.map +1 -0
- package/esm/components/QList/QListItem.d.ts.map +1 -1
- package/esm/components/QList/QListItem.vue.js +5 -2
- package/esm/components/QList/QListItemGroup.vue.js +1 -1
- package/esm/components/QObfuscation/QObfuscation.vue.js +1 -1
- package/esm/components/QPhoneField/QPhoneField.d.ts.map +1 -1
- package/esm/components/QPhoneField/QPhoneField.vue.js +1 -1
- package/esm/components/QPropertyList/QPropertyListGroup.vue.js +1 -1
- package/esm/components/QPropertyList/QPropertyListRow.vue.js +1 -1
- package/esm/components/QPropertyList/index.d.ts.map +1 -1
- package/esm/components/QRadioGroup/QRadioButton.vue.js +1 -1
- package/esm/components/QRadioGroup/QRadioGroup.vue.js +2 -2
- package/esm/components/QSelect/QSelect.d.ts.map +1 -1
- package/esm/components/QSelect/QSelect.vue.js +1 -1
- package/esm/components/QSidebar/QSidebar.d.ts.map +1 -1
- package/esm/components/QSidebar/QSidebar.vue.js +19 -10
- package/esm/components/QSidebar/QSidebarItem.d.ts.map +1 -1
- package/esm/components/QSidebar/QSidebarItem.vue.js +51 -49
- package/esm/components/QSidebar/context.d.ts +7 -0
- package/esm/components/QSidebar/context.d.ts.map +1 -1
- package/esm/components/QSwitch/QSwitch.vue.js +1 -1
- package/esm/components/QTabs/QTab.d.ts.map +1 -1
- package/esm/components/QTabs/QTab.vue.js +52 -50
- package/esm/components/QTabs/QTabs.d.ts.map +1 -1
- package/esm/components/QTabs/QTabs.vue.js +37 -12
- package/esm/components/QTabs/context.d.ts +7 -0
- package/esm/components/QTabs/context.d.ts.map +1 -1
- package/esm/components/QTextArea/QTextArea.vue.js +1 -1
- package/esm/components/QTextField/QTextField.d.ts.map +1 -1
- package/esm/components/QTextField/QTextField.vue.js +1 -1
- package/esm/components/QThemeProvider/QThemeProvider.vue.js +1 -1
- package/esm/components/QToast/QToast.d.ts +4 -2
- package/esm/components/QToast/QToast.d.ts.map +1 -1
- package/esm/components/QToast/QToast.vue.js +80 -67
- package/esm/components/QToast/QToaster.d.ts.map +1 -1
- package/esm/components/QToast/QToaster.vue.js +21 -16
- package/esm/components/QToast/index.d.ts +39 -3
- package/esm/components/QToast/index.d.ts.map +1 -1
- package/esm/components/QToast/types.d.ts +6 -2
- package/esm/components/QToast/types.d.ts.map +1 -1
- package/esm/components/QToggleGroup/QToggleGroupItem.vue.js +1 -1
- package/esm/components/QTooltip/QTooltip.vue.js +1 -1
- package/esm/components/index.d.ts +1 -0
- package/esm/components/index.d.ts.map +1 -1
- package/esm/components/index.js +64 -62
- package/esm/composables/index.d.ts +2 -2
- package/esm/composables/index.d.ts.map +1 -1
- package/esm/composables/useColor/index.d.ts +49 -12
- package/esm/composables/useColor/index.d.ts.map +1 -1
- package/esm/composables/useColor/index.js +56 -30
- package/esm/composables/useColor/types.d.ts +4 -1
- package/esm/composables/useColor/types.d.ts.map +1 -1
- package/esm/composables/useDialog/_internal.d.ts +2 -0
- package/esm/composables/useDialog/_internal.d.ts.map +1 -0
- package/esm/composables/useDialog/_internal.js +65 -0
- package/esm/composables/useDialog/index.d.ts +11 -3
- package/esm/composables/useDialog/index.d.ts.map +1 -1
- package/esm/composables/useDialog/index.js +38 -22
- package/esm/composables/useDialog/types.d.ts +25 -11
- package/esm/composables/useDialog/types.d.ts.map +1 -1
- package/esm/composables/useDismissibleLayerStack/index.d.ts +17 -2
- package/esm/composables/useDismissibleLayerStack/index.d.ts.map +1 -1
- package/esm/composables/useDismissibleLayerStack/index.js +28 -11
- package/esm/composables/useGroup/index.d.ts.map +1 -1
- package/esm/composables/useGroup/index.js +12 -1
- package/esm/composables/useId/index.d.ts +18 -0
- package/esm/composables/useId/index.d.ts.map +1 -0
- package/esm/composables/useId/index.js +10 -0
- package/esm/composables/useToast/_internal.d.ts +2 -0
- package/esm/composables/useToast/_internal.d.ts.map +1 -0
- package/esm/composables/useToast/_internal.js +142 -0
- package/esm/composables/useToast/index.d.ts +8 -25
- package/esm/composables/useToast/index.d.ts.map +1 -1
- package/esm/composables/useToast/index.js +29 -26
- package/esm/composables/useToast/types.d.ts +31 -17
- package/esm/composables/useToast/types.d.ts.map +1 -1
- package/esm/framework.d.ts.map +1 -1
- package/esm/framework.js +16 -12
- package/esm/index.d.ts +1 -0
- package/esm/templates/theme.js +39 -39
- package/esm/utils/color/contrast.d.ts +11 -4
- package/esm/utils/color/contrast.d.ts.map +1 -1
- package/esm/utils/color/contrast.js +16 -3
- package/esm/utils/color/index.d.ts +1 -0
- package/esm/utils/color/index.d.ts.map +1 -1
- package/esm/utils/color/merge.d.ts +9 -0
- package/esm/utils/color/merge.d.ts.map +1 -1
- package/esm/utils/color/merge.js +21 -22
- package/esm/utils/color/parse.d.ts +21 -5
- package/esm/utils/color/parse.d.ts.map +1 -1
- package/esm/utils/color/parse.js +88 -20
- package/esm/utils/color/theme-colors.d.ts +35 -0
- package/esm/utils/color/theme-colors.d.ts.map +1 -0
- package/esm/utils/color/theme-colors.js +25 -0
- package/esm/utils/index.js +50 -42
- package/package.json +3 -5
- package/esm/composables/uid.d.ts +0 -9
- package/esm/composables/uid.d.ts.map +0 -1
- package/esm/composables/uid.js +0 -8
- package/esm/composables/useToast/types.js +0 -4
- package/esm/vendors/uuid/dist/native.js +0 -3
- package/esm/vendors/uuid/dist/rng.js +0 -11
- package/esm/vendors/uuid/dist/stringify.js +0 -8
- package/esm/vendors/uuid/dist/v4.js +0 -20
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,33 @@ On `0.x`, breaking changes typically ship as a **minor** bump. The `/release` wo
|
|
|
9
9
|
|
|
10
10
|
Entries below start at **0.16.0**. Earlier history is in git / GitLab MRs. Patch releases within a minor line may be summarized under that minor unless a break shipped in between.
|
|
11
11
|
|
|
12
|
+
## [0.21.0] - 2026-09-10
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
- **Breaking:** `useId` — no longer returns a UUID-based `Ref` (`uid-…`); wraps Vue `useId` as a `ComputedRef` with `q-…` ids (custom `app.config.idPrefix` becomes `q-<prefix>-…`) and must run during setup. Drop any reliance on the removed `uuid` dependency from `@quidgest/ui`.
|
|
17
|
+
- **Breaking:** `useDialog` / `useToast` — require `createFramework` plus a mounted `QDialogProvider` / `QToaster`. `addDialog` / `addToast` no longer take a separate `id` argument and return `Promise<string>`; prefer `await addDialog(props)` / `await addToast(props)`, pass overrides via `props.id`, and use `cancelDialog` / `cancelToast` before registration. `removeDialog` / `removeToast` throw if the id is missing; do not mutate the public `dialogs` / `toasts` lists to update the store.
|
|
18
|
+
- **Breaking:** Package exports — the `./*` catch-all export was removed; import only via documented entry points.
|
|
19
|
+
- **Breaking:** Color utilities — public `isCssColor` removed; use `isThemeColor` for utility/BEM classification, or `tryParseColor` / `parseColor` to test parseability. Unsupported / unparsed CSS colors no longer silently fall back to primary-like CSS vars (expect `undefined` style and a non-production warning). Contrasting/`on*` text for custom colors may change where WCAG luminance disagrees with the old HSL-lightness heuristic.
|
|
20
|
+
- **Breaking:** `QButton` / `QBadge` / `QToast` — utility color BEM modifiers (`q-button--primary`, `q-badge--…`, `q-toast--…`, etc.) are no longer emitted; style via bound `--q-*-main-color` / hover CSS variables (`.q-button--background` remains for that special case). Do not target those color modifier classes in consumer CSS.
|
|
21
|
+
- Theme / `useColor` — Light/Dark schemes and default `on*` tokens aligned with WCAG; pure `on*` surface tokens; utility colors always bind style (including Dark-scheme hover).
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- `QInputGroup` — restore radius for solo addons; equalize sibling control heights
|
|
26
|
+
- `QIcon` — size uncropped SVGs correctly in controls
|
|
27
|
+
- Storybook — set per-story Vue `idPrefix` to avoid id collisions across stories
|
|
28
|
+
|
|
29
|
+
## [0.20.1] - 2026-09-04
|
|
30
|
+
|
|
31
|
+
### Added
|
|
32
|
+
|
|
33
|
+
- `QGauge` — gauge / meter UI component
|
|
34
|
+
|
|
35
|
+
### Fixed
|
|
36
|
+
|
|
37
|
+
- Distributed SCSS — preserve `url(...)` references so asset paths survive packaging
|
|
38
|
+
|
|
12
39
|
## [0.20.0] - 2026-09-01
|
|
13
40
|
|
|
14
41
|
### Changed
|
|
@@ -73,7 +100,7 @@ Entries below start at **0.16.0**. Earlier history is in git / GitLab MRs. Patch
|
|
|
73
100
|
- **Breaking:** Unified group / toggle APIs for consistency:
|
|
74
101
|
- Rename `QButtonToggle` → `QToggleButton`; pass items via the default slot (`options` prop removed)
|
|
75
102
|
- `QAccordion` now expects `QAccordionItem` children in the default slot
|
|
76
|
-
- Remove `active` from `QButton`; use `QToggle` for stateful toggle
|
|
103
|
+
- Remove `active` from `QButton`; use `QToggle` for stateful toggle behavior
|
|
77
104
|
|
|
78
105
|
### Added _(0.16.x through 0.16.75)_
|
|
79
106
|
|
package/README.md
CHANGED
|
@@ -42,6 +42,16 @@ import framework from './plugins/quidgest-ui'
|
|
|
42
42
|
createApp(App).use(framework).mount('#app')
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
+
Mount **one** `QDialogProvider` and **one** `QToaster` in the app root (for example `App.vue`). `useDialog` / `useToast` share a single list per app; mounting a second provider or toaster for the same app throws.
|
|
46
|
+
|
|
47
|
+
```vue
|
|
48
|
+
<template>
|
|
49
|
+
<q-dialog-provider />
|
|
50
|
+
<q-toaster />
|
|
51
|
+
<router-view />
|
|
52
|
+
</template>
|
|
53
|
+
```
|
|
54
|
+
|
|
45
55
|
Once installed, components can be used like so:
|
|
46
56
|
|
|
47
57
|
```vue
|
package/dist/json/api.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.
|
|
2
|
+
"version": "0.21.0",
|
|
3
3
|
"components": [
|
|
4
4
|
{
|
|
5
5
|
"name": "QAccordion",
|
|
@@ -123,7 +123,7 @@
|
|
|
123
123
|
"examples": [
|
|
124
124
|
{
|
|
125
125
|
"title": "Default",
|
|
126
|
-
"description": "Default
|
|
126
|
+
"description": "Default behavior of the accordion.",
|
|
127
127
|
"code": "<q-accordion v-bind=\"args\">\n\t\t <q-accordion-item title=\"Section 1\" value=\"1\">\n\t\t\tContent for section 1\n\t\t </q-accordion-item>\n\t\t <q-accordion-item title=\"Section 2\" value=\"2\">\n\t\t\tContent for section 2\n\t\t </q-accordion-item>\n\t\t <q-accordion-item title=\"Section 3\" value=\"3\">\n\t\t\tContent for section 3\n\t\t </q-accordion-item>\n\t\t</q-accordion>"
|
|
128
128
|
},
|
|
129
129
|
{
|
|
@@ -1008,32 +1008,32 @@
|
|
|
1008
1008
|
"examples": [
|
|
1009
1009
|
{
|
|
1010
1010
|
"title": "Default",
|
|
1011
|
-
"description": "Default
|
|
1011
|
+
"description": "Default behavior of the card.",
|
|
1012
1012
|
"code": "<q-card v-bind=\"args\">\n\t\t\t\t<q-text-field label=\"Text input\"/>\n\t\t\t</q-card>"
|
|
1013
1013
|
},
|
|
1014
1014
|
{
|
|
1015
1015
|
"title": "Clickable",
|
|
1016
|
-
"description": "Default
|
|
1016
|
+
"description": "Default behavior of a clickable card.",
|
|
1017
1017
|
"code": "<q-card v-bind=\"args\" @click=\"onClick\">\n\t\t\t\t\t{{ args.subtitle }}\n\t\t\t\t</q-card>"
|
|
1018
1018
|
},
|
|
1019
1019
|
{
|
|
1020
1020
|
"title": "Link",
|
|
1021
|
-
"description": "Default
|
|
1021
|
+
"description": "Default behavior of a card with a link/url.",
|
|
1022
1022
|
"code": "<q-card v-bind=\"args\">\n\t\t\t\t{{ args.subtitle }}\n\t\t\t</q-card>"
|
|
1023
1023
|
},
|
|
1024
1024
|
{
|
|
1025
1025
|
"title": "Loading",
|
|
1026
|
-
"description": "Default
|
|
1026
|
+
"description": "Default behavior of a loading card.",
|
|
1027
1027
|
"code": "<q-card v-bind=\"args\">\n\t\t\t\t<q-text-field label=\"Text input\"/>\n\t\t\t</q-card>"
|
|
1028
1028
|
},
|
|
1029
1029
|
{
|
|
1030
1030
|
"title": "Borderless",
|
|
1031
|
-
"description": "Default
|
|
1031
|
+
"description": "Default behavior of a borderless card.",
|
|
1032
1032
|
"code": "<q-card v-bind=\"args\">\n\t\t\t\t<q-text-field label=\"Text input\"/>\n\t\t\t</q-card>"
|
|
1033
1033
|
},
|
|
1034
1034
|
{
|
|
1035
1035
|
"title": "Elevation",
|
|
1036
|
-
"description": "Default
|
|
1036
|
+
"description": "Default behavior of a card with elevation.",
|
|
1037
1037
|
"code": "<div style=\"display: flex; gap: 1rem;\">\n\t\t\t\t<q-card v-bind=\"args\" title=\"Elevated Low\" elevation=\"low\">\n\t\t\t\t\tSome quick example text to build on the card title.\n\t\t\t\t</q-card>\n\t\t\t\t<q-card v-bind=\"args\" title=\"Elevated Medium\" elevation=\"medium\">\n\t\t\t\t\tSome quick example text to build on the card title.\n\t\t\t\t</q-card>\n\t\t\t\t<q-card v-bind=\"args\" title=\"Elevated High\" elevation=\"high\">\n\t\t\t\t\tSome quick example text to build on the card title.\n\t\t\t\t</q-card>\n\t\t\t</div>"
|
|
1038
1038
|
},
|
|
1039
1039
|
{
|
|
@@ -1689,22 +1689,22 @@
|
|
|
1689
1689
|
"examples": [
|
|
1690
1690
|
{
|
|
1691
1691
|
"title": "Default",
|
|
1692
|
-
"description": "Default
|
|
1692
|
+
"description": "Default behavior of the collapsible.",
|
|
1693
1693
|
"code": "<q-collapsible v-bind=\"args\">\n\t\t\t\t<q-text-field label=\"Text input\"/>\n\t\t\t</q-collapsible>"
|
|
1694
1694
|
},
|
|
1695
1695
|
{
|
|
1696
1696
|
"title": "Starts Expanded",
|
|
1697
|
-
"description": "
|
|
1697
|
+
"description": "Behavior of a collapsible that starts expanded.",
|
|
1698
1698
|
"code": "<q-collapsible v-bind=\"args\">\n\t\t\t\t<q-text-field label=\"Text input\"/>\n\t\t\t</q-collapsible>"
|
|
1699
1699
|
},
|
|
1700
1700
|
{
|
|
1701
1701
|
"title": "Subtitle",
|
|
1702
|
-
"description": "
|
|
1702
|
+
"description": "Behavior of the collapsible with a title.",
|
|
1703
1703
|
"code": "<q-collapsible v-bind=\"args\">\n\t\t\t\t<q-text-field label=\"Text input\"/>\n\t\t\t</q-collapsible>"
|
|
1704
1704
|
},
|
|
1705
1705
|
{
|
|
1706
1706
|
"title": "Required",
|
|
1707
|
-
"description": "
|
|
1707
|
+
"description": "Behavior of the collapsible when there are required fields inside.",
|
|
1708
1708
|
"code": "<q-collapsible v-bind=\"args\">\n\t\t\t\t<q-text-field label=\"Text input\" required/>\n\t\t\t</q-collapsible>"
|
|
1709
1709
|
},
|
|
1710
1710
|
{
|
|
@@ -2871,6 +2871,16 @@
|
|
|
2871
2871
|
"default": "DEFAULT_ICONS",
|
|
2872
2872
|
"required": false,
|
|
2873
2873
|
"category": "Configuration"
|
|
2874
|
+
},
|
|
2875
|
+
{
|
|
2876
|
+
"name": "entryKey",
|
|
2877
|
+
"type": {
|
|
2878
|
+
"kind": "primitive",
|
|
2879
|
+
"name": "string"
|
|
2880
|
+
},
|
|
2881
|
+
"description": "",
|
|
2882
|
+
"default": "undefined",
|
|
2883
|
+
"required": false
|
|
2874
2884
|
}
|
|
2875
2885
|
],
|
|
2876
2886
|
"events": [
|
|
@@ -2919,7 +2929,7 @@
|
|
|
2919
2929
|
"examples": [
|
|
2920
2930
|
{
|
|
2921
2931
|
"title": "Default",
|
|
2922
|
-
"description": "Default
|
|
2932
|
+
"description": "Default behavior of the dialog.",
|
|
2923
2933
|
"code": "<q-button label=\"Click me\" @click=\"args.modelValue = true\" />\n\t\t\t<q-dialog v-model=\"args.modelValue\" v-bind=\"args\" />"
|
|
2924
2934
|
},
|
|
2925
2935
|
{
|
|
@@ -2939,7 +2949,7 @@
|
|
|
2939
2949
|
},
|
|
2940
2950
|
{
|
|
2941
2951
|
"title": "Custom Buttons",
|
|
2942
|
-
"description": "Custom buttons on the dialog allow the user to customize its look and
|
|
2952
|
+
"description": "Custom buttons on the dialog allow the user to customize its look and behavior.",
|
|
2943
2953
|
"code": "<QDialog :text=\"What shall we do?\" :icon=\"{\n\t\t\ticon: 'help-circle-outline'\n\t\t}\" :buttons=\"[\n\t\t\t{\n\t\t\t\tid: 'scroll-btn',\n\t\t\t\ticon: {\n\t\t\t\t\ticon: 'arrow-up'\n\t\t\t\t},\n\t\t\t\taction: () => {\n\t\t\t\t\twindow.scrollTo({ top: 0, behavior: 'smooth' })\n\t\t\t\t},\n\t\t\t\tprops: {\n\t\t\t\t\tlabel: 'Scroll to Top',\n\t\t\t\t\tvariant: 'bold'\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'refresh-btn',\n\t\t\t\ticon: {\n\t\t\t\t\ticon: 'refresh'\n\t\t\t\t},\n\t\t\t\taction: () => {\n\t\t\t\t\tlocation.reload()\n\t\t\t\t},\n\t\t\t\tprops: {\n\t\t\t\t\tlabel: 'Refresh the page!',\n\t\t\t\t\tvariant: 'bold',\n\t\t\t\t\tcolor: 'danger'\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'cancel-btn',\n\t\t\t\ticon: {\n\t\t\t\t\ticon: 'cancel'\n\t\t\t\t},\n\t\t\t\tprops: {\n\t\t\t\t\tlabel: 'Cancel'\n\t\t\t\t}\n\t\t\t}\n\t\t]\" />"
|
|
2944
2954
|
},
|
|
2945
2955
|
{
|
|
@@ -3857,6 +3867,269 @@
|
|
|
3857
3867
|
}
|
|
3858
3868
|
]
|
|
3859
3869
|
},
|
|
3870
|
+
{
|
|
3871
|
+
"name": "QGauge",
|
|
3872
|
+
"description": "A gauge displays a KPI within a bounded scale and can highlight semantic performance ranges.",
|
|
3873
|
+
"meta": {
|
|
3874
|
+
"props": [
|
|
3875
|
+
{
|
|
3876
|
+
"name": "modelValue",
|
|
3877
|
+
"type": {
|
|
3878
|
+
"kind": "primitive",
|
|
3879
|
+
"name": "number"
|
|
3880
|
+
},
|
|
3881
|
+
"description": "",
|
|
3882
|
+
"required": false
|
|
3883
|
+
},
|
|
3884
|
+
{
|
|
3885
|
+
"name": "id",
|
|
3886
|
+
"type": {
|
|
3887
|
+
"kind": "primitive",
|
|
3888
|
+
"name": "string"
|
|
3889
|
+
},
|
|
3890
|
+
"description": "The component unique identifier.",
|
|
3891
|
+
"required": false,
|
|
3892
|
+
"category": "Identification"
|
|
3893
|
+
},
|
|
3894
|
+
{
|
|
3895
|
+
"name": "min",
|
|
3896
|
+
"type": {
|
|
3897
|
+
"kind": "primitive",
|
|
3898
|
+
"name": "number"
|
|
3899
|
+
},
|
|
3900
|
+
"description": "Lowest value represented by the scale.",
|
|
3901
|
+
"default": "0",
|
|
3902
|
+
"required": false,
|
|
3903
|
+
"category": "Configuration"
|
|
3904
|
+
},
|
|
3905
|
+
{
|
|
3906
|
+
"name": "max",
|
|
3907
|
+
"type": {
|
|
3908
|
+
"kind": "primitive",
|
|
3909
|
+
"name": "number"
|
|
3910
|
+
},
|
|
3911
|
+
"description": "Highest value represented by the scale.",
|
|
3912
|
+
"default": "100",
|
|
3913
|
+
"required": false,
|
|
3914
|
+
"category": "Configuration"
|
|
3915
|
+
},
|
|
3916
|
+
{
|
|
3917
|
+
"name": "ranges",
|
|
3918
|
+
"type": {
|
|
3919
|
+
"kind": "array",
|
|
3920
|
+
"elementType": {
|
|
3921
|
+
"name": "object",
|
|
3922
|
+
"value": {}
|
|
3923
|
+
}
|
|
3924
|
+
},
|
|
3925
|
+
"description": "Colored intervals displayed over the neutral gauge track.",
|
|
3926
|
+
"required": false,
|
|
3927
|
+
"category": "Configuration"
|
|
3928
|
+
},
|
|
3929
|
+
{
|
|
3930
|
+
"name": "ticks",
|
|
3931
|
+
"type": {
|
|
3932
|
+
"kind": "array",
|
|
3933
|
+
"elementType": {
|
|
3934
|
+
"name": "number"
|
|
3935
|
+
}
|
|
3936
|
+
},
|
|
3937
|
+
"description": "Explicit values to label on the scale. Overrides tickCount.",
|
|
3938
|
+
"required": false,
|
|
3939
|
+
"category": "Configuration"
|
|
3940
|
+
},
|
|
3941
|
+
{
|
|
3942
|
+
"name": "tickCount",
|
|
3943
|
+
"type": {
|
|
3944
|
+
"kind": "primitive",
|
|
3945
|
+
"name": "number"
|
|
3946
|
+
},
|
|
3947
|
+
"description": "Number of evenly spaced scale labels generated when ticks is omitted.",
|
|
3948
|
+
"default": "5",
|
|
3949
|
+
"required": false,
|
|
3950
|
+
"category": "Configuration"
|
|
3951
|
+
},
|
|
3952
|
+
{
|
|
3953
|
+
"name": "label",
|
|
3954
|
+
"type": {
|
|
3955
|
+
"kind": "primitive",
|
|
3956
|
+
"name": "string"
|
|
3957
|
+
},
|
|
3958
|
+
"description": "KPI title displayed above the gauge.",
|
|
3959
|
+
"required": false,
|
|
3960
|
+
"category": "Content"
|
|
3961
|
+
},
|
|
3962
|
+
{
|
|
3963
|
+
"name": "valueLabel",
|
|
3964
|
+
"type": {
|
|
3965
|
+
"kind": "union",
|
|
3966
|
+
"types": [
|
|
3967
|
+
{
|
|
3968
|
+
"name": "string"
|
|
3969
|
+
},
|
|
3970
|
+
{
|
|
3971
|
+
"name": "other",
|
|
3972
|
+
"value": "(value: number, min: number, max: number): string"
|
|
3973
|
+
}
|
|
3974
|
+
]
|
|
3975
|
+
},
|
|
3976
|
+
"description": "Text or formatter used as the fallback display and as the current-value part\nof `aria-valuetext`. Set this when the `value` slot changes how the value\nshould be announced, because slot markup cannot be inferred reliably for\naccessibility. When provided, it is treated as complete current-value text,\nso the unit is not appended there automatically.",
|
|
3977
|
+
"required": false,
|
|
3978
|
+
"category": "Content"
|
|
3979
|
+
},
|
|
3980
|
+
{
|
|
3981
|
+
"name": "target",
|
|
3982
|
+
"type": {
|
|
3983
|
+
"kind": "primitive",
|
|
3984
|
+
"name": "number"
|
|
3985
|
+
},
|
|
3986
|
+
"description": "Target value highlighted on the gauge track.",
|
|
3987
|
+
"required": false,
|
|
3988
|
+
"category": "Configuration"
|
|
3989
|
+
},
|
|
3990
|
+
{
|
|
3991
|
+
"name": "targetComparison",
|
|
3992
|
+
"type": {
|
|
3993
|
+
"kind": "enum",
|
|
3994
|
+
"values": [
|
|
3995
|
+
"at-least",
|
|
3996
|
+
"at-most"
|
|
3997
|
+
]
|
|
3998
|
+
},
|
|
3999
|
+
"description": "Target comparison mode. Use `at-least` when values should reach or exceed\nthe target, and `at-most` when values should stay at or below it.",
|
|
4000
|
+
"default": "at-least",
|
|
4001
|
+
"required": false,
|
|
4002
|
+
"category": "Configuration"
|
|
4003
|
+
},
|
|
4004
|
+
{
|
|
4005
|
+
"name": "targetLabel",
|
|
4006
|
+
"type": {
|
|
4007
|
+
"kind": "union",
|
|
4008
|
+
"types": [
|
|
4009
|
+
{
|
|
4010
|
+
"name": "string"
|
|
4011
|
+
},
|
|
4012
|
+
{
|
|
4013
|
+
"name": "other",
|
|
4014
|
+
"value": "(target: number, min: number, max: number): string"
|
|
4015
|
+
}
|
|
4016
|
+
]
|
|
4017
|
+
},
|
|
4018
|
+
"description": "Text or formatter used to describe the target value.",
|
|
4019
|
+
"required": false,
|
|
4020
|
+
"category": "Content"
|
|
4021
|
+
},
|
|
4022
|
+
{
|
|
4023
|
+
"name": "showTargetValue",
|
|
4024
|
+
"type": {
|
|
4025
|
+
"kind": "primitive",
|
|
4026
|
+
"name": "boolean"
|
|
4027
|
+
},
|
|
4028
|
+
"description": "Whether the target value label is displayed next to the target marker.",
|
|
4029
|
+
"required": false,
|
|
4030
|
+
"category": "Presentation"
|
|
4031
|
+
},
|
|
4032
|
+
{
|
|
4033
|
+
"name": "showLegend",
|
|
4034
|
+
"type": {
|
|
4035
|
+
"kind": "primitive",
|
|
4036
|
+
"name": "boolean"
|
|
4037
|
+
},
|
|
4038
|
+
"description": "Whether the legend is displayed below the gauge.",
|
|
4039
|
+
"default": "true",
|
|
4040
|
+
"required": false,
|
|
4041
|
+
"category": "Presentation"
|
|
4042
|
+
},
|
|
4043
|
+
{
|
|
4044
|
+
"name": "showTargetLegend",
|
|
4045
|
+
"type": {
|
|
4046
|
+
"kind": "primitive",
|
|
4047
|
+
"name": "boolean"
|
|
4048
|
+
},
|
|
4049
|
+
"description": "Whether target status items are included in the legend when a target marker\nis visible. The legend itself must also be enabled with `showLegend`.",
|
|
4050
|
+
"default": "true",
|
|
4051
|
+
"required": false,
|
|
4052
|
+
"category": "Presentation"
|
|
4053
|
+
},
|
|
4054
|
+
{
|
|
4055
|
+
"name": "unit",
|
|
4056
|
+
"type": {
|
|
4057
|
+
"kind": "primitive",
|
|
4058
|
+
"name": "string"
|
|
4059
|
+
},
|
|
4060
|
+
"description": "Unit displayed next to the current value.",
|
|
4061
|
+
"required": false,
|
|
4062
|
+
"category": "Content"
|
|
4063
|
+
},
|
|
4064
|
+
{
|
|
4065
|
+
"name": "secondaryLabel",
|
|
4066
|
+
"type": {
|
|
4067
|
+
"kind": "primitive",
|
|
4068
|
+
"name": "string"
|
|
4069
|
+
},
|
|
4070
|
+
"description": "Supporting information displayed below the current value.",
|
|
4071
|
+
"required": false,
|
|
4072
|
+
"category": "Content"
|
|
4073
|
+
},
|
|
4074
|
+
{
|
|
4075
|
+
"name": "texts",
|
|
4076
|
+
"type": {
|
|
4077
|
+
"kind": "object",
|
|
4078
|
+
"fields": {}
|
|
4079
|
+
},
|
|
4080
|
+
"description": "Custom text configurations.",
|
|
4081
|
+
"default": "DEFAULT_TEXTS",
|
|
4082
|
+
"required": false,
|
|
4083
|
+
"category": "Configuration"
|
|
4084
|
+
},
|
|
4085
|
+
{
|
|
4086
|
+
"name": "tickFormatter",
|
|
4087
|
+
"type": {
|
|
4088
|
+
"kind": "unknown",
|
|
4089
|
+
"raw": "((value: number) => string) | undefined"
|
|
4090
|
+
},
|
|
4091
|
+
"description": "Formatter used for scale labels.",
|
|
4092
|
+
"required": false,
|
|
4093
|
+
"category": "Configuration"
|
|
4094
|
+
}
|
|
4095
|
+
],
|
|
4096
|
+
"events": [
|
|
4097
|
+
{
|
|
4098
|
+
"name": "update:modelValue",
|
|
4099
|
+
"description": "",
|
|
4100
|
+
"type": "[value: number]"
|
|
4101
|
+
}
|
|
4102
|
+
],
|
|
4103
|
+
"slots": [
|
|
4104
|
+
{
|
|
4105
|
+
"name": "value",
|
|
4106
|
+
"description": "Custom markup for the visible current value. Also set `valueLabel` when the\nslot changes how the value should be announced, because slot content does\nnot replace `aria-valuetext`."
|
|
4107
|
+
}
|
|
4108
|
+
]
|
|
4109
|
+
},
|
|
4110
|
+
"examples": [
|
|
4111
|
+
{
|
|
4112
|
+
"title": "Default",
|
|
4113
|
+
"description": "The default gauge uses semantic ranges and supporting KPI information.",
|
|
4114
|
+
"code": "<QGauge :model-value=\"76\" :label=\"Delivery performance\" :target=\"80\" :target-label=\"Target 80%\" :show-target-value=\"true\" :unit=\"%\" :secondary-label=\"+4.2% from last month\" />"
|
|
4115
|
+
},
|
|
4116
|
+
{
|
|
4117
|
+
"title": "Lower Is Better",
|
|
4118
|
+
"description": "Range order and colors can represent metrics where lower values are better.",
|
|
4119
|
+
"code": "<QGauge :model-value=\"18\" :label=\"Average response time\" :max=\"60\" :target=\"20\" :target-comparison=\"at-most\" :target-label=\"Target 20 min\" :show-target-value=\"true\" :unit=\"min\" :secondary-label=\"-3 min from last month\" :ranges=\"[\n\t\t\t{ from: 0, to: 20, color: 'success', label: 'On target' },\n\t\t\t{ from: 20, to: 40, color: 'warning', label: 'Attention' },\n\t\t\t{ from: 40, to: 60, color: 'danger', label: 'Critical' }\n\t\t]\" />"
|
|
4120
|
+
},
|
|
4121
|
+
{
|
|
4122
|
+
"title": "Explicit Ticks",
|
|
4123
|
+
"description": "Explicit ticks and formatters support domain-specific values.",
|
|
4124
|
+
"code": "<QGauge :model-value=\"10.6\" :label=\"Revenue\" :max=\"21\" :target=\"15\" :target-label=\"Target 15M\" :show-target-value=\"true\" :unit=\"Dollars\" :ticks=\"0,3,6,9,12,15,18,21\" :value-label=\"(value: number) => `${value.toFixed(1)}M`\" :tick-formatter=\"(value: number) => (value === 0 ? '0' : `${value}M`)\" :ranges=\"[\n\t\t\t{ from: 0, to: 6, color: 'danger', label: 'Below target' },\n\t\t\t{ from: 6, to: 15, color: 'warning', label: 'Approaching target' },\n\t\t\t{ from: 15, to: 21, color: 'success', label: 'On target' }\n\t\t]\" />"
|
|
4125
|
+
},
|
|
4126
|
+
{
|
|
4127
|
+
"title": "Responsive Composition",
|
|
4128
|
+
"description": "Gauges remain responsive when composed into a KPI dashboard owned by the consumer.",
|
|
4129
|
+
"code": "<div class=\"q-gauge-story-grid\">\n\t\t\t\t<q-gauge\n\t\t\t\t\tv-for=\"item in items\"\n\t\t\t\t\t:key=\"item.label\"\n\t\t\t\t\t:model-value=\"item.value\"\n\t\t\t\t\t:label=\"item.label\"\n\t\t\t\t\t:target=\"item.target\"\n\t\t\t\t\t:unit=\"item.unit\"\n\t\t\t\t\t:ranges=\"performanceRanges\"\n\t\t\t\t\t:show-legend=\"false\"\n\t\t\t\t/>\n\t\t\t</div>"
|
|
4130
|
+
}
|
|
4131
|
+
]
|
|
4132
|
+
},
|
|
3860
4133
|
{
|
|
3861
4134
|
"name": "QIcon",
|
|
3862
4135
|
"description": "Displays an icon. Note: This Storybook includes a Material Design Icons v7.3.67 SVG bundle for demonstration purposes. For the complete list of available icons, visit the official [Material Design Icons](https://pictogrammers.com/library/mdi/) page.",
|
|
@@ -4134,6 +4407,16 @@
|
|
|
4134
4407
|
"description": "Groups buttons with fields.",
|
|
4135
4408
|
"code": "<q-input-group v-bind=\"args\">\n\t\t\t\t<q-text-field placeholder=\"Search\" />\n\t\t\t\t<template #append>\n\t\t\t\t\t<q-button>\n\t\t\t\t\t\t<q-icon icon=\"magnify\" />\n\t\t\t\t\t</q-button>\n\t\t\t\t</template>\n\t\t\t</q-input-group>"
|
|
4136
4409
|
},
|
|
4410
|
+
{
|
|
4411
|
+
"title": "Append Only",
|
|
4412
|
+
"description": "Append-only group — all four corners of the control should be rounded.",
|
|
4413
|
+
"code": "<q-input-group v-bind=\"args\">\n\t\t\t\t<template #append>\n\t\t\t\t\t<q-button>\n\t\t\t\t\t\t<q-icon icon=\"cog\" />\n\t\t\t\t\t</q-button>\n\t\t\t\t</template>\n\t\t\t</q-input-group>"
|
|
4414
|
+
},
|
|
4415
|
+
{
|
|
4416
|
+
"title": "Prepend Only",
|
|
4417
|
+
"description": "Prepend-only group — all four corners of the control should be rounded.",
|
|
4418
|
+
"code": "<q-input-group v-bind=\"args\">\n\t\t\t\t<template #prepend>\n\t\t\t\t\t<q-button>\n\t\t\t\t\t\t<q-icon icon=\"cog\" />\n\t\t\t\t\t</q-button>\n\t\t\t\t</template>\n\t\t\t</q-input-group>"
|
|
4419
|
+
},
|
|
4137
4420
|
{
|
|
4138
4421
|
"title": "Button Group Addon",
|
|
4139
4422
|
"description": "Further extends button addons with multiple buttons.",
|
|
@@ -4144,6 +4427,11 @@
|
|
|
4144
4427
|
"description": "Provides a textual description for the group.",
|
|
4145
4428
|
"code": "<QInputGroup :label=\"Full name\" :required=\"true\" />"
|
|
4146
4429
|
},
|
|
4430
|
+
{
|
|
4431
|
+
"title": "Mixed Heights",
|
|
4432
|
+
"description": "Keeps sibling controls aligned when one child has a larger intrinsic height.",
|
|
4433
|
+
"code": "<q-input-group v-bind=\"args\">\n\t\t\t\t<q-text-field placeholder=\"Name\" />\n\t\t\t\t<q-text-area placeholder=\"Notes\" :rows=\"3\" />\n\t\t\t</q-input-group>"
|
|
4434
|
+
},
|
|
4147
4435
|
{
|
|
4148
4436
|
"title": "Advanced Usage",
|
|
4149
4437
|
"description": "Supports the creation of custom input groups using selects, text fields, buttons, and more.",
|
|
@@ -9222,6 +9510,16 @@
|
|
|
9222
9510
|
"default": "DEFAULT_ICONS",
|
|
9223
9511
|
"required": false,
|
|
9224
9512
|
"category": "Configuration"
|
|
9513
|
+
},
|
|
9514
|
+
{
|
|
9515
|
+
"name": "entryKey",
|
|
9516
|
+
"type": {
|
|
9517
|
+
"kind": "primitive",
|
|
9518
|
+
"name": "string"
|
|
9519
|
+
},
|
|
9520
|
+
"description": "",
|
|
9521
|
+
"default": "undefined",
|
|
9522
|
+
"required": false
|
|
9225
9523
|
}
|
|
9226
9524
|
],
|
|
9227
9525
|
"events": [
|