@nvidia-elements/core 0.0.2 → 0.0.4
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 +20 -28
- package/NOTICE.md +119 -0
- package/README.md +1 -10
- package/dist/_virtual/{_@oxc-project_runtime@0.115.0 → _@oxc-project_runtime@0.123.0}/helpers/decorate.js +1 -1
- package/dist/accordion/accordion2.js +5 -5
- package/dist/alert/alert-banner2.js +1 -1
- package/dist/alert/alert-group2.js +2 -2
- package/dist/alert/alert.examples.js.map +1 -1
- package/dist/alert/alert.examples.json +1 -1
- package/dist/alert/alert2.js +2 -2
- package/dist/avatar/avatar-group2.js +1 -1
- package/dist/avatar/avatar2.js +2 -2
- package/dist/badge/badge2.js +2 -2
- package/dist/breadcrumb/breadcrumb2.js +2 -2
- package/dist/bundle.d.ts +2 -0
- package/dist/bundles/index.d.ts +214 -35
- package/dist/bundles/index.js +13 -6952
- package/dist/button/button.examples.js.map +1 -1
- package/dist/button/button.examples.json +3 -3
- package/dist/button/button2.js +2 -2
- package/dist/button-group/button-group2.js +2 -2
- package/dist/card/card2.js +5 -5
- package/dist/chat-message/chat-message2.js +2 -2
- package/dist/checkbox/checkbox-group2.js +2 -2
- package/dist/checkbox/checkbox2.js +2 -2
- package/dist/checkbox/define.js +6 -3
- package/dist/checkbox/define.js.map +1 -1
- package/dist/color/color2.js +2 -2
- package/dist/color/define.js +5 -3
- package/dist/color/define.js.map +1 -1
- package/dist/combobox/combobox.d.ts +5 -0
- package/dist/combobox/combobox.examples.js.map +1 -1
- package/dist/combobox/combobox.examples.json +22 -0
- package/dist/combobox/combobox.js +1 -1
- package/dist/combobox/combobox.js.map +1 -1
- package/dist/combobox/combobox2.js +110 -61
- package/dist/combobox/combobox2.js.map +1 -1
- package/dist/combobox/define.js +5 -3
- package/dist/combobox/define.js.map +1 -1
- package/dist/copy-button/copy-button2.js +2 -2
- package/dist/custom-elements-jsx.d.ts +125 -63
- package/dist/custom-elements-vue.d.ts +125 -63
- package/dist/custom-elements.json +1626 -806
- package/dist/data.html.json +204 -46
- package/dist/data.snippets.json +9 -0
- package/dist/date/date2.js +2 -2
- package/dist/date/define.js +5 -3
- package/dist/date/define.js.map +1 -1
- package/dist/datetime/datetime2.js +2 -2
- package/dist/datetime/define.js +5 -3
- package/dist/datetime/define.js.map +1 -1
- package/dist/dialog/dialog-footer2.js +2 -2
- package/dist/dialog/dialog-header2.js +2 -2
- package/dist/dialog/dialog2.js +2 -2
- package/dist/divider/divider2.js +2 -2
- package/dist/dot/dot2.js +2 -2
- package/dist/drawer/drawer-content2.js +2 -2
- package/dist/drawer/drawer-footer2.js +2 -2
- package/dist/drawer/drawer-header2.js +2 -2
- package/dist/drawer/drawer2.js +2 -2
- package/dist/dropdown/dropdown-footer2.js +2 -2
- package/dist/dropdown/dropdown-header2.js +2 -2
- package/dist/dropdown/dropdown2.js +2 -2
- package/dist/dropdown-group/dropdown-group.js +2 -2
- package/dist/dropzone/dropzone.examples.js.map +1 -1
- package/dist/dropzone/dropzone.examples.json +3 -1
- package/dist/dropzone/dropzone2.js +2 -2
- package/dist/file/define.js +5 -3
- package/dist/file/define.js.map +1 -1
- package/dist/file/file2.js +1 -1
- package/dist/format-datetime/define.d.ts +6 -0
- package/dist/format-datetime/define.js +7 -0
- package/dist/format-datetime/define.js.map +1 -0
- package/dist/format-datetime/format-datetime.d.ts +74 -0
- package/dist/format-datetime/format-datetime.examples.js +6 -0
- package/dist/format-datetime/format-datetime.examples.js.map +1 -0
- package/dist/format-datetime/format-datetime.examples.json +87 -0
- package/dist/format-datetime/format-datetime.js +6 -0
- package/dist/format-datetime/format-datetime.js.map +1 -0
- package/dist/format-datetime/format-datetime2.js +77 -0
- package/dist/format-datetime/format-datetime2.js.map +1 -0
- package/dist/format-datetime/index.d.ts +1 -0
- package/dist/format-datetime/index.js +2 -0
- package/dist/format-relative-time/define.d.ts +6 -0
- package/dist/format-relative-time/define.js +7 -0
- package/dist/format-relative-time/define.js.map +1 -0
- package/dist/format-relative-time/format-relative-time.d.ts +47 -0
- package/dist/format-relative-time/format-relative-time.examples.js +6 -0
- package/dist/format-relative-time/format-relative-time.examples.js.map +1 -0
- package/dist/format-relative-time/format-relative-time.examples.json +69 -0
- package/dist/format-relative-time/format-relative-time.js +6 -0
- package/dist/format-relative-time/format-relative-time.js.map +1 -0
- package/dist/format-relative-time/format-relative-time2.js +118 -0
- package/dist/format-relative-time/format-relative-time2.js.map +1 -0
- package/dist/format-relative-time/index.d.ts +1 -0
- package/dist/format-relative-time/index.js +2 -0
- package/dist/forms/control/control2.js +2 -2
- package/dist/forms/control-group/control-group2.js +2 -2
- package/dist/forms/control-message/control-message2.js +2 -2
- package/dist/forms/forms.examples.js.map +1 -1
- package/dist/forms/forms.examples.json +4 -2
- package/dist/grid/cell/cell2.js +1 -1
- package/dist/grid/column/column.d.ts +1 -0
- package/dist/grid/column/column2.js +5 -2
- package/dist/grid/column/column2.js.map +1 -1
- package/dist/grid/footer/footer2.js +2 -2
- package/dist/grid/grid.examples.js.map +1 -1
- package/dist/grid/grid.examples.json +1 -1
- package/dist/grid/grid2.js +2 -2
- package/dist/grid/header/header2.js +2 -2
- package/dist/grid/placeholder/placeholder2.js +1 -1
- package/dist/grid/row/row2.js +2 -2
- package/dist/icon/icon2.js +3 -3
- package/dist/icon-button/icon-button2.js +2 -2
- package/dist/index.js +1 -1
- package/dist/input/define.js +6 -3
- package/dist/input/define.js.map +1 -1
- package/dist/input/input-group2.js +1 -1
- package/dist/input/input2.js +2 -2
- package/dist/internal/base/button.js +1 -1
- package/dist/internal/index.js +40 -40
- package/dist/internal/services/global.service.js +1 -1
- package/dist/internal/services/i18n.service.d.ts +1 -0
- package/dist/internal/services/i18n.service.js +2 -1
- package/dist/internal/services/i18n.service.js.map +1 -1
- package/dist/internal/utils/dom.d.ts +10 -0
- package/dist/internal/utils/dom.js +57 -51
- package/dist/internal/utils/dom.js.map +1 -1
- package/dist/logo/logo2.js +2 -2
- package/dist/menu/menu-item2.js +2 -2
- package/dist/menu/menu.d.ts +3 -0
- package/dist/menu/menu2.js +23 -2
- package/dist/menu/menu2.js.map +1 -1
- package/dist/month/define.js +5 -3
- package/dist/month/define.js.map +1 -1
- package/dist/month/month2.js +2 -2
- package/dist/notification/notification-group2.js +2 -2
- package/dist/notification/notification2.js +2 -2
- package/dist/page/page-panel/page-panel-content2.js +1 -1
- package/dist/page/page-panel/page-panel-footer2.js +2 -2
- package/dist/page/page-panel/page-panel-header2.js +2 -2
- package/dist/page/page-panel/page-panel2.js +2 -2
- package/dist/page/page.examples.js.map +1 -1
- package/dist/page/page.examples.json +0 -11
- package/dist/page/page2.js +2 -2
- package/dist/page-header/page-header.examples.js.map +1 -1
- package/dist/page-header/page-header.examples.json +2 -2
- package/dist/page-header/page-header2.js +1 -1
- package/dist/page-loader/page-loader.js +1 -1
- package/dist/page-loader/page-loader.js.map +1 -1
- package/dist/page-loader/page-loader2.js +2 -2
- package/dist/pagination/pagination2.js +2 -2
- package/dist/panel/panel2.js +5 -5
- package/dist/password/define.js +5 -3
- package/dist/password/define.js.map +1 -1
- package/dist/password/password2.js +2 -2
- package/dist/preferences-input/preferences-input2.js +2 -2
- package/dist/progress-bar/progress-bar2.js +2 -2
- package/dist/progress-ring/progress-ring2.js +2 -2
- package/dist/progressive-filter-chip/progressive-filter-chip2.js +2 -2
- package/dist/pulse/pulse2.js +2 -2
- package/dist/radio/define.js +6 -3
- package/dist/radio/define.js.map +1 -1
- package/dist/radio/radio-group2.js +2 -2
- package/dist/radio/radio2.js +2 -2
- package/dist/range/define.js +5 -3
- package/dist/range/define.js.map +1 -1
- package/dist/range/range2.js +2 -2
- package/dist/resize-handle/resize-handle.examples.js.map +1 -1
- package/dist/resize-handle/resize-handle.examples.json +3 -1
- package/dist/resize-handle/resize-handle2.js +2 -2
- package/dist/search/define.js +5 -3
- package/dist/search/define.js.map +1 -1
- package/dist/search/search2.js +2 -2
- package/dist/select/define.js +5 -3
- package/dist/select/define.js.map +1 -1
- package/dist/select/select2.js +2 -2
- package/dist/skeleton/skeleton.examples.js.map +1 -1
- package/dist/skeleton/skeleton.examples.json +3 -1
- package/dist/skeleton/skeleton2.js +2 -2
- package/dist/sort-button/sort-button2.js +2 -2
- package/dist/sparkline/sparkline.examples.js.map +1 -1
- package/dist/sparkline/sparkline.examples.json +3 -1
- package/dist/sparkline/sparkline.utils.js +2 -8
- package/dist/sparkline/sparkline.utils.js.map +1 -1
- package/dist/sparkline/sparkline2.js +2 -2
- package/dist/star-rating/define.js +5 -3
- package/dist/star-rating/define.js.map +1 -1
- package/dist/star-rating/star-rating2.js +2 -2
- package/dist/steps/steps2.js +3 -3
- package/dist/switch/define.js +6 -3
- package/dist/switch/define.js.map +1 -1
- package/dist/switch/switch-group2.js +2 -2
- package/dist/switch/switch2.js +2 -2
- package/dist/tabs/define.d.ts +2 -1
- package/dist/tabs/define.js +2 -1
- package/dist/tabs/define.js.map +1 -1
- package/dist/tabs/index.d.ts +1 -0
- package/dist/tabs/index.js +2 -1
- package/dist/tabs/tabs-group.d.ts +51 -0
- package/dist/tabs/tabs-group.js +6 -0
- package/dist/tabs/tabs-group.js.map +1 -0
- package/dist/tabs/tabs-group2.js +144 -0
- package/dist/tabs/tabs-group2.js.map +1 -0
- package/dist/tabs/tabs.examples.js.map +1 -1
- package/dist/tabs/tabs.examples.json +38 -2
- package/dist/tabs/tabs2.js +3 -3
- package/dist/tag/tag2.js +2 -2
- package/dist/textarea/define.js +5 -3
- package/dist/textarea/define.js.map +1 -1
- package/dist/textarea/textarea2.js +1 -1
- package/dist/time/define.js +5 -3
- package/dist/time/define.js.map +1 -1
- package/dist/time/time2.js +2 -2
- package/dist/toast/toast2.js +2 -2
- package/dist/toggletip/toggletip-footer2.js +2 -2
- package/dist/toggletip/toggletip-header2.js +2 -2
- package/dist/toggletip/toggletip2.js +2 -2
- package/dist/toolbar/toolbar2.js +2 -2
- package/dist/tooltip/tooltip2.js +2 -2
- package/dist/tree/tree-node.d.ts +1 -1
- package/dist/tree/tree-node.js +1 -1
- package/dist/tree/tree-node.js.map +1 -1
- package/dist/tree/tree-node2.js +2 -2
- package/dist/tree/tree-node2.js.map +1 -1
- package/dist/tree/tree.examples.js.map +1 -1
- package/dist/tree/tree.examples.json +1 -10
- package/dist/tree/tree2.js +2 -2
- package/dist/week/define.js +5 -3
- package/dist/week/define.js.map +1 -1
- package/dist/week/week2.js +2 -2
- package/package.json +43 -41
- package/dist/app-header/app-header.d.ts +0 -39
- package/dist/app-header/app-header.js +0 -6
- package/dist/app-header/app-header.js.map +0 -1
- package/dist/app-header/app-header2.js +0 -54
- package/dist/app-header/app-header2.js.map +0 -1
- package/dist/app-header/define.d.ts +0 -6
- package/dist/app-header/define.js +0 -7
- package/dist/app-header/define.js.map +0 -1
- package/dist/app-header/index.d.ts +0 -1
- package/dist/app-header/index.js +0 -2
- package/dist/bundles/audit-logs.js +0 -50
- package/dist/bundles/icons.js +0 -285
- package/dist/bundles/index.css +0 -2
- package/dist/bundles/log.service.js +0 -90
- package/dist/bundles/rolldown-runtime.js +0 -11
- package/dist/css/module.layout.css +0 -1
- package/dist/css/module.typography.css +0 -1
- package/dist/index.css +0 -1
- package/dist/json-viewer/define.d.ts +0 -8
- package/dist/json-viewer/define.js +0 -8
- package/dist/json-viewer/define.js.map +0 -1
- package/dist/json-viewer/index.d.ts +0 -2
- package/dist/json-viewer/index.js +0 -3
- package/dist/json-viewer/json-viewer.d.ts +0 -25
- package/dist/json-viewer/json-viewer.js +0 -6
- package/dist/json-viewer/json-viewer.js.map +0 -1
- package/dist/json-viewer/json-viewer2.js +0 -39
- package/dist/json-viewer/json-viewer2.js.map +0 -1
- package/dist/json-viewer/node/node.d.ts +0 -21
- package/dist/json-viewer/node/node.js +0 -6
- package/dist/json-viewer/node/node.js.map +0 -1
- package/dist/json-viewer/node/node2.js +0 -72
- package/dist/json-viewer/node/node2.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-relative-time.examples.js","names":[],"sources":["../../src/format-relative-time/format-relative-time.examples.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html } from 'lit';\nimport '@nvidia-elements/core/format-relative-time/define.js';\n\nexport default {\n title: 'Elements/FormatRelativeTime',\n component: 'nve-format-relative-time',\n};\n\n/**\n * @summary Basic relative time formatting with auto unit selection. Use for displaying human-readable relative timestamps in content areas, feeds, or metadata.\n */\nexport const Default = {\n render: () => html`\n<div nve-layout=\"column gap:sm\">\n <nve-format-relative-time>2020-01-15T12:00:00.000Z</nve-format-relative-time>\n <nve-format-relative-time>2024-06-15T12:00:00.000Z</nve-format-relative-time>\n <nve-format-relative-time>2025-12-01T12:00:00.000Z</nve-format-relative-time>\n</div>\n `\n};\n\n/**\n * @summary Numeric formatting control for natural language output. Use 'auto' to display natural forms such as 'yesterday' instead of '1 day ago'.\n */\nexport const Numeric = {\n render: () => html`\n<div nve-layout=\"column gap:sm\">\n <nve-format-relative-time numeric=\"always\" unit=\"year\">2025-01-15T12:00:00.000Z</nve-format-relative-time>\n <nve-format-relative-time numeric=\"auto\" unit=\"year\">2025-01-15T12:00:00.000Z</nve-format-relative-time>\n</div>\n `\n};\n\n/**\n * @summary Format style presets for controlling output verbosity. Use 'short' or 'narrow' for compact layouts such as data tables or timelines.\n */\nexport const FormatStyle = {\n render: () => html`\n<div nve-layout=\"column gap:sm\">\n <nve-format-relative-time format-style=\"long\">2020-01-15T12:00:00.000Z</nve-format-relative-time>\n <nve-format-relative-time format-style=\"short\">2020-01-15T12:00:00.000Z</nve-format-relative-time>\n <nve-format-relative-time format-style=\"narrow\">2020-01-15T12:00:00.000Z</nve-format-relative-time>\n</div>\n `\n};\n\n/**\n * @summary Explicit time unit selection for keeping relative time in a fixed unit. Use when you always want output in days, months, or years instead of letting the component auto-select the unit.\n */\nexport const Unit = {\n render: () => html`\n<div nve-layout=\"column gap:sm\">\n <nve-format-relative-time unit=\"day\">2020-01-15T12:00:00.000Z</nve-format-relative-time>\n <nve-format-relative-time unit=\"month\">2020-01-15T12:00:00.000Z</nve-format-relative-time>\n <nve-format-relative-time unit=\"year\">2020-01-15T12:00:00.000Z</nve-format-relative-time>\n</div>\n `\n};\n\n/**\n * @summary Explicit locale settings for internationalized relative time output. Use when the target audience locale differs from the document language or browser default.\n */\nexport const Locale = {\n render: () => html`\n<div nve-layout=\"column gap:sm\">\n <nve-format-relative-time locale=\"de-DE\">2020-01-15T12:00:00.000Z</nve-format-relative-time>\n <nve-format-relative-time locale=\"ja\">2020-01-15T12:00:00.000Z</nve-format-relative-time>\n <nve-format-relative-time locale=\"fr-FR\">2020-01-15T12:00:00.000Z</nve-format-relative-time>\n</div>\n `\n};\n\n/**\n * @summary Date attribute input for values supplied by JavaScript or bound data. By default, the component formats text content, which also serves as the SSR fallback, and `date` wins when both are present.\n */\nexport const DateAttribute = {\n render: () => html`\n <nve-format-relative-time date=\"2020-01-15T12:00:00.000Z\"></nve-format-relative-time>\n `\n};\n\n/**\n * @summary Auto-updating relative time with the sync attribute. Use for live feeds, notifications, or dashboards where freshness matters.\n */\nexport const Sync = {\n render: () => html`\n <nve-format-relative-time sync>2020-01-15T12:00:00.000Z</nve-format-relative-time>\n `\n};\n"],"mappings":";AAGA,IAAA,IAAS"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"element": "nve-format-relative-time",
|
|
3
|
+
"entrypoint": "@nvidia-elements/core/format-relative-time/format-relative-time.examples.json",
|
|
4
|
+
"items": [
|
|
5
|
+
{
|
|
6
|
+
"id": "core-format-relative-time_default",
|
|
7
|
+
"name": "Default",
|
|
8
|
+
"template": "<div nve-layout=\"column gap:sm\">\n <nve-format-relative-time>2020-01-15T12:00:00.000Z</nve-format-relative-time>\n <nve-format-relative-time>2024-06-15T12:00:00.000Z</nve-format-relative-time>\n <nve-format-relative-time>2025-12-01T12:00:00.000Z</nve-format-relative-time>\n</div>\n",
|
|
9
|
+
"summary": "Basic relative time formatting with auto unit selection. Use for displaying human-readable relative timestamps in content areas, feeds, or metadata.",
|
|
10
|
+
"description": "",
|
|
11
|
+
"composition": false,
|
|
12
|
+
"tags": []
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "core-format-relative-time_numeric",
|
|
16
|
+
"name": "Numeric",
|
|
17
|
+
"template": "<div nve-layout=\"column gap:sm\">\n <nve-format-relative-time numeric=\"always\" unit=\"year\">2025-01-15T12:00:00.000Z</nve-format-relative-time>\n <nve-format-relative-time numeric=\"auto\" unit=\"year\">2025-01-15T12:00:00.000Z</nve-format-relative-time>\n</div>\n",
|
|
18
|
+
"summary": "Numeric formatting control for natural language output. Use 'auto' to display natural forms such as 'yesterday' instead of '1 day ago'.",
|
|
19
|
+
"description": "",
|
|
20
|
+
"composition": false,
|
|
21
|
+
"tags": []
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"id": "core-format-relative-time_format-style",
|
|
25
|
+
"name": "FormatStyle",
|
|
26
|
+
"template": "<div nve-layout=\"column gap:sm\">\n <nve-format-relative-time format-style=\"long\">2020-01-15T12:00:00.000Z</nve-format-relative-time>\n <nve-format-relative-time format-style=\"short\">2020-01-15T12:00:00.000Z</nve-format-relative-time>\n <nve-format-relative-time format-style=\"narrow\">2020-01-15T12:00:00.000Z</nve-format-relative-time>\n</div>\n",
|
|
27
|
+
"summary": "Format style presets for controlling output verbosity. Use 'short' or 'narrow' for compact layouts such as data tables or timelines.",
|
|
28
|
+
"description": "",
|
|
29
|
+
"composition": false,
|
|
30
|
+
"tags": []
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "core-format-relative-time_unit",
|
|
34
|
+
"name": "Unit",
|
|
35
|
+
"template": "<div nve-layout=\"column gap:sm\">\n <nve-format-relative-time unit=\"day\">2020-01-15T12:00:00.000Z</nve-format-relative-time>\n <nve-format-relative-time unit=\"month\">2020-01-15T12:00:00.000Z</nve-format-relative-time>\n <nve-format-relative-time unit=\"year\">2020-01-15T12:00:00.000Z</nve-format-relative-time>\n</div>\n",
|
|
36
|
+
"summary": "Explicit time unit selection for keeping relative time in a fixed unit. Use when you always want output in days, months, or years instead of letting the component auto-select the unit.",
|
|
37
|
+
"description": "",
|
|
38
|
+
"composition": false,
|
|
39
|
+
"tags": []
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"id": "core-format-relative-time_locale",
|
|
43
|
+
"name": "Locale",
|
|
44
|
+
"template": "<div nve-layout=\"column gap:sm\">\n <nve-format-relative-time locale=\"de-DE\">2020-01-15T12:00:00.000Z</nve-format-relative-time>\n <nve-format-relative-time locale=\"ja\">2020-01-15T12:00:00.000Z</nve-format-relative-time>\n <nve-format-relative-time locale=\"fr-FR\">2020-01-15T12:00:00.000Z</nve-format-relative-time>\n</div>\n",
|
|
45
|
+
"summary": "Explicit locale settings for internationalized relative time output. Use when the target audience locale differs from the document language or browser default.",
|
|
46
|
+
"description": "",
|
|
47
|
+
"composition": false,
|
|
48
|
+
"tags": []
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"id": "core-format-relative-time_date-attribute",
|
|
52
|
+
"name": "DateAttribute",
|
|
53
|
+
"template": "<nve-format-relative-time date=\"2020-01-15T12:00:00.000Z\"></nve-format-relative-time>\n",
|
|
54
|
+
"summary": "Date attribute input for values supplied by JavaScript or bound data. By default, the component formats text content, which also serves as the SSR fallback, and `date` wins when both are present.",
|
|
55
|
+
"description": "",
|
|
56
|
+
"composition": false,
|
|
57
|
+
"tags": []
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"id": "core-format-relative-time_sync",
|
|
61
|
+
"name": "Sync",
|
|
62
|
+
"template": "<nve-format-relative-time sync>2020-01-15T12:00:00.000Z</nve-format-relative-time>\n",
|
|
63
|
+
"summary": "Auto-updating relative time with the sync attribute. Use for live feeds, notifications, or dashboards where freshness matters.",
|
|
64
|
+
"description": "",
|
|
65
|
+
"composition": false,
|
|
66
|
+
"tags": []
|
|
67
|
+
}
|
|
68
|
+
]
|
|
69
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
//#region src/format-relative-time/format-relative-time.css?inline
|
|
2
|
+
var e = ":host{display:inline}[internal-host]{color:var(--nve-sys-text-color, inherit)}slot{display:none}";
|
|
3
|
+
//#endregion
|
|
4
|
+
export { e as default };
|
|
5
|
+
|
|
6
|
+
//# sourceMappingURL=format-relative-time.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-relative-time.js","names":[],"sources":["../../src/format-relative-time/format-relative-time.css?inline"],"sourcesContent":["/* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */\n/* SPDX-License-Identifier: Apache-2.0 */\n\n:host {\n display: inline;\n}\n\n[internal-host] {\n color: var(--nve-sys-text-color, inherit);\n}\n\nslot {\n display: none;\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { LogService as e } from "../internal/services/log.service.js";
|
|
2
|
+
import { __decorate as t } from "../_virtual/_@oxc-project_runtime@0.123.0/helpers/decorate.js";
|
|
3
|
+
import { typeSSR as n } from "../internal/controllers/type-ssr.controller.js";
|
|
4
|
+
import { useStyles as r } from "../internal/styles/index.js";
|
|
5
|
+
import i from "./format-relative-time.js";
|
|
6
|
+
import { LitElement as a, html as o } from "lit";
|
|
7
|
+
import { property as s } from "lit/decorators/property.js";
|
|
8
|
+
//#region src/format-relative-time/format-relative-time.ts
|
|
9
|
+
var c = class extends a {
|
|
10
|
+
constructor(...e) {
|
|
11
|
+
super(...e), this.numeric = "always", this.formatStyle = "long", this.unit = "auto", this.sync = !1;
|
|
12
|
+
}
|
|
13
|
+
static {
|
|
14
|
+
this.styles = r([i]);
|
|
15
|
+
}
|
|
16
|
+
static {
|
|
17
|
+
this.metadata = {
|
|
18
|
+
tag: "nve-format-relative-time",
|
|
19
|
+
version: "0.0.4"
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
#e;
|
|
23
|
+
get #t() {
|
|
24
|
+
return this.date ?? this.textContent?.trim() ?? "";
|
|
25
|
+
}
|
|
26
|
+
get #n() {
|
|
27
|
+
return this.locale ?? (globalThis.document?.documentElement?.lang || void 0);
|
|
28
|
+
}
|
|
29
|
+
#r(e) {
|
|
30
|
+
let t = Math.abs(e), n = e < 0 ? -1 : 1, r = Math.round(t / 1e3), i = Math.round(t / 6e4), a = Math.round(t / 36e5), o = Math.round(t / 864e5), s = Math.round(t / 6048e5), c = Math.round(t / 2592e6), l = Math.round(t / 31536e6);
|
|
31
|
+
return r < 60 ? {
|
|
32
|
+
value: n * r,
|
|
33
|
+
unit: "second"
|
|
34
|
+
} : i < 60 ? {
|
|
35
|
+
value: n * i,
|
|
36
|
+
unit: "minute"
|
|
37
|
+
} : a < 24 ? {
|
|
38
|
+
value: n * a,
|
|
39
|
+
unit: "hour"
|
|
40
|
+
} : o < 7 ? {
|
|
41
|
+
value: n * o,
|
|
42
|
+
unit: "day"
|
|
43
|
+
} : s < 4 ? {
|
|
44
|
+
value: n * s,
|
|
45
|
+
unit: "week"
|
|
46
|
+
} : c < 12 ? {
|
|
47
|
+
value: n * c,
|
|
48
|
+
unit: "month"
|
|
49
|
+
} : {
|
|
50
|
+
value: n * l,
|
|
51
|
+
unit: "year"
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
#i(e, t) {
|
|
55
|
+
return Math.round(e / ({
|
|
56
|
+
second: 1e3,
|
|
57
|
+
minute: 6e4,
|
|
58
|
+
hour: 36e5,
|
|
59
|
+
day: 864e5,
|
|
60
|
+
week: 6048e5,
|
|
61
|
+
month: 2592e6,
|
|
62
|
+
year: 31536e6
|
|
63
|
+
}[t] ?? 1));
|
|
64
|
+
}
|
|
65
|
+
get #a() {
|
|
66
|
+
let t = this.#t;
|
|
67
|
+
if (!t) return "";
|
|
68
|
+
let n = new Date(t);
|
|
69
|
+
if (isNaN(n.getTime())) return e.warn(`format-relative-time: invalid date value "${t}"`), t;
|
|
70
|
+
let r = n.getTime() - Date.now(), i, a;
|
|
71
|
+
this.unit === "auto" ? {value: i, unit: a} = this.#r(r) : (a = this.unit, i = this.#i(r, a));
|
|
72
|
+
try {
|
|
73
|
+
return new Intl.RelativeTimeFormat(this.#n, {
|
|
74
|
+
numeric: this.numeric,
|
|
75
|
+
style: this.formatStyle
|
|
76
|
+
}).format(i, a);
|
|
77
|
+
} catch (n) {
|
|
78
|
+
return e.warn(`format-relative-time: ${n.message}`), t;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
#o() {
|
|
82
|
+
let e = this.#t;
|
|
83
|
+
if (!e) return 6e4;
|
|
84
|
+
let t = Math.abs(new Date(e).getTime() - Date.now());
|
|
85
|
+
return t < 6e4 ? 1e4 : t < 36e5 ? 3e4 : t < 864e5 ? 3e5 : 36e5;
|
|
86
|
+
}
|
|
87
|
+
#s() {
|
|
88
|
+
this.#c(), this.sync && (this.#e = setTimeout(() => {
|
|
89
|
+
this.requestUpdate(), this.#s();
|
|
90
|
+
}, this.#o()));
|
|
91
|
+
}
|
|
92
|
+
#c() {
|
|
93
|
+
this.#e !== void 0 && (clearTimeout(this.#e), this.#e = void 0);
|
|
94
|
+
}
|
|
95
|
+
connectedCallback() {
|
|
96
|
+
super.connectedCallback(), this.sync && this.#s();
|
|
97
|
+
}
|
|
98
|
+
disconnectedCallback() {
|
|
99
|
+
this.#c(), super.disconnectedCallback();
|
|
100
|
+
}
|
|
101
|
+
updated(e) {
|
|
102
|
+
e.has("sync") && (this.sync ? this.#s() : this.#c());
|
|
103
|
+
}
|
|
104
|
+
render() {
|
|
105
|
+
return o`<time internal-host datetime="${this.#t}">${this.#a}<slot @slotchange="${this.#l}" hidden></slot></time>`;
|
|
106
|
+
}
|
|
107
|
+
#l() {
|
|
108
|
+
this.requestUpdate();
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
t([s({ type: String })], c.prototype, "date", void 0), t([s({ type: String })], c.prototype, "locale", void 0), t([s({ type: String })], c.prototype, "numeric", void 0), t([s({
|
|
112
|
+
type: String,
|
|
113
|
+
attribute: "format-style"
|
|
114
|
+
})], c.prototype, "formatStyle", void 0), t([s({ type: String })], c.prototype, "unit", void 0), t([s({ type: Boolean })], c.prototype, "sync", void 0), c = t([n()], c);
|
|
115
|
+
//#endregion
|
|
116
|
+
export { c as FormatRelativeTime };
|
|
117
|
+
|
|
118
|
+
//# sourceMappingURL=format-relative-time2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-relative-time2.js","names":["#dateValue","#resolvedLocale","#formattedRelativeTime","#computeUnit","#computeExplicitUnit","#stopSync","#timer","#startSync","#getSyncInterval","#onSlotChange"],"sources":["../../src/format-relative-time/format-relative-time.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators/property.js';\nimport { useStyles, typeSSR, LogService } from '@nvidia-elements/core/internal';\nimport styles from './format-relative-time.css?inline';\n\ntype TimeUnitOption = 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'year';\n\n/**\n * @element nve-format-relative-time\n * @description Formats a date/time value as localized relative text using the Intl.RelativeTimeFormat API. Renders inside a semantic time element.\n * Options mirror the Intl.RelativeTimeFormat API. When unit is 'auto', the component selects the best unit based on the time difference.\n * @since 0.0.0\n * @entrypoint \\@nvidia-elements/core/format-relative-time\n * @slot - Date string to format (such as 2023-07-28T04:20:17.434Z). Serves as fallback before hydration.\n */\n@typeSSR()\nexport class FormatRelativeTime extends LitElement {\n static styles = useStyles([styles]);\n\n static readonly metadata = {\n tag: 'nve-format-relative-time',\n version: '0.0.0'\n };\n\n /**\n * Optional date string for values supplied by JavaScript or bound data.\n * By default, the component formats the element's text content, which also serves as the SSR fallback.\n * When both are present, this property takes precedence.\n */\n @property({ type: String }) date?: string;\n\n /**\n * Language tag (such as en-US, de-DE). Defaults to document.documentElement.lang or browser default.\n */\n @property({ type: String }) locale?: string;\n\n /**\n * Numeric formatting: 'always' | 'auto'. When 'auto', enables natural language forms such as 'yesterday' instead of '1 day ago'.\n */\n @property({ type: String }) numeric: 'always' | 'auto' = 'always';\n\n /**\n * Formatting length: 'long' | 'short' | 'narrow'. Controls verbosity (such as '3 days ago' vs '3d ago'). Maps to Intl.RelativeTimeFormat style option.\n */\n @property({ type: String, attribute: 'format-style' }) formatStyle: 'long' | 'short' | 'narrow' = 'long';\n\n /**\n * Time unit: 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'year' | 'auto'. Use 'auto' to let the component select the most appropriate unit based on the time difference.\n */\n @property({ type: String }) unit: 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'year' | 'auto' = 'auto';\n\n /**\n * When present, auto-updates the displayed relative time at appropriate intervals.\n */\n @property({ type: Boolean }) sync = false;\n\n #timer?: ReturnType<typeof setTimeout>;\n\n get #dateValue(): string {\n return this.date ?? this.textContent?.trim() ?? '';\n }\n\n get #resolvedLocale(): string | undefined {\n return this.locale ?? (globalThis.document?.documentElement?.lang || undefined);\n }\n\n #computeUnit(diffMs: number): { value: number; unit: Intl.RelativeTimeFormatUnit } {\n const absDiff = Math.abs(diffMs);\n const sign = diffMs < 0 ? -1 : 1;\n\n const seconds = Math.round(absDiff / 1000);\n const minutes = Math.round(absDiff / 60000);\n const hours = Math.round(absDiff / 3600000);\n const days = Math.round(absDiff / 86400000);\n const weeks = Math.round(absDiff / 604800000);\n const months = Math.round(absDiff / 2592000000);\n const years = Math.round(absDiff / 31536000000);\n\n if (seconds < 60) return { value: sign * seconds, unit: 'second' };\n if (minutes < 60) return { value: sign * minutes, unit: 'minute' };\n if (hours < 24) return { value: sign * hours, unit: 'hour' };\n if (days < 7) return { value: sign * days, unit: 'day' };\n if (weeks < 4) return { value: sign * weeks, unit: 'week' };\n if (months < 12) return { value: sign * months, unit: 'month' };\n return { value: sign * years, unit: 'year' };\n }\n\n #computeExplicitUnit(diffMs: number, unit: TimeUnitOption): number {\n const divisors: Record<string, number> = {\n second: 1000,\n minute: 60000,\n hour: 3600000,\n day: 86400000,\n week: 604800000,\n month: 2592000000,\n year: 31536000000\n };\n return Math.round(diffMs / (divisors[unit] ?? 1));\n }\n\n get #formattedRelativeTime(): string {\n const iso = this.#dateValue;\n if (!iso) return '';\n\n const target = new Date(iso);\n if (isNaN(target.getTime())) {\n LogService.warn(`format-relative-time: invalid date value \"${iso}\"`);\n return iso;\n }\n\n const diffMs = target.getTime() - Date.now();\n let value: number;\n let resolvedUnit: Intl.RelativeTimeFormatUnit;\n\n if (this.unit === 'auto') {\n ({ value, unit: resolvedUnit } = this.#computeUnit(diffMs));\n } else {\n resolvedUnit = this.unit;\n value = this.#computeExplicitUnit(diffMs, resolvedUnit);\n }\n\n try {\n return new Intl.RelativeTimeFormat(this.#resolvedLocale, {\n numeric: this.numeric,\n style: this.formatStyle\n }).format(value, resolvedUnit);\n } catch (e) {\n LogService.warn(`format-relative-time: ${(e as Error).message}`);\n return iso;\n }\n }\n\n #getSyncInterval(): number {\n const iso = this.#dateValue;\n if (!iso) return 60000;\n\n const absDiff = Math.abs(new Date(iso).getTime() - Date.now());\n if (absDiff < 60000) return 10000;\n if (absDiff < 3600000) return 30000;\n if (absDiff < 86400000) return 300000;\n return 3600000;\n }\n\n #startSync() {\n this.#stopSync();\n if (!this.sync) return;\n\n this.#timer = setTimeout(() => {\n this.requestUpdate();\n this.#startSync();\n }, this.#getSyncInterval());\n }\n\n #stopSync() {\n if (this.#timer !== undefined) {\n clearTimeout(this.#timer);\n this.#timer = undefined;\n }\n }\n\n connectedCallback() {\n super.connectedCallback();\n if (this.sync) this.#startSync();\n }\n\n disconnectedCallback() {\n this.#stopSync();\n super.disconnectedCallback();\n }\n\n updated(changed: Map<string, unknown>) {\n if (changed.has('sync')) {\n if (this.sync) {\n this.#startSync();\n } else {\n this.#stopSync();\n }\n }\n }\n\n render() {\n return html`<time internal-host datetime=${this.#dateValue}>${this.#formattedRelativeTime}<slot @slotchange=${this.#onSlotChange} hidden></slot></time>`;\n }\n\n #onSlotChange() {\n this.requestUpdate();\n }\n}\n"],"mappings":";;;;;;;;AAmBO,IAAA,IAAA,cAAiC,EAAW;;8BAuBQ,6BAKyC,oBAKY,oBAK1E;;;gBArCpB,EAAU,CAAC,EAAO,CAAC;;;kBAER;GACzB,KAAK;GACL,SAAS;GACV;;CAkCD;CAEA,KAAA,IAAyB;AACvB,SAAO,KAAK,QAAQ,KAAK,aAAa,MAAM,IAAI;;CAGlD,KAAA,IAA0C;AACxC,SAAO,KAAK,WAAW,WAAW,UAAU,iBAAiB,QAAQ,KAAA;;CAGvE,GAAa,GAAsE;EACjF,IAAM,IAAU,KAAK,IAAI,EAAO,EAC1B,IAAO,IAAS,IAAI,KAAK,GAEzB,IAAU,KAAK,MAAM,IAAU,IAAK,EACpC,IAAU,KAAK,MAAM,IAAU,IAAM,EACrC,IAAQ,KAAK,MAAM,IAAU,KAAQ,EACrC,IAAO,KAAK,MAAM,IAAU,MAAS,EACrC,IAAQ,KAAK,MAAM,IAAU,OAAU,EACvC,IAAS,KAAK,MAAM,IAAU,OAAW,EACzC,IAAQ,KAAK,MAAM,IAAU,QAAY;AAQ/C,SANI,IAAU,KAAW;GAAE,OAAO,IAAO;GAAS,MAAM;GAAU,GAC9D,IAAU,KAAW;GAAE,OAAO,IAAO;GAAS,MAAM;GAAU,GAC9D,IAAQ,KAAW;GAAE,OAAO,IAAO;GAAO,MAAM;GAAQ,GACxD,IAAO,IAAU;GAAE,OAAO,IAAO;GAAM,MAAM;GAAO,GACpD,IAAQ,IAAU;GAAE,OAAO,IAAO;GAAO,MAAM;GAAQ,GACvD,IAAS,KAAW;GAAE,OAAO,IAAO;GAAQ,MAAM;GAAS,GACxD;GAAE,OAAO,IAAO;GAAO,MAAM;GAAQ;;CAG9C,GAAqB,GAAgB,GAA8B;AAUjE,SAAO,KAAK,MAAM,KATuB;GACvC,QAAQ;GACR,QAAQ;GACR,MAAM;GACN,KAAK;GACL,MAAM;GACN,OAAO;GACP,MAAM;GACP,CACoC,MAAS,GAAG;;CAGnD,KAAA,IAAqC;EACnC,IAAM,IAAM,MAAA;AACZ,MAAI,CAAC,EAAK,QAAO;EAEjB,IAAM,IAAS,IAAI,KAAK,EAAI;AAC5B,MAAI,MAAM,EAAO,SAAS,CAAC,CAEzB,QADA,EAAW,KAAK,6CAA6C,EAAI,GAAG,EAC7D;EAGT,IAAM,IAAS,EAAO,SAAS,GAAG,KAAK,KAAK,EACxC,GACA;AAEJ,EAAI,KAAK,SAAS,SACf,WAAS,MAAM,KAAiB,MAAA,EAAkB,EAAO,IAE1D,IAAe,KAAK,MACpB,IAAQ,MAAA,EAA0B,GAAQ,EAAa;AAGzD,MAAI;AACF,UAAO,IAAI,KAAK,mBAAmB,MAAA,GAAsB;IACvD,SAAS,KAAK;IACd,OAAO,KAAK;IACb,CAAC,CAAC,OAAO,GAAO,EAAa;WACvB,GAAG;AAEV,UADA,EAAW,KAAK,yBAA0B,EAAY,UAAU,EACzD;;;CAIX,KAA2B;EACzB,IAAM,IAAM,MAAA;AACZ,MAAI,CAAC,EAAK,QAAO;EAEjB,IAAM,IAAU,KAAK,IAAI,IAAI,KAAK,EAAI,CAAC,SAAS,GAAG,KAAK,KAAK,CAAC;AAI9D,SAHI,IAAU,MAAc,MACxB,IAAU,OAAgB,MAC1B,IAAU,QAAiB,MACxB;;CAGT,KAAa;AACX,QAAA,GAAgB,EACX,KAAK,SAEV,MAAA,IAAc,iBAAiB;AAE7B,GADA,KAAK,eAAe,EACpB,MAAA,GAAiB;KAChB,MAAA,GAAuB,CAAC;;CAG7B,KAAY;AACV,EAAI,MAAA,MAAgB,KAAA,MAClB,aAAa,MAAA,EAAY,EACzB,MAAA,IAAc,KAAA;;CAIlB,oBAAoB;AAElB,EADA,MAAM,mBAAmB,EACrB,KAAK,QAAM,MAAA,GAAiB;;CAGlC,uBAAuB;AAErB,EADA,MAAA,GAAgB,EAChB,MAAM,sBAAsB;;CAG9B,QAAQ,GAA+B;AACrC,EAAI,EAAQ,IAAI,OAAO,KACjB,KAAK,OACP,MAAA,GAAiB,GAEjB,MAAA,GAAgB;;CAKtB,SAAS;AACP,SAAO,CAAI,iCAAgC,MAAA,EAAgB,IAAG,MAAA,EAA4B,qBAAoB,MAAA,EAAmB;;CAGnI,KAAgB;AACd,OAAK,eAAe;;;GA5JrB,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,EAAA,WAAA,QAAA,KAAA,EAAA,KAK1B,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,EAAA,WAAA,UAAA,KAAA,EAAA,KAK1B,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,EAAA,WAAA,WAAA,KAAA,EAAA,KAK1B,EAAS;CAAE,MAAM;CAAQ,WAAW;CAAgB,CAAC,CAAA,EAAA,EAAA,WAAA,eAAA,KAAA,EAAA,KAKrD,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,EAAA,WAAA,QAAA,KAAA,EAAA,KAK1B,EAAS,EAAE,MAAM,SAAS,CAAC,CAAA,EAAA,EAAA,WAAA,QAAA,KAAA,EAAA,SAvC7B,GAAS,CAAA,EAAA,EAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './format-relative-time.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { appendRootNodeStyle as e, getAttributeListChanges as t } from "../../internal/utils/dom.js";
|
|
2
2
|
import { associateAriaDescribedBy as n, associateDataList as r, associateLabel as i, attachInternals as a } from "../../internal/utils/a11y.js";
|
|
3
|
-
import { __decorate as o } from "../../_virtual/_@oxc-project_runtime@0.
|
|
3
|
+
import { __decorate as o } from "../../_virtual/_@oxc-project_runtime@0.123.0/helpers/decorate.js";
|
|
4
4
|
import { I18nController as s } from "../../internal/controllers/i18n.controller.js";
|
|
5
5
|
import { typeSSR as c } from "../../internal/controllers/type-ssr.controller.js";
|
|
6
6
|
import { hostAttr as l } from "../../internal/decorators/host-attr.js";
|
|
@@ -40,7 +40,7 @@ var C = class extends v {
|
|
|
40
40
|
static {
|
|
41
41
|
this.metadata = {
|
|
42
42
|
tag: "nve-control",
|
|
43
|
-
version: "0.0.
|
|
43
|
+
version: "0.0.4"
|
|
44
44
|
};
|
|
45
45
|
}
|
|
46
46
|
render() {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { tagSelector as e } from "../../internal/utils/dom.js";
|
|
2
2
|
import { associateAriaDescribedBy as t, associateAriaLabel as n, associateControlGroup as r, attachInternals as i } from "../../internal/utils/a11y.js";
|
|
3
|
-
import { __decorate as a } from "../../_virtual/_@oxc-project_runtime@0.
|
|
3
|
+
import { __decorate as a } from "../../_virtual/_@oxc-project_runtime@0.123.0/helpers/decorate.js";
|
|
4
4
|
import { useStyles as o } from "../../internal/styles/index.js";
|
|
5
5
|
import { inputQuery as s, setupControlGroupStates as c, setupControlStatusStates as l } from "../utils/states.js";
|
|
6
6
|
import { setupControlLayoutStates as u } from "../utils/layout.js";
|
|
@@ -25,7 +25,7 @@ var h = class extends f {
|
|
|
25
25
|
static {
|
|
26
26
|
this.metadata = {
|
|
27
27
|
tag: "nve-control-group",
|
|
28
|
-
version: "0.0.
|
|
28
|
+
version: "0.0.4"
|
|
29
29
|
};
|
|
30
30
|
}
|
|
31
31
|
render() {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __decorate as e } from "../../_virtual/_@oxc-project_runtime@0.
|
|
1
|
+
import { __decorate as e } from "../../_virtual/_@oxc-project_runtime@0.123.0/helpers/decorate.js";
|
|
2
2
|
import { hostAttr as t } from "../../internal/decorators/host-attr.js";
|
|
3
3
|
import { scopedRegistry as n } from "../../internal/decorators/scoped-registry.js";
|
|
4
4
|
import { useStyles as r } from "../../internal/styles/index.js";
|
|
@@ -23,7 +23,7 @@ var l = {
|
|
|
23
23
|
static {
|
|
24
24
|
this.metadata = {
|
|
25
25
|
tag: "nve-control-message",
|
|
26
|
-
version: "0.0.
|
|
26
|
+
version: "0.0.4"
|
|
27
27
|
};
|
|
28
28
|
}
|
|
29
29
|
static {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forms.examples.js","names":[],"sources":["../../src/forms/forms.examples.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html } from 'lit';\nimport '@nvidia-elements/core/forms/define.js';\nimport '@nvidia-elements/core/button/define.js';\nimport '@nvidia-elements/core/icon-button/define.js';\nimport '@nvidia-elements/core/password/define.js';\nimport '@nvidia-elements/core/input/define.js';\nimport '@nvidia-elements/core/search/define.js';\nimport '@nvidia-elements/core/checkbox/define.js';\nimport '@nvidia-elements/core/radio/define.js';\nimport '@nvidia-elements/core/range/define.js';\nimport '@nvidia-elements/core/time/define.js';\nimport '@nvidia-elements/core/date/define.js';\nimport '@nvidia-elements/core/color/define.js';\nimport '@nvidia-elements/core/datetime/define.js';\nimport '@nvidia-elements/core/select/define.js';\nimport '@nvidia-elements/core/switch/define.js';\nimport '@nvidia-elements/core/week/define.js';\nimport '@nvidia-elements/core/file/define.js';\nimport '@nvidia-elements/core/month/define.js';\nimport '@nvidia-elements/core/textarea/define.js';\n\nexport default {\n title: 'Elements/Forms',\n component: 'forms'\n}\n\n/**\n * @summary Comprehensive showcase of all form controls in a grid layout, including input types, states, and advanced patterns for complete form design reference.\n */\nexport const KitchenSink = {\n render: () => html`\n<div style=\"display: grid; gap: 36px 48px; grid-template-columns: 1fr 1fr; max-width: 1400px;\">\n <nve-input layout=\"vertical-inline\">\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-search layout=\"vertical-inline\">\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n\n <nve-password layout=\"vertical-inline\">\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n\n <nve-select layout=\"vertical-inline\">\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-date layout=\"vertical-inline\">\n <label>date label</label>\n <input type=\"date\" />\n <nve-control-message>message</nve-control-message>\n </nve-date>\n\n <nve-datetime layout=\"vertical-inline\">\n <label>datetime label</label>\n <input type=\"datetime-local\" />\n <nve-control-message>message</nve-control-message>\n </nve-datetime>\n\n <nve-month layout=\"vertical-inline\">\n <label>month label</label>\n <input type=\"month\" />\n <nve-control-message>message</nve-control-message>\n </nve-month>\n\n <nve-week layout=\"vertical-inline\">\n <label>week label</label>\n <input type=\"week\" />\n <nve-control-message>message</nve-control-message>\n </nve-week>\n\n <nve-time layout=\"vertical-inline\">\n <label>time label</label>\n <input type=\"time\" />\n <nve-control-message>message</nve-control-message>\n </nve-time>\n\n <nve-color layout=\"vertical-inline\">\n <label>color label</label>\n <input type=\"color\" />\n <nve-control-message>message</nve-control-message>\n </nve-color>\n\n <nve-input layout=\"vertical-inline\">\n <label>prefix/suffix label</label>\n <nve-button container=\"flat\" readonly>https://</nve-button>\n <input type=\"text\" />\n <nve-button container=\"flat\" readonly>.com</nve-button>\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-input layout=\"vertical-inline\">\n <label>actions label</label>\n <nve-icon-button icon-name=\"search\" container=\"flat\" readonly></nve-icon-button>\n <input type=\"text\" />\n <nve-icon-button icon-name=\"cancel\" container=\"flat\" aria-label=\"clear\"></nve-icon-button>\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-input-group layout=\"vertical-inline\">\n <label>date range</label>\n <nve-date>\n <input type=\"date\" aria-label=\"start date\" value=\"2018-07-22\" />\n </nve-date>\n <nve-date>\n <input type=\"date\" aria-label=\"end date\" value=\"2022-07-22\" />\n </nve-date>\n <nve-control-message>message</nve-control-message>\n </nve-input-group>\n\n <nve-input-group layout=\"vertical-inline\">\n <label>domain</label>\n <nve-select style=\"width: 120px\">\n <select aria-label=\"protocol\">\n <option>https://</option>\n <option>http://</option>\n </select>\n </nve-select>\n <nve-input>\n <input placeholder=\"example\" aria-label=\"host\" />\n <nve-button container=\"flat\" readonly=\"\">.com</nve-button>\n </nve-input>\n <nve-control-message>Host ID: 123456</nve-control-message>\n </nve-input-group>\n\n <nve-range layout=\"vertical-inline\">\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n\n <nve-checkbox-group layout=\"vertical-inline\">\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n\n <nve-radio-group layout=\"vertical-inline\">\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n\n <nve-switch-group layout=\"vertical-inline\">\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n\n <nve-select layout=\"vertical-inline\">\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-textarea layout=\"vertical-inline\">\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n\n <nve-file>\n <label>file label</label>\n <input type=\"file\" />\n <nve-control-message>message</nve-control-message>\n </nve-file>\n\n <nve-search rounded>\n <input type=\"search\" aria-label=\"search\" placeholder=\"search\" />\n <datalist>\n <option value=\"search result 1\"></option>\n <option value=\"search result 2\"></option>\n <option value=\"search result 3\"></option>\n </datalist>\n </nve-search>\n\n <nve-input layout=\"vertical-inline\">\n <label>disabled</label>\n <input disabled />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-input layout=\"vertical-inline\">\n <label>success</label>\n <input />\n <nve-control-message status=\"success\">message</nve-control-message>\n </nve-input>\n\n <nve-input layout=\"vertical-inline\">\n <label>error</label>\n <input />\n <nve-control-message status=\"error\">message</nve-control-message>\n </nve-input>\n</div>\n `\n}\n\n/**\n * @summary Traditional vertical form layout with labels above inputs, providing clear visual hierarchy and optimal readability for complex forms.\n */\nexport const Vertical = () => {\n return html`\n<div nve-layout=\"column gap:lg full\">\n <nve-input>\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-search>\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n\n <nve-password>\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n\n <nve-select>\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-range>\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n\n <nve-checkbox-group>\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n\n <nve-radio-group>\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n\n <nve-switch-group>\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n\n <nve-select>\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-textarea>\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n</div>\n `;\n};\n\n/**\n * @summary Compact vertical layout with inline labels and controls, maximizing space efficiency while maintaining form clarity and accessibility.\n */\nexport const VerticalInline = () => {\n return html`\n<div nve-layout=\"column gap:lg full\">\n <nve-input layout=\"vertical-inline\">\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-search layout=\"vertical-inline\">\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n\n <nve-password layout=\"vertical-inline\">\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n\n <nve-select layout=\"vertical-inline\">\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-range layout=\"vertical-inline\">\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n\n <nve-checkbox-group layout=\"vertical-inline\">\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n\n <nve-radio-group layout=\"vertical-inline\">\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n\n <nve-switch-group layout=\"vertical-inline\">\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n\n <nve-select layout=\"vertical-inline\">\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-textarea layout=\"vertical-inline\">\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n</div>\n `;\n};\n\n/**\n * @summary Horizontal form layout with labels beside inputs, creating efficient use of horizontal space and familiar desktop form patterns.\n */\nexport const Horizontal = () => {\n return html`\n<div nve-layout=\"column gap:lg full\">\n <nve-input layout=\"horizontal\">\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-search layout=\"horizontal\">\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n\n <nve-password layout=\"horizontal\">\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n\n <nve-select layout=\"horizontal\">\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-range layout=\"horizontal\">\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n\n <nve-checkbox-group layout=\"horizontal\">\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n\n <nve-radio-group layout=\"horizontal\">\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n\n <nve-switch-group layout=\"horizontal\">\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n\n <nve-select layout=\"horizontal\">\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-textarea layout=\"horizontal\">\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n</div>\n `;\n};\n\n/**\n * @summary Space-efficient horizontal layout with inline labels, ideal for dense forms with tight vertical space where quick scanning matters.\n */\nexport const HorizontalInline = () => {\n return html`\n<div nve-layout=\"column gap:lg full\">\n <nve-input layout=\"horizontal-inline\">\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-search layout=\"horizontal-inline\">\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n\n <nve-password layout=\"horizontal-inline\">\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n\n <nve-select layout=\"horizontal-inline\">\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-range layout=\"horizontal-inline\">\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n\n <nve-checkbox-group layout=\"horizontal-inline\">\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n\n <nve-radio-group layout=\"horizontal-inline\">\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n\n <nve-switch-group layout=\"horizontal-inline\">\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n\n <nve-select layout=\"horizontal-inline\">\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-textarea layout=\"horizontal-inline\">\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n</div>\n `;\n};\n\n/**\n * @summary Form controls that automatically adjust their width to fit content, optimizing space usage for dynamic or variable-length inputs.\n * @tags test-case\n */\nexport const FitText = {\n render: () => html`\n<section nve-layout=\"column gap:md full\">\n <nve-date fit-text>\n <label>date</label>\n <input type=\"date\" value=\"2017-06-01\" />\n <nve-control-message>message</nve-control-message>\n </nve-date>\n\n <nve-input fit-text>\n <label>label</label>\n <input value=\"123456789012345678901234567890\" />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-select fit-text>\n <label>label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 1234</option>\n <option value=\"3\">Option 1234567809</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n</section>\n`\n};\n\n/**\n * @summary Hidden status icon on the control message in form controls.\n * @tags test-case\n */\nexport const HiddenMessageIcon = {\n render: () => html`\n<style>\n .hidden-icon::part(icon) {\n display: none;\n }\n</style>\n<nve-switch-group style=\"width: 200px\">\n <nve-switch>\n <label>default</label>\n <input type=\"checkbox\" />\n <nve-control-message class=\"hidden-icon\">hidden icon control message</nve-control-message>\n </nve-switch>\n <nve-switch>\n <label>success</label>\n <input type=\"checkbox\" />\n <nve-control-message class=\"hidden-icon\" status=\"success\">hidden icon control message</nve-control-message>\n </nve-switch>\n <nve-switch>\n <label>error</label>\n <input type=\"checkbox\" />\n <nve-control-message class=\"hidden-icon\" status=\"error\">hidden icon control message</nve-control-message>\n </nve-switch>\n <nve-switch>\n <label>warning</label>\n <input type=\"checkbox\" />\n <nve-control-message class=\"hidden-icon\" status=\"warning\">hidden icon control message</nve-control-message>\n </nve-switch>\n</nve-switch-group>\n`\n}\n\n/**\n * @summary Use the prominence muted state to lower visual weight of controls in forms.\n */\nexport const ProminenceMuted = {\n render: () => html`\n<div nve-layout=\"row gap:lg\">\n <div nve-layout=\"column gap:lg pad:lg\">\n <nve-radio-group prominence=\"muted\">\n <label>label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n </nve-radio-group>\n\n <nve-checkbox-group prominence=\"muted\">\n <label>label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n </nve-checkbox-group>\n\n <nve-switch-group prominence=\"muted\">\n <label>label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" />\n </nve-switch>\n <nve-switch>\n <label>switch 3</label>\n <input type=\"checkbox\" />\n </nve-switch>\n </nve-switch-group>\n\n <nve-range prominence=\"muted\">\n <label>label</label>\n <input type=\"range\" />\n </nve-range>\n </div>\n <nve-card>\n <nve-card-content>\n <div nve-layout=\"column gap:lg pad:lg\">\n <nve-radio-group prominence=\"muted\">\n <label>label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n </nve-radio-group>\n\n <nve-checkbox-group prominence=\"muted\">\n <label>label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n </nve-checkbox-group>\n\n <nve-switch-group prominence=\"muted\">\n <label>label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" />\n </nve-switch>\n <nve-switch>\n <label>switch 3</label>\n <input type=\"checkbox\" />\n </nve-switch>\n </nve-switch-group>\n\n <nve-range prominence=\"muted\">\n <label>label</label>\n <input type=\"range\" />\n </nve-range>\n </div>\n </nve-card-content>\n </nve-card>\n</div>\n`\n}"],"mappings":";AAGA,IAAA,IAAS"}
|
|
1
|
+
{"version":3,"file":"forms.examples.js","names":[],"sources":["../../src/forms/forms.examples.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html } from 'lit';\nimport '@nvidia-elements/core/forms/define.js';\nimport '@nvidia-elements/core/button/define.js';\nimport '@nvidia-elements/core/icon-button/define.js';\nimport '@nvidia-elements/core/password/define.js';\nimport '@nvidia-elements/core/input/define.js';\nimport '@nvidia-elements/core/search/define.js';\nimport '@nvidia-elements/core/checkbox/define.js';\nimport '@nvidia-elements/core/radio/define.js';\nimport '@nvidia-elements/core/range/define.js';\nimport '@nvidia-elements/core/time/define.js';\nimport '@nvidia-elements/core/date/define.js';\nimport '@nvidia-elements/core/color/define.js';\nimport '@nvidia-elements/core/datetime/define.js';\nimport '@nvidia-elements/core/select/define.js';\nimport '@nvidia-elements/core/switch/define.js';\nimport '@nvidia-elements/core/week/define.js';\nimport '@nvidia-elements/core/file/define.js';\nimport '@nvidia-elements/core/month/define.js';\nimport '@nvidia-elements/core/textarea/define.js';\n\nexport default {\n title: 'Elements/Forms',\n component: 'forms'\n}\n\n/**\n * @summary Comprehensive showcase of all form controls in a grid layout, including input types, states, and advanced patterns use for a complete form design reference.\n * @tags pattern\n */\nexport const KitchenSink = {\n render: () => html`\n<div style=\"display: grid; gap: 36px 48px; grid-template-columns: 1fr 1fr; max-width: 1400px;\">\n <nve-input layout=\"vertical-inline\">\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-search layout=\"vertical-inline\">\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n\n <nve-password layout=\"vertical-inline\">\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n\n <nve-select layout=\"vertical-inline\">\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-date layout=\"vertical-inline\">\n <label>date label</label>\n <input type=\"date\" />\n <nve-control-message>message</nve-control-message>\n </nve-date>\n\n <nve-datetime layout=\"vertical-inline\">\n <label>datetime label</label>\n <input type=\"datetime-local\" />\n <nve-control-message>message</nve-control-message>\n </nve-datetime>\n\n <nve-month layout=\"vertical-inline\">\n <label>month label</label>\n <input type=\"month\" />\n <nve-control-message>message</nve-control-message>\n </nve-month>\n\n <nve-week layout=\"vertical-inline\">\n <label>week label</label>\n <input type=\"week\" />\n <nve-control-message>message</nve-control-message>\n </nve-week>\n\n <nve-time layout=\"vertical-inline\">\n <label>time label</label>\n <input type=\"time\" />\n <nve-control-message>message</nve-control-message>\n </nve-time>\n\n <nve-color layout=\"vertical-inline\">\n <label>color label</label>\n <input type=\"color\" />\n <nve-control-message>message</nve-control-message>\n </nve-color>\n\n <nve-input layout=\"vertical-inline\">\n <label>prefix/suffix label</label>\n <nve-button container=\"flat\" readonly>https://</nve-button>\n <input type=\"text\" />\n <nve-button container=\"flat\" readonly>.com</nve-button>\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-input layout=\"vertical-inline\">\n <label>actions label</label>\n <nve-icon-button icon-name=\"search\" container=\"flat\" readonly></nve-icon-button>\n <input type=\"text\" />\n <nve-icon-button icon-name=\"cancel\" container=\"flat\" aria-label=\"clear\"></nve-icon-button>\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-input-group layout=\"vertical-inline\">\n <label>date range</label>\n <nve-date>\n <input type=\"date\" aria-label=\"start date\" value=\"2018-07-22\" />\n </nve-date>\n <nve-date>\n <input type=\"date\" aria-label=\"end date\" value=\"2022-07-22\" />\n </nve-date>\n <nve-control-message>message</nve-control-message>\n </nve-input-group>\n\n <nve-input-group layout=\"vertical-inline\">\n <label>domain</label>\n <nve-select style=\"width: 120px\">\n <select aria-label=\"protocol\">\n <option>https://</option>\n <option>http://</option>\n </select>\n </nve-select>\n <nve-input>\n <input placeholder=\"example\" aria-label=\"host\" />\n <nve-button container=\"flat\" readonly=\"\">.com</nve-button>\n </nve-input>\n <nve-control-message>Host ID: 123456</nve-control-message>\n </nve-input-group>\n\n <nve-range layout=\"vertical-inline\">\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n\n <nve-checkbox-group layout=\"vertical-inline\">\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n\n <nve-radio-group layout=\"vertical-inline\">\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n\n <nve-switch-group layout=\"vertical-inline\">\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n\n <nve-select layout=\"vertical-inline\">\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-textarea layout=\"vertical-inline\">\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n\n <nve-file>\n <label>file label</label>\n <input type=\"file\" />\n <nve-control-message>message</nve-control-message>\n </nve-file>\n\n <nve-search rounded>\n <input type=\"search\" aria-label=\"search\" placeholder=\"search\" />\n <datalist>\n <option value=\"search result 1\"></option>\n <option value=\"search result 2\"></option>\n <option value=\"search result 3\"></option>\n </datalist>\n </nve-search>\n\n <nve-input layout=\"vertical-inline\">\n <label>disabled</label>\n <input disabled />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-input layout=\"vertical-inline\">\n <label>success</label>\n <input />\n <nve-control-message status=\"success\">message</nve-control-message>\n </nve-input>\n\n <nve-input layout=\"vertical-inline\">\n <label>error</label>\n <input />\n <nve-control-message status=\"error\">message</nve-control-message>\n </nve-input>\n</div>\n `\n}\n\n/**\n * @summary Traditional vertical form layout with labels above inputs, providing clear visual hierarchy and optimal readability for complex forms.\n */\nexport const Vertical = () => {\n return html`\n<div nve-layout=\"column gap:lg full\">\n <nve-input>\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-search>\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n\n <nve-password>\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n\n <nve-select>\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-range>\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n\n <nve-checkbox-group>\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n\n <nve-radio-group>\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n\n <nve-switch-group>\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n\n <nve-select>\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-textarea>\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n</div>\n `;\n};\n\n/**\n * @summary Compact vertical layout with inline labels and controls, maximizing space efficiency while maintaining form clarity and accessibility.\n */\nexport const VerticalInline = () => {\n return html`\n<div nve-layout=\"column gap:lg full\">\n <nve-input layout=\"vertical-inline\">\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-search layout=\"vertical-inline\">\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n\n <nve-password layout=\"vertical-inline\">\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n\n <nve-select layout=\"vertical-inline\">\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-range layout=\"vertical-inline\">\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n\n <nve-checkbox-group layout=\"vertical-inline\">\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n\n <nve-radio-group layout=\"vertical-inline\">\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n\n <nve-switch-group layout=\"vertical-inline\">\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n\n <nve-select layout=\"vertical-inline\">\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-textarea layout=\"vertical-inline\">\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n</div>\n `;\n};\n\n/**\n * @summary Horizontal form layout with labels beside inputs, creating efficient use of horizontal space and familiar desktop form patterns.\n */\nexport const Horizontal = () => {\n return html`\n<div nve-layout=\"column gap:lg full\">\n <nve-input layout=\"horizontal\">\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-search layout=\"horizontal\">\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n\n <nve-password layout=\"horizontal\">\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n\n <nve-select layout=\"horizontal\">\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-range layout=\"horizontal\">\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n\n <nve-checkbox-group layout=\"horizontal\">\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n\n <nve-radio-group layout=\"horizontal\">\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n\n <nve-switch-group layout=\"horizontal\">\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n\n <nve-select layout=\"horizontal\">\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-textarea layout=\"horizontal\">\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n</div>\n `;\n};\n\n/**\n * @summary Space-efficient horizontal layout with inline labels, ideal for dense forms with tight vertical space where quick scanning matters.\n */\nexport const HorizontalInline = () => {\n return html`\n<div nve-layout=\"column gap:lg full\">\n <nve-input layout=\"horizontal-inline\">\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-search layout=\"horizontal-inline\">\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n\n <nve-password layout=\"horizontal-inline\">\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n\n <nve-select layout=\"horizontal-inline\">\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-range layout=\"horizontal-inline\">\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n\n <nve-checkbox-group layout=\"horizontal-inline\">\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n\n <nve-radio-group layout=\"horizontal-inline\">\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n\n <nve-switch-group layout=\"horizontal-inline\">\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n\n <nve-select layout=\"horizontal-inline\">\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-textarea layout=\"horizontal-inline\">\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n</div>\n `;\n};\n\n/**\n * @summary Form controls that automatically adjust their width to fit content, optimizing space usage for dynamic or variable-length inputs.\n * @tags test-case\n */\nexport const FitText = {\n render: () => html`\n<section nve-layout=\"column gap:md full\">\n <nve-date fit-text>\n <label>date</label>\n <input type=\"date\" value=\"2017-06-01\" />\n <nve-control-message>message</nve-control-message>\n </nve-date>\n\n <nve-input fit-text>\n <label>label</label>\n <input value=\"123456789012345678901234567890\" />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-select fit-text>\n <label>label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 1234</option>\n <option value=\"3\">Option 1234567809</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n</section>\n`\n};\n\n/**\n * @summary Hidden status icon on the control message in form controls.\n * @tags test-case\n */\nexport const HiddenMessageIcon = {\n render: () => html`\n<style>\n .hidden-icon::part(icon) {\n display: none;\n }\n</style>\n<nve-switch-group style=\"width: 200px\">\n <nve-switch>\n <label>default</label>\n <input type=\"checkbox\" />\n <nve-control-message class=\"hidden-icon\">hidden icon control message</nve-control-message>\n </nve-switch>\n <nve-switch>\n <label>success</label>\n <input type=\"checkbox\" />\n <nve-control-message class=\"hidden-icon\" status=\"success\">hidden icon control message</nve-control-message>\n </nve-switch>\n <nve-switch>\n <label>error</label>\n <input type=\"checkbox\" />\n <nve-control-message class=\"hidden-icon\" status=\"error\">hidden icon control message</nve-control-message>\n </nve-switch>\n <nve-switch>\n <label>warning</label>\n <input type=\"checkbox\" />\n <nve-control-message class=\"hidden-icon\" status=\"warning\">hidden icon control message</nve-control-message>\n </nve-switch>\n</nve-switch-group>\n`\n}\n\n/**\n * @summary Use the prominence muted state to lower visual weight of controls in forms.\n */\nexport const ProminenceMuted = {\n render: () => html`\n<div nve-layout=\"row gap:lg\">\n <div nve-layout=\"column gap:lg pad:lg\">\n <nve-radio-group prominence=\"muted\">\n <label>label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n </nve-radio-group>\n\n <nve-checkbox-group prominence=\"muted\">\n <label>label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n </nve-checkbox-group>\n\n <nve-switch-group prominence=\"muted\">\n <label>label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" />\n </nve-switch>\n <nve-switch>\n <label>switch 3</label>\n <input type=\"checkbox\" />\n </nve-switch>\n </nve-switch-group>\n\n <nve-range prominence=\"muted\">\n <label>label</label>\n <input type=\"range\" />\n </nve-range>\n </div>\n <nve-card>\n <nve-card-content>\n <div nve-layout=\"column gap:lg pad:lg\">\n <nve-radio-group prominence=\"muted\">\n <label>label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n </nve-radio-group>\n\n <nve-checkbox-group prominence=\"muted\">\n <label>label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n </nve-checkbox-group>\n\n <nve-switch-group prominence=\"muted\">\n <label>label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" />\n </nve-switch>\n <nve-switch>\n <label>switch 3</label>\n <input type=\"checkbox\" />\n </nve-switch>\n </nve-switch-group>\n\n <nve-range prominence=\"muted\">\n <label>label</label>\n <input type=\"range\" />\n </nve-range>\n </div>\n </nve-card-content>\n </nve-card>\n</div>\n`\n}"],"mappings":";AAGA,IAAA,IAAS"}
|
|
@@ -6,10 +6,12 @@
|
|
|
6
6
|
"id": "core-forms_kitchen-sink",
|
|
7
7
|
"name": "KitchenSink",
|
|
8
8
|
"template": "<div style=\"display: grid; gap: 36px 48px; grid-template-columns: 1fr 1fr; max-width: 1400px\">\n <nve-input layout=\"vertical-inline\">\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n <nve-search layout=\"vertical-inline\">\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n <nve-password layout=\"vertical-inline\">\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n <nve-select layout=\"vertical-inline\">\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n <nve-date layout=\"vertical-inline\">\n <label>date label</label>\n <input type=\"date\" />\n <nve-control-message>message</nve-control-message>\n </nve-date>\n <nve-datetime layout=\"vertical-inline\">\n <label>datetime label</label>\n <input type=\"datetime-local\" />\n <nve-control-message>message</nve-control-message>\n </nve-datetime>\n <nve-month layout=\"vertical-inline\">\n <label>month label</label>\n <input type=\"month\" />\n <nve-control-message>message</nve-control-message>\n </nve-month>\n <nve-week layout=\"vertical-inline\">\n <label>week label</label>\n <input type=\"week\" />\n <nve-control-message>message</nve-control-message>\n </nve-week>\n <nve-time layout=\"vertical-inline\">\n <label>time label</label>\n <input type=\"time\" />\n <nve-control-message>message</nve-control-message>\n </nve-time>\n <nve-color layout=\"vertical-inline\">\n <label>color label</label>\n <input type=\"color\" />\n <nve-control-message>message</nve-control-message>\n </nve-color>\n <nve-input layout=\"vertical-inline\">\n <label>prefix/suffix label</label>\n <nve-button container=\"flat\" readonly>https://</nve-button>\n <input type=\"text\" />\n <nve-button container=\"flat\" readonly>.com</nve-button>\n <nve-control-message>message</nve-control-message>\n </nve-input>\n <nve-input layout=\"vertical-inline\">\n <label>actions label</label>\n <nve-icon-button icon-name=\"search\" container=\"flat\" readonly></nve-icon-button>\n <input type=\"text\" />\n <nve-icon-button icon-name=\"cancel\" container=\"flat\" aria-label=\"clear\"></nve-icon-button>\n <nve-control-message>message</nve-control-message>\n </nve-input>\n <nve-input-group layout=\"vertical-inline\">\n <label>date range</label>\n <nve-date>\n <input type=\"date\" aria-label=\"start date\" value=\"2018-07-22\" />\n </nve-date>\n <nve-date>\n <input type=\"date\" aria-label=\"end date\" value=\"2022-07-22\" />\n </nve-date>\n <nve-control-message>message</nve-control-message>\n </nve-input-group>\n <nve-input-group layout=\"vertical-inline\">\n <label>domain</label>\n <nve-select style=\"width: 120px\">\n <select aria-label=\"protocol\">\n <option>https://</option>\n <option>http://</option>\n </select>\n </nve-select>\n <nve-input>\n <input placeholder=\"example\" aria-label=\"host\" />\n <nve-button container=\"flat\" readonly>.com</nve-button>\n </nve-input>\n <nve-control-message>Host ID: 123456</nve-control-message>\n </nve-input-group>\n <nve-range layout=\"vertical-inline\">\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n <nve-checkbox-group layout=\"vertical-inline\">\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n <nve-radio-group layout=\"vertical-inline\">\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n <nve-switch-group layout=\"vertical-inline\">\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n <nve-select layout=\"vertical-inline\">\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n <nve-textarea layout=\"vertical-inline\">\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n <nve-file>\n <label>file label</label>\n <input type=\"file\" />\n <nve-control-message>message</nve-control-message>\n </nve-file>\n <nve-search rounded>\n <input type=\"search\" aria-label=\"search\" placeholder=\"search\" />\n <datalist>\n <option value=\"search result 1\"></option>\n <option value=\"search result 2\"></option>\n <option value=\"search result 3\"></option>\n </datalist>\n </nve-search>\n <nve-input layout=\"vertical-inline\">\n <label>disabled</label>\n <input disabled />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n <nve-input layout=\"vertical-inline\">\n <label>success</label>\n <input />\n <nve-control-message status=\"success\">message</nve-control-message>\n </nve-input>\n <nve-input layout=\"vertical-inline\">\n <label>error</label>\n <input />\n <nve-control-message status=\"error\">message</nve-control-message>\n </nve-input>\n</div>\n",
|
|
9
|
-
"summary": "Comprehensive showcase of all form controls in a grid layout, including input types, states, and advanced patterns for complete form design reference.",
|
|
9
|
+
"summary": "Comprehensive showcase of all form controls in a grid layout, including input types, states, and advanced patterns use for a complete form design reference.",
|
|
10
10
|
"description": "",
|
|
11
11
|
"composition": true,
|
|
12
|
-
"tags": [
|
|
12
|
+
"tags": [
|
|
13
|
+
"pattern"
|
|
14
|
+
]
|
|
13
15
|
},
|
|
14
16
|
{
|
|
15
17
|
"id": "core-forms_vertical",
|
package/dist/grid/cell/cell2.js
CHANGED
|
@@ -48,5 +48,6 @@ export declare class GridColumn extends LitElement {
|
|
|
48
48
|
_internals: ElementInternals;
|
|
49
49
|
render(): import('lit-html').TemplateResult<1>;
|
|
50
50
|
connectedCallback(): void;
|
|
51
|
+
willUpdate(props: PropertyValues<this>): void;
|
|
51
52
|
updated(props: PropertyValues<this>): Promise<void>;
|
|
52
53
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { appendRootNodeStyle as e, tagSelector as t } from "../../internal/utils/dom.js";
|
|
2
2
|
import { attachInternals as n } from "../../internal/utils/a11y.js";
|
|
3
|
-
import { __decorate as r } from "../../_virtual/_@oxc-project_runtime@0.
|
|
3
|
+
import { __decorate as r } from "../../_virtual/_@oxc-project_runtime@0.123.0/helpers/decorate.js";
|
|
4
4
|
import { useStyles as i } from "../../internal/styles/index.js";
|
|
5
5
|
import a from "./column.js";
|
|
6
6
|
import { LitElement as o, html as s } from "lit";
|
|
@@ -13,7 +13,7 @@ var l = class r extends o {
|
|
|
13
13
|
static {
|
|
14
14
|
this.metadata = {
|
|
15
15
|
tag: "nve-grid-column",
|
|
16
|
-
version: "0.0.
|
|
16
|
+
version: "0.0.4"
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
19
|
get #e() {
|
|
@@ -25,6 +25,9 @@ var l = class r extends o {
|
|
|
25
25
|
connectedCallback() {
|
|
26
26
|
super.connectedCallback(), n(this), this._internals.role = "columnheader", this.addEventListener("sort", ((e) => this.ariaSort = e.detail.next));
|
|
27
27
|
}
|
|
28
|
+
willUpdate(e) {
|
|
29
|
+
e.has("width") && this.width && Number.isFinite(Number(this.width)) && (this.width = `${this.width}px`);
|
|
30
|
+
}
|
|
28
31
|
async updated(e) {
|
|
29
32
|
super.updated(e), e.get("columnAlign") !== this.columnAlign && this.#a(), e.get("position") !== this.position && this.#n(), e.get("ariaColIndex") !== this.ariaColIndex && (this.#n(), this.#a()), e.get("width") !== this.width && this.dispatchEvent(new CustomEvent("nve-grid-column-resize", {
|
|
30
33
|
bubbles: !0,
|