@ds-mo/ui 14.19.1 → 14.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.package-ready.json +1 -1
- package/dist/agent-patterns.json +1 -1
- package/dist/agent.json +405 -36
- package/dist/angular/ds-chip.d.ts +1 -1
- package/dist/angular/ds-chip.js +3 -3
- package/dist/angular/ds-filter-menu.d.ts +7 -1
- package/dist/angular/ds-filter-menu.js +7 -4
- package/dist/angular/ds-input.d.ts +1 -1
- package/dist/angular/ds-input.js +3 -3
- package/dist/angular/ds-tab-group.d.ts +1 -1
- package/dist/angular/ds-tab-group.js +3 -3
- package/dist/angular/ds-table-filter.d.ts +7 -1
- package/dist/angular/ds-table-filter.js +7 -4
- package/dist/angular/ds-table-group.d.ts +29 -0
- package/dist/angular/ds-table-group.js +48 -0
- package/dist/angular/ds-table-search.d.ts +20 -0
- package/dist/angular/ds-table-search.js +49 -0
- package/dist/angular/ds-table.d.ts +1 -1
- package/dist/angular/ds-table.js +3 -3
- package/dist/angular/index.d.ts +1 -1
- package/dist/angular/index.js +2 -0
- package/dist/angular/proxies.d.ts +2 -0
- package/dist/angular/proxies.js +2 -0
- package/dist/components/ds-agent-activity.js +1 -1
- package/dist/components/ds-agent-questionnaire.js +1 -1
- package/dist/components/ds-agent-response.js +1 -1
- package/dist/components/ds-agent-source-list.js +1 -1
- package/dist/components/ds-agent-tool-call.js +1 -1
- package/dist/components/ds-attachment-list.js +1 -1
- package/dist/components/ds-badge.js +1 -1
- package/dist/components/ds-banner.js +1 -1
- package/dist/components/ds-bar-action.js +1 -1
- package/dist/components/ds-bar-nav.js +1 -1
- package/dist/components/ds-bar-title.js +1 -1
- package/dist/components/ds-bar-workflow.js +1 -1
- package/dist/components/ds-breadcrumb.js +1 -1
- package/dist/components/ds-button-filled.js +1 -1
- package/dist/components/ds-button-unfilled.js +1 -1
- package/dist/components/ds-card-chart.js +1 -1
- package/dist/components/ds-card-overview.js +1 -1
- package/dist/components/ds-card-setting.js +1 -1
- package/dist/components/ds-chart-legend.js +1 -1
- package/dist/components/ds-chart.js +1 -1
- package/dist/components/ds-checkbox.js +1 -1
- package/dist/components/ds-chip.js +1 -1
- package/dist/components/ds-chip.js.map +1 -1
- package/dist/components/ds-code-block.js +1 -1
- package/dist/components/ds-conversation-list-item.js +1 -1
- package/dist/components/ds-conversation-list-section.js +1 -1
- package/dist/components/ds-empty-state.js +1 -1
- package/dist/components/ds-field.js +1 -1
- package/dist/components/ds-filter-menu.js +1 -1
- package/dist/components/ds-input.js +1 -1
- package/dist/components/ds-markdown.js +1 -1
- package/dist/components/ds-menu.js +1 -1
- package/dist/components/ds-message-actions.js +1 -1
- package/dist/components/ds-message-composer.js +1 -1
- package/dist/components/ds-message-scroller.js +1 -1
- package/dist/components/ds-message-scroller.js.map +1 -1
- package/dist/components/ds-message.js +1 -1
- package/dist/components/ds-mobile-bar-nav.js +1 -1
- package/dist/components/ds-mobile-header.js +1 -1
- package/dist/components/ds-mobile-section-switcher.js +1 -1
- package/dist/components/ds-mobile-sheet-nav.js +1 -1
- package/dist/components/ds-modal.js +1 -1
- package/dist/components/ds-pagination.js +1 -1
- package/dist/components/ds-panel-nav.js +1 -1
- package/dist/components/ds-panel-sub-nav.js +1 -1
- package/dist/components/ds-panel-tool-header.js +1 -1
- package/dist/components/ds-panel-tool-search.js +1 -1
- package/dist/components/ds-panel-tool-search.js.map +1 -1
- package/dist/components/ds-panel-tools.js +1 -1
- package/dist/components/ds-paper-texture.js +1 -1
- package/dist/components/ds-radio.js +1 -1
- package/dist/components/ds-select.js +1 -1
- package/dist/components/ds-shell-app.js +1 -1
- package/dist/components/ds-shell-page.js +1 -1
- package/dist/components/ds-shell-tools.js +1 -1
- package/dist/components/ds-slider.js +1 -1
- package/dist/components/ds-swatch-picker.js +1 -1
- package/dist/components/ds-tab-group.js +1 -1
- package/dist/components/ds-table-filter.js +1 -1
- package/dist/components/ds-table-filter.js.map +1 -1
- package/dist/components/ds-table-group.d.ts +11 -0
- package/dist/components/ds-table-group.js +2 -0
- package/dist/components/ds-table-group.js.map +1 -0
- package/dist/components/ds-table-saved-views.js +1 -1
- package/dist/components/ds-table-search.d.ts +11 -0
- package/dist/components/ds-table-search.js +2 -0
- package/dist/components/ds-table-search.js.map +1 -0
- package/dist/components/ds-table-sort.js +1 -1
- package/dist/components/ds-table-sort.js.map +1 -1
- package/dist/components/ds-table-toolbar.js +1 -1
- package/dist/components/ds-table-toolbar.js.map +1 -1
- package/dist/components/ds-table.js +1 -1
- package/dist/components/ds-table.js.map +1 -1
- package/dist/components/ds-tag.js +1 -1
- package/dist/components/ds-text.js +1 -1
- package/dist/components/ds-toast.js +1 -1
- package/dist/components/ds-tooltip-chart.js +1 -1
- package/dist/components/ds-tooltip.js +1 -1
- package/dist/components/ds-typing-indicator.js +1 -1
- package/dist/components/{p-Bf7PZJPT.js → p-5Z4oYuiK.js} +2 -2
- package/dist/components/{p-DsgEY6mZ.js → p-6rB0eAda.js} +2 -2
- package/dist/components/{p-DZv2g9Pe.js → p-9ykZwPlI.js} +2 -2
- package/dist/components/{p-BHhmB9-4.js → p-B0kSlcaw.js} +2 -2
- package/dist/components/{p-BmlGeaY8.js → p-B1wMpt1z.js} +2 -2
- package/dist/components/p-BEttT0UB.js +2 -0
- package/dist/components/p-BEttT0UB.js.map +1 -0
- package/dist/components/p-BFit8o0r.js +2 -0
- package/dist/components/p-BFit8o0r.js.map +1 -0
- package/dist/components/{p-fRDzpfi9.js → p-BXv6RpoF.js} +2 -2
- package/dist/components/{p-CFsLF-ts.js → p-BbG7nOcz.js} +2 -2
- package/dist/components/{p-vrotWZxt.js → p-Bc_z1UwJ.js} +2 -2
- package/dist/components/{p-Bx5BSd6F.js → p-BcxidW9k.js} +2 -2
- package/dist/components/{p-BNq9fr9S.js → p-Bd8I2oXN.js} +2 -2
- package/dist/components/{p-D-MWvpg6.js → p-Bjq1KP_Y.js} +2 -2
- package/dist/components/p-Bjq1KP_Y.js.map +1 -0
- package/dist/components/{p-DW5Ita-P.js → p-BnTPuV3x.js} +2 -2
- package/dist/components/{p-DW5Ita-P.js.map → p-BnTPuV3x.js.map} +1 -1
- package/dist/components/p-BqVXMEJm.js +2 -0
- package/dist/components/p-BqVXMEJm.js.map +1 -0
- package/dist/components/{p-DdH7b4JF.js → p-CBymzuOO.js} +2 -2
- package/dist/components/{p-BjRD57w3.js → p-CE2b5GPu.js} +2 -2
- package/dist/components/{p-CRSwNbPk.js → p-CEnoPUn5.js} +2 -2
- package/dist/components/p-CFkZSDwI.js +2 -0
- package/dist/components/{p-CKtJ6FHM.js.map → p-CFkZSDwI.js.map} +1 -1
- package/dist/components/{p-Bb4KnRy0.js → p-CTH3dSYg.js} +2 -2
- package/dist/components/{p-1YHFQeI7.js → p-CUL5_8JM.js} +2 -2
- package/dist/components/{p-BubgDQlb.js → p-CZ144LS5.js} +2 -2
- package/dist/components/{p-B-HsfQOK.js → p-Cd1JnnVK.js} +2 -2
- package/dist/components/p-CeKa4VbU.js +2 -0
- package/dist/components/{p-Crz606uD.js.map → p-CeKa4VbU.js.map} +1 -1
- package/dist/components/{p-Bx1IHqJb.js → p-Cnsvgx1M.js} +2 -2
- package/dist/components/{p-BYFS2qWb.js → p-CpeJMKJ5.js} +2 -2
- package/dist/components/{p-Cxr0IQjC.js → p-CzbsTZt7.js} +2 -2
- package/dist/components/{p-D7v6Na7U.js → p-D36EmETH.js} +2 -2
- package/dist/components/{p-DFC0sRM-.js → p-DI8DUozc.js} +2 -2
- package/dist/components/{p-DIqT1m2r.js → p-DSy1oOnd.js} +2 -2
- package/dist/components/{p-DIqT1m2r.js.map → p-DSy1oOnd.js.map} +1 -1
- package/dist/components/{p-DQBT1Jkf.js → p-DbLLH3hr.js} +2 -2
- package/dist/components/{p-Drnyq8z7.js → p-Dit6JmAK.js} +2 -2
- package/dist/components/{p-caLOcQUK.js → p-DzPtYdXy.js} +2 -2
- package/dist/components/{p-Do8wbFff.js → p-XaCYqck3.js} +2 -2
- package/dist/components/{p-DKt_8s-U.js → p-Y5_MkCFn.js} +2 -2
- package/dist/components/{p-DBYCwq9L.js → p-YDxDyedE.js} +2 -2
- package/dist/components/{p-DmWoFSGs.js → p-_C-XRpCB.js} +2 -2
- package/dist/components/{p-Demfba7T.js → p-bHnk8t5I.js} +2 -2
- package/dist/components/p-hYjmOPCI.js +2 -0
- package/dist/components/p-hYjmOPCI.js.map +1 -0
- package/dist/components/{p-ChfVRPHw.js → p-pUOA3iDG.js} +2 -2
- package/dist/components/p-pnO8tAYB.js +2 -0
- package/dist/components/{p-Cp5Hr7Vz.js.map → p-pnO8tAYB.js.map} +1 -1
- package/dist/components/{p-B6WQre5D.js → p-pxN8JGEh.js} +2 -2
- package/dist/components/p-pxN8JGEh.js.map +1 -0
- package/dist/components/{p-BWwiCvep.js → p-rw0ZxIE4.js} +2 -2
- package/dist/components/{p-B4wTnsUL.js → p-w9fkkwL2.js} +2 -2
- package/dist/components/p-x5u5Ueli.js +2 -0
- package/dist/components/{p-BeA6Jv-3.js.map → p-x5u5Ueli.js.map} +1 -1
- package/dist/docs/components.json +1400 -44
- package/dist/lib/utils/date-filter-value.d.ts +57 -0
- package/dist/lib/utils/index.d.ts +2 -0
- package/dist/lib/utils/index.js +67 -0
- package/dist/lib/utils/index.js.map +3 -3
- package/dist/mcp-data/registry/button-filled.json +1 -0
- package/dist/mcp-data/registry/button-unfilled.json +1 -0
- package/dist/mcp-data/registry/chip.json +39 -2
- package/dist/mcp-data/registry/filter-menu.json +134 -14
- package/dist/mcp-data/registry/input.json +54 -2
- package/dist/mcp-data/registry/panel-tool-search.json +4 -5
- package/dist/mcp-data/registry/registry.json +410 -35
- package/dist/mcp-data/registry/select.json +1 -0
- package/dist/mcp-data/registry/tab-group.json +21 -2
- package/dist/mcp-data/registry/table-filter.json +83 -11
- package/dist/mcp-data/registry/table-group.json +301 -0
- package/dist/mcp-data/registry/table-search.json +343 -0
- package/dist/mcp-data/registry/table-sort.json +1 -1
- package/dist/mcp-data/registry/table-toolbar.json +7 -6
- package/dist/mcp-data/registry/table.json +55 -17
- package/dist/react/components.d.ts +2 -0
- package/dist/react/components.js +2 -0
- package/dist/react/ds-filter-menu.d.ts +2 -1
- package/dist/react/ds-filter-menu.js +1 -0
- package/dist/react/ds-table-filter.d.ts +2 -1
- package/dist/react/ds-table-filter.js +1 -0
- package/dist/react/ds-table-group.d.ts +14 -0
- package/dist/react/ds-table-group.js +16 -0
- package/dist/react/ds-table-search.d.ts +14 -0
- package/dist/react/ds-table-search.js +16 -0
- package/dist/styles/table.css +46 -0
- package/dist/types/components/Chip/Chip.d.ts +5 -0
- package/dist/types/components/FilterMenu/FilterMenu.d.ts +46 -1
- package/dist/types/components/FilterMenu/filter-menu-calendar.d.ts +13 -0
- package/dist/types/components/Input/Input.d.ts +6 -0
- package/dist/types/components/TabGroup/TabGroup.d.ts +2 -0
- package/dist/types/components/Table/Table.d.ts +6 -0
- package/dist/types/components/Table/index.d.ts +1 -1
- package/dist/types/components/Table/table-cell-model.d.ts +11 -1
- package/dist/types/components/Table/table-highlight.d.ts +12 -0
- package/dist/types/components/Table/table-model.d.ts +6 -5
- package/dist/types/components/Table/table-render-model.d.ts +1 -1
- package/dist/types/components/Table/table-row-view.d.ts +4 -1
- package/dist/types/components/Table/table-types.d.ts +22 -4
- package/dist/types/components/Table/table-virtual-model.d.ts +2 -0
- package/dist/types/components/TableFilter/TableFilter.d.ts +9 -1
- package/dist/types/components/TableGroup/TableGroup.d.ts +60 -0
- package/dist/types/components/TableSearch/TableSearch.d.ts +56 -0
- package/dist/types/components/TableSearch/table-search-model.d.ts +10 -0
- package/dist/types/components/TableSearch/table-search-types.d.ts +10 -0
- package/dist/types/components.d.ts +410 -8
- package/dist/types/utils/choice-list-parts.d.ts +11 -1
- package/dist/types/utils/date-filter-value.d.ts +58 -0
- package/dist/types/utils/index.d.ts +2 -0
- package/dist/types/utils/select-controller.d.ts +1 -1
- package/dist/vue/components.d.ts +2 -0
- package/dist/vue/components.js +2 -0
- package/dist/vue/ds-chip.js +2 -0
- package/dist/vue/ds-filter-menu.js +7 -0
- package/dist/vue/ds-input.js +3 -0
- package/dist/vue/ds-tab-group.js +1 -0
- package/dist/vue/ds-table-filter.js +5 -0
- package/dist/vue/ds-table-group.d.ts +3 -0
- package/dist/vue/ds-table-group.js +20 -0
- package/dist/vue/ds-table-search.d.ts +3 -0
- package/dist/vue/ds-table-search.js +22 -0
- package/dist/vue/ds-table.js +2 -0
- package/package.json +1 -1
- package/dist/components/p-B6WQre5D.js.map +0 -1
- package/dist/components/p-BeA6Jv-3.js +0 -2
- package/dist/components/p-CKtJ6FHM.js +0 -2
- package/dist/components/p-Cp5Hr7Vz.js +0 -2
- package/dist/components/p-CpUXubax.js +0 -2
- package/dist/components/p-CpUXubax.js.map +0 -1
- package/dist/components/p-Crz606uD.js +0 -2
- package/dist/components/p-D-MWvpg6.js.map +0 -1
- package/dist/components/p-DA5H_Iq_.js +0 -2
- package/dist/components/p-DA5H_Iq_.js.map +0 -1
- package/dist/components/p-Djxw2FjZ.js +0 -2
- package/dist/components/p-Djxw2FjZ.js.map +0 -1
- /package/dist/components/{p-Bf7PZJPT.js.map → p-5Z4oYuiK.js.map} +0 -0
- /package/dist/components/{p-DsgEY6mZ.js.map → p-6rB0eAda.js.map} +0 -0
- /package/dist/components/{p-DZv2g9Pe.js.map → p-9ykZwPlI.js.map} +0 -0
- /package/dist/components/{p-BHhmB9-4.js.map → p-B0kSlcaw.js.map} +0 -0
- /package/dist/components/{p-BmlGeaY8.js.map → p-B1wMpt1z.js.map} +0 -0
- /package/dist/components/{p-fRDzpfi9.js.map → p-BXv6RpoF.js.map} +0 -0
- /package/dist/components/{p-CFsLF-ts.js.map → p-BbG7nOcz.js.map} +0 -0
- /package/dist/components/{p-vrotWZxt.js.map → p-Bc_z1UwJ.js.map} +0 -0
- /package/dist/components/{p-Bx5BSd6F.js.map → p-BcxidW9k.js.map} +0 -0
- /package/dist/components/{p-BNq9fr9S.js.map → p-Bd8I2oXN.js.map} +0 -0
- /package/dist/components/{p-DdH7b4JF.js.map → p-CBymzuOO.js.map} +0 -0
- /package/dist/components/{p-BjRD57w3.js.map → p-CE2b5GPu.js.map} +0 -0
- /package/dist/components/{p-CRSwNbPk.js.map → p-CEnoPUn5.js.map} +0 -0
- /package/dist/components/{p-Bb4KnRy0.js.map → p-CTH3dSYg.js.map} +0 -0
- /package/dist/components/{p-1YHFQeI7.js.map → p-CUL5_8JM.js.map} +0 -0
- /package/dist/components/{p-BubgDQlb.js.map → p-CZ144LS5.js.map} +0 -0
- /package/dist/components/{p-B-HsfQOK.js.map → p-Cd1JnnVK.js.map} +0 -0
- /package/dist/components/{p-Bx1IHqJb.js.map → p-Cnsvgx1M.js.map} +0 -0
- /package/dist/components/{p-BYFS2qWb.js.map → p-CpeJMKJ5.js.map} +0 -0
- /package/dist/components/{p-Cxr0IQjC.js.map → p-CzbsTZt7.js.map} +0 -0
- /package/dist/components/{p-D7v6Na7U.js.map → p-D36EmETH.js.map} +0 -0
- /package/dist/components/{p-DFC0sRM-.js.map → p-DI8DUozc.js.map} +0 -0
- /package/dist/components/{p-DQBT1Jkf.js.map → p-DbLLH3hr.js.map} +0 -0
- /package/dist/components/{p-Drnyq8z7.js.map → p-Dit6JmAK.js.map} +0 -0
- /package/dist/components/{p-caLOcQUK.js.map → p-DzPtYdXy.js.map} +0 -0
- /package/dist/components/{p-Do8wbFff.js.map → p-XaCYqck3.js.map} +0 -0
- /package/dist/components/{p-DKt_8s-U.js.map → p-Y5_MkCFn.js.map} +0 -0
- /package/dist/components/{p-DBYCwq9L.js.map → p-YDxDyedE.js.map} +0 -0
- /package/dist/components/{p-DmWoFSGs.js.map → p-_C-XRpCB.js.map} +0 -0
- /package/dist/components/{p-Demfba7T.js.map → p-bHnk8t5I.js.map} +0 -0
- /package/dist/components/{p-ChfVRPHw.js.map → p-pUOA3iDG.js.map} +0 -0
- /package/dist/components/{p-BWwiCvep.js.map → p-rw0ZxIE4.js.map} +0 -0
- /package/dist/components/{p-B4wTnsUL.js.map → p-w9fkkwL2.js.map} +0 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export declare const DATE_FILTER_RELATIVE_PRESETS: readonly [{
|
|
2
|
+
readonly label: "Today";
|
|
3
|
+
readonly value: "today";
|
|
4
|
+
readonly days: 1;
|
|
5
|
+
readonly offset: 0;
|
|
6
|
+
}, {
|
|
7
|
+
readonly label: "Yesterday";
|
|
8
|
+
readonly value: "yesterday";
|
|
9
|
+
readonly days: 1;
|
|
10
|
+
readonly offset: -1;
|
|
11
|
+
}, {
|
|
12
|
+
readonly label: "Last 7 days";
|
|
13
|
+
readonly value: "last-7-days";
|
|
14
|
+
readonly days: 7;
|
|
15
|
+
readonly offset: 0;
|
|
16
|
+
}, {
|
|
17
|
+
readonly label: "Last 14 days";
|
|
18
|
+
readonly value: "last-14-days";
|
|
19
|
+
readonly days: 14;
|
|
20
|
+
readonly offset: 0;
|
|
21
|
+
}, {
|
|
22
|
+
readonly label: "Last 30 days";
|
|
23
|
+
readonly value: "last-30-days";
|
|
24
|
+
readonly days: 30;
|
|
25
|
+
readonly offset: 0;
|
|
26
|
+
}, {
|
|
27
|
+
readonly label: "Last 60 days";
|
|
28
|
+
readonly value: "last-60-days";
|
|
29
|
+
readonly days: 60;
|
|
30
|
+
readonly offset: 0;
|
|
31
|
+
}, {
|
|
32
|
+
readonly label: "Last 90 days";
|
|
33
|
+
readonly value: "last-90-days";
|
|
34
|
+
readonly days: 90;
|
|
35
|
+
readonly offset: 0;
|
|
36
|
+
}];
|
|
37
|
+
export type DateFilterRelativePreset = (typeof DATE_FILTER_RELATIVE_PRESETS)[number]['value'];
|
|
38
|
+
export type DateFilterRelativeValue = `relative:${DateFilterRelativePreset}`;
|
|
39
|
+
export type DateFilterRangeValue = `range:${string}/${string}`;
|
|
40
|
+
export type DateFilterValue = DateFilterRelativeValue | DateFilterRangeValue;
|
|
41
|
+
export interface DateFilterRange {
|
|
42
|
+
start: string;
|
|
43
|
+
end: string;
|
|
44
|
+
}
|
|
45
|
+
export type ParsedDateFilterValue = {
|
|
46
|
+
kind: 'relative';
|
|
47
|
+
preset: DateFilterRelativePreset;
|
|
48
|
+
} | ({
|
|
49
|
+
kind: 'range';
|
|
50
|
+
} & DateFilterRange);
|
|
51
|
+
export declare function isIsoCalendarDate(value: string): boolean;
|
|
52
|
+
export declare function shiftIsoCalendarDate(value: string, days: number): string;
|
|
53
|
+
export declare function dateFilterRelativeValue(preset: DateFilterRelativePreset): DateFilterRelativeValue;
|
|
54
|
+
export declare function dateFilterRangeValue(start: string, end?: string): DateFilterRangeValue;
|
|
55
|
+
export declare function parseDateFilterValue(value: unknown): ParsedDateFilterValue | null;
|
|
56
|
+
export declare function normalizeDateFilterValue(value: unknown): DateFilterValue | '';
|
|
57
|
+
export declare function resolveDateFilterRange(value: unknown, referenceDate: string): DateFilterRange | null;
|
|
@@ -25,3 +25,5 @@ export { CONTROL_SUPPORTING_TEXT_VARIANT, CONTROL_TEXT_VARIANT } from './control
|
|
|
25
25
|
export type { ControlInsetDepth, ControlSize } from './control-text';
|
|
26
26
|
export { choicePopupMinWidth, resolveChoicePopupAlignOffset } from './choice-popup-alignment';
|
|
27
27
|
export type { ChoicePopupAnchorAlignment } from './choice-popup-alignment';
|
|
28
|
+
export { DATE_FILTER_RELATIVE_PRESETS, dateFilterRangeValue, dateFilterRelativeValue, isIsoCalendarDate, normalizeDateFilterValue, parseDateFilterValue, resolveDateFilterRange, shiftIsoCalendarDate, } from './date-filter-value';
|
|
29
|
+
export type { DateFilterRange, DateFilterRangeValue, DateFilterRelativePreset, DateFilterRelativeValue, DateFilterValue, ParsedDateFilterValue, } from './date-filter-value';
|
package/dist/lib/utils/index.js
CHANGED
|
@@ -1057,9 +1057,69 @@ function resolveChoicePopupAlignOffset({
|
|
|
1057
1057
|
function choicePopupMinWidth(anchorWidth, sectionInsetPx) {
|
|
1058
1058
|
return anchorWidth + sectionInsetPx * 2;
|
|
1059
1059
|
}
|
|
1060
|
+
|
|
1061
|
+
// src/wc/utils/date-filter-value.ts
|
|
1062
|
+
var DATE_FILTER_RELATIVE_PRESETS = [
|
|
1063
|
+
{ label: "Today", value: "today", days: 1, offset: 0 },
|
|
1064
|
+
{ label: "Yesterday", value: "yesterday", days: 1, offset: -1 },
|
|
1065
|
+
{ label: "Last 7 days", value: "last-7-days", days: 7, offset: 0 },
|
|
1066
|
+
{ label: "Last 14 days", value: "last-14-days", days: 14, offset: 0 },
|
|
1067
|
+
{ label: "Last 30 days", value: "last-30-days", days: 30, offset: 0 },
|
|
1068
|
+
{ label: "Last 60 days", value: "last-60-days", days: 60, offset: 0 },
|
|
1069
|
+
{ label: "Last 90 days", value: "last-90-days", days: 90, offset: 0 }
|
|
1070
|
+
];
|
|
1071
|
+
var ISO_DATE_PATTERN = /^\d{4}-\d{2}-\d{2}$/;
|
|
1072
|
+
function isIsoCalendarDate(value) {
|
|
1073
|
+
if (!ISO_DATE_PATTERN.test(value)) return false;
|
|
1074
|
+
const [year, month, day] = value.split("-").map(Number);
|
|
1075
|
+
const date = new Date(Date.UTC(year, month - 1, day));
|
|
1076
|
+
return date.getUTCFullYear() === year && date.getUTCMonth() === month - 1 && date.getUTCDate() === day;
|
|
1077
|
+
}
|
|
1078
|
+
function shiftIsoCalendarDate(value, days) {
|
|
1079
|
+
if (!isIsoCalendarDate(value)) return "";
|
|
1080
|
+
const [year, month, day] = value.split("-").map(Number);
|
|
1081
|
+
const date = new Date(Date.UTC(year, month - 1, day + days));
|
|
1082
|
+
return date.toISOString().slice(0, 10);
|
|
1083
|
+
}
|
|
1084
|
+
function dateFilterRelativeValue(preset) {
|
|
1085
|
+
return `relative:${preset}`;
|
|
1086
|
+
}
|
|
1087
|
+
function dateFilterRangeValue(start, end = start) {
|
|
1088
|
+
const ordered = start <= end ? [start, end] : [end, start];
|
|
1089
|
+
return `range:${ordered[0]}/${ordered[1]}`;
|
|
1090
|
+
}
|
|
1091
|
+
function parseDateFilterValue(value) {
|
|
1092
|
+
if (typeof value !== "string" || !value) return null;
|
|
1093
|
+
if (value.startsWith("relative:")) {
|
|
1094
|
+
const preset = value.slice("relative:".length);
|
|
1095
|
+
return DATE_FILTER_RELATIVE_PRESETS.some((candidate) => candidate.value === preset) ? { kind: "relative", preset } : null;
|
|
1096
|
+
}
|
|
1097
|
+
if (value.startsWith("range:")) {
|
|
1098
|
+
const [start, end, ...rest] = value.slice("range:".length).split("/");
|
|
1099
|
+
if (rest.length || !isIsoCalendarDate(start) || !isIsoCalendarDate(end)) return null;
|
|
1100
|
+
return start <= end ? { kind: "range", start, end } : { kind: "range", start: end, end: start };
|
|
1101
|
+
}
|
|
1102
|
+
return isIsoCalendarDate(value) ? { kind: "range", start: value, end: value } : null;
|
|
1103
|
+
}
|
|
1104
|
+
function normalizeDateFilterValue(value) {
|
|
1105
|
+
const parsed = parseDateFilterValue(value);
|
|
1106
|
+
if (!parsed) return "";
|
|
1107
|
+
return parsed.kind === "relative" ? dateFilterRelativeValue(parsed.preset) : dateFilterRangeValue(parsed.start, parsed.end);
|
|
1108
|
+
}
|
|
1109
|
+
function resolveDateFilterRange(value, referenceDate) {
|
|
1110
|
+
if (!isIsoCalendarDate(referenceDate)) return null;
|
|
1111
|
+
const parsed = parseDateFilterValue(value);
|
|
1112
|
+
if (!parsed) return null;
|
|
1113
|
+
if (parsed.kind === "range") return { start: parsed.start, end: parsed.end };
|
|
1114
|
+
const preset = DATE_FILTER_RELATIVE_PRESETS.find((candidate) => candidate.value === parsed.preset);
|
|
1115
|
+
if (!preset) return null;
|
|
1116
|
+
const end = shiftIsoCalendarDate(referenceDate, preset.offset);
|
|
1117
|
+
return { start: shiftIsoCalendarDate(end, -(preset.days - 1)), end };
|
|
1118
|
+
}
|
|
1060
1119
|
export {
|
|
1061
1120
|
CONTROL_SUPPORTING_TEXT_VARIANT,
|
|
1062
1121
|
CONTROL_TEXT_VARIANT,
|
|
1122
|
+
DATE_FILTER_RELATIVE_PRESETS,
|
|
1063
1123
|
DEFAULT_REQUIRED_MESSAGE,
|
|
1064
1124
|
SCROLL_EDGE_FADE_DEFAULT_SIZE,
|
|
1065
1125
|
SCROLL_EDGE_FADE_SIZE_VAR,
|
|
@@ -1080,16 +1140,21 @@ export {
|
|
|
1080
1140
|
computeMetricChange,
|
|
1081
1141
|
controlWidthClass,
|
|
1082
1142
|
cumulativeBins,
|
|
1143
|
+
dateFilterRangeValue,
|
|
1144
|
+
dateFilterRelativeValue,
|
|
1083
1145
|
defineChart,
|
|
1084
1146
|
densityX,
|
|
1085
1147
|
dot,
|
|
1086
1148
|
formatCompactNumber,
|
|
1087
1149
|
formatPercentage,
|
|
1088
1150
|
isElementTruncated,
|
|
1151
|
+
isIsoCalendarDate,
|
|
1089
1152
|
isScrollAtEdge,
|
|
1090
1153
|
lineY,
|
|
1154
|
+
normalizeDateFilterValue,
|
|
1091
1155
|
normalizeStack,
|
|
1092
1156
|
parseCssTimeMs,
|
|
1157
|
+
parseDateFilterValue,
|
|
1093
1158
|
pieLayout,
|
|
1094
1159
|
polar,
|
|
1095
1160
|
prefersReducedMotion,
|
|
@@ -1101,6 +1166,7 @@ export {
|
|
|
1101
1166
|
resolveChoicePopupAlignOffset,
|
|
1102
1167
|
resolveCssLengthPx,
|
|
1103
1168
|
resolveCssTimeMs,
|
|
1169
|
+
resolveDateFilterRange,
|
|
1104
1170
|
resolveMetricTrend,
|
|
1105
1171
|
resolveMotionTimeMs,
|
|
1106
1172
|
resolveSafeUrl,
|
|
@@ -1117,6 +1183,7 @@ export {
|
|
|
1117
1183
|
setFormControlValue,
|
|
1118
1184
|
setRepeatedFormControlValue,
|
|
1119
1185
|
setRequiredValidity,
|
|
1186
|
+
shiftIsoCalendarDate,
|
|
1120
1187
|
textMark,
|
|
1121
1188
|
truncateSvgTextToWidth
|
|
1122
1189
|
};
|