@ds-mo/ui 14.11.0 → 14.12.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.
Files changed (137) hide show
  1. package/dist/.package-ready.json +1 -1
  2. package/dist/agent-patterns.json +1 -1
  3. package/dist/agent.json +17 -9
  4. package/dist/angular/ds-pagination.d.ts +1 -1
  5. package/dist/angular/ds-pagination.js +3 -3
  6. package/dist/angular/ds-table.d.ts +1 -1
  7. package/dist/angular/ds-table.js +3 -3
  8. package/dist/components/ds-agent-questionnaire.js +1 -1
  9. package/dist/components/ds-agent-response.js +1 -1
  10. package/dist/components/ds-badge.js +1 -1
  11. package/dist/components/ds-banner.js +1 -1
  12. package/dist/components/ds-bar-nav.js +1 -1
  13. package/dist/components/ds-bar-title.js +1 -1
  14. package/dist/components/ds-bar-workflow.js +1 -1
  15. package/dist/components/ds-button-filled.js +1 -1
  16. package/dist/components/ds-button-unfilled.js +1 -1
  17. package/dist/components/ds-card-chart.js +1 -1
  18. package/dist/components/ds-card-setting.js +1 -1
  19. package/dist/components/ds-code-block.js +1 -1
  20. package/dist/components/ds-conversation-list-item.js +1 -1
  21. package/dist/components/ds-conversation-list-item.js.map +1 -1
  22. package/dist/components/ds-filter-menu.js +1 -1
  23. package/dist/components/ds-filter-menu.js.map +1 -1
  24. package/dist/components/ds-input.js +1 -1
  25. package/dist/components/ds-markdown.js +1 -1
  26. package/dist/components/ds-menu.js +1 -1
  27. package/dist/components/ds-message-actions.js +1 -1
  28. package/dist/components/ds-message-composer.js +1 -1
  29. package/dist/components/ds-message-scroller.js +1 -1
  30. package/dist/components/ds-mobile-bar-nav.js +1 -1
  31. package/dist/components/ds-mobile-header.js +1 -1
  32. package/dist/components/ds-mobile-section-switcher.js +1 -1
  33. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  34. package/dist/components/ds-modal.js +1 -1
  35. package/dist/components/ds-pagination.js +1 -1
  36. package/dist/components/ds-panel-nav.js +1 -1
  37. package/dist/components/ds-panel-tool-header.js +1 -1
  38. package/dist/components/ds-panel-tool-search.js +1 -1
  39. package/dist/components/ds-panel-tools.js +1 -1
  40. package/dist/components/ds-select.js +1 -1
  41. package/dist/components/ds-shell-app.js +1 -1
  42. package/dist/components/ds-shell-app.js.map +1 -1
  43. package/dist/components/ds-shell-tools.js +1 -1
  44. package/dist/components/ds-tab-group.js +1 -1
  45. package/dist/components/ds-table-saved-views.js +1 -1
  46. package/dist/components/ds-table-saved-views.js.map +1 -1
  47. package/dist/components/ds-table.js +1 -1
  48. package/dist/components/ds-table.js.map +1 -1
  49. package/dist/components/ds-toast.js +1 -1
  50. package/dist/components/{p-Bv1CFHgD.js → p-BAStZzJu.js} +2 -2
  51. package/dist/components/p-BEvBJ65v.js +2 -0
  52. package/dist/components/p-BEvBJ65v.js.map +1 -0
  53. package/dist/components/p-BHNFoHay.js +2 -0
  54. package/dist/components/p-BHNFoHay.js.map +1 -0
  55. package/dist/components/{p-CqbMoVDQ.js → p-BZ3UTshV.js} +2 -2
  56. package/dist/components/{p-BuGGwWmt.js → p-Bubs1_8P.js} +2 -2
  57. package/dist/components/{p-DvJkkdIO.js → p-BxqBiVbH.js} +2 -2
  58. package/dist/components/p-BzLnSwG9.js +2 -0
  59. package/dist/components/p-BzLnSwG9.js.map +1 -0
  60. package/dist/components/{p-CbfmzgdW.js → p-BzObtSlo.js} +2 -2
  61. package/dist/components/{p-c_5SXjwx.js → p-C7rzVotG.js} +2 -2
  62. package/dist/components/{p-bQm3gfr1.js → p-CKJzHclc.js} +2 -2
  63. package/dist/components/{p-BPnmiiIS.js → p-CjgnFGd6.js} +2 -2
  64. package/dist/components/p-CnWC0QvG.js +2 -0
  65. package/dist/components/p-CnWC0QvG.js.map +1 -0
  66. package/dist/components/p-CooNucm0.js +2 -0
  67. package/dist/components/p-CooNucm0.js.map +1 -0
  68. package/dist/components/{p-CoQSB3tl.js → p-Ct-m0I6U.js} +2 -2
  69. package/dist/components/{p-D5VglrfF.js → p-D1Nqlrrl.js} +2 -2
  70. package/dist/components/{p-C-L4InQ0.js → p-DSuAHQRk.js} +2 -2
  71. package/dist/components/p-Dh_p8OzP.js +2 -0
  72. package/dist/components/p-Dh_p8OzP.js.map +1 -0
  73. package/dist/components/{p-CvwtYbmh.js → p-Dsn1RCS5.js} +2 -2
  74. package/dist/components/{p-BCg_6ErW.js → p-GdlSIpHV.js} +2 -2
  75. package/dist/components/{p-D5bPuNiF.js → p-M9DPfXbP.js} +2 -2
  76. package/dist/components/{p-1tOy4H51.js → p-V2ywPfsR.js} +2 -2
  77. package/dist/components/{p-BVmKcpyP.js → p-iBuPFJL9.js} +2 -2
  78. package/dist/components/p-vWK5faWZ.js +2 -0
  79. package/dist/components/p-vWK5faWZ.js.map +1 -0
  80. package/dist/docs/components.json +63 -5
  81. package/dist/lib/shell/index.js.map +2 -2
  82. package/dist/lib/shell/shell-responsive.d.ts +1 -1
  83. package/dist/mcp-data/registry/filter-menu.json +1 -1
  84. package/dist/mcp-data/registry/menu.json +1 -1
  85. package/dist/mcp-data/registry/pagination.json +21 -3
  86. package/dist/mcp-data/registry/panel-tools.json +1 -1
  87. package/dist/mcp-data/registry/registry.json +16 -8
  88. package/dist/mcp-data/registry/select.json +2 -2
  89. package/dist/mcp-data/registry/shell-app.json +3 -3
  90. package/dist/mcp-data/registry/shell-tools.json +2 -2
  91. package/dist/mcp-data/registry/table-saved-views.json +6 -6
  92. package/dist/mcp-data/registry/table.json +32 -14
  93. package/dist/styles/table.css +5 -0
  94. package/dist/types/components/Pagination/Pagination.d.ts +2 -0
  95. package/dist/types/components/Pagination/pagination-types.d.ts +2 -0
  96. package/dist/types/components/PanelTools/PanelTools.d.ts +1 -0
  97. package/dist/types/components/ShellApp/ShellApp.d.ts +0 -2
  98. package/dist/types/components/Table/Table.d.ts +19 -1
  99. package/dist/types/components/Table/table-layout-controller.d.ts +7 -1
  100. package/dist/types/components/Table/table-model.d.ts +8 -0
  101. package/dist/types/components/Table/table-viewport-fit-controller.d.ts +5 -1
  102. package/dist/types/components/Table/table-virtual-controller.d.ts +14 -1
  103. package/dist/types/components/Table/table-virtual-model.d.ts +26 -1
  104. package/dist/types/components/TableSavedViews/TableSavedViews.d.ts +1 -1
  105. package/dist/types/components.d.ts +26 -4
  106. package/dist/types/shell/shell-responsive.d.ts +1 -1
  107. package/package.json +1 -1
  108. package/dist/components/p-BFSnIEsC.js +0 -2
  109. package/dist/components/p-BFSnIEsC.js.map +0 -1
  110. package/dist/components/p-BiTwXttN.js +0 -2
  111. package/dist/components/p-BiTwXttN.js.map +0 -1
  112. package/dist/components/p-BmWWU20X.js +0 -2
  113. package/dist/components/p-BmWWU20X.js.map +0 -1
  114. package/dist/components/p-C-Zgq_Fx.js +0 -2
  115. package/dist/components/p-C-Zgq_Fx.js.map +0 -1
  116. package/dist/components/p-C1jsgfeh.js +0 -2
  117. package/dist/components/p-C1jsgfeh.js.map +0 -1
  118. package/dist/components/p-D8nnhQNJ.js +0 -2
  119. package/dist/components/p-D8nnhQNJ.js.map +0 -1
  120. package/dist/components/p-DNpE0RBz.js +0 -2
  121. package/dist/components/p-DNpE0RBz.js.map +0 -1
  122. /package/dist/components/{p-Bv1CFHgD.js.map → p-BAStZzJu.js.map} +0 -0
  123. /package/dist/components/{p-CqbMoVDQ.js.map → p-BZ3UTshV.js.map} +0 -0
  124. /package/dist/components/{p-BuGGwWmt.js.map → p-Bubs1_8P.js.map} +0 -0
  125. /package/dist/components/{p-DvJkkdIO.js.map → p-BxqBiVbH.js.map} +0 -0
  126. /package/dist/components/{p-CbfmzgdW.js.map → p-BzObtSlo.js.map} +0 -0
  127. /package/dist/components/{p-c_5SXjwx.js.map → p-C7rzVotG.js.map} +0 -0
  128. /package/dist/components/{p-bQm3gfr1.js.map → p-CKJzHclc.js.map} +0 -0
  129. /package/dist/components/{p-BPnmiiIS.js.map → p-CjgnFGd6.js.map} +0 -0
  130. /package/dist/components/{p-CoQSB3tl.js.map → p-Ct-m0I6U.js.map} +0 -0
  131. /package/dist/components/{p-D5VglrfF.js.map → p-D1Nqlrrl.js.map} +0 -0
  132. /package/dist/components/{p-C-L4InQ0.js.map → p-DSuAHQRk.js.map} +0 -0
  133. /package/dist/components/{p-CvwtYbmh.js.map → p-Dsn1RCS5.js.map} +0 -0
  134. /package/dist/components/{p-BCg_6ErW.js.map → p-GdlSIpHV.js.map} +0 -0
  135. /package/dist/components/{p-D5bPuNiF.js.map → p-M9DPfXbP.js.map} +0 -0
  136. /package/dist/components/{p-1tOy4H51.js.map → p-V2ywPfsR.js.map} +0 -0
  137. /package/dist/components/{p-BVmKcpyP.js.map → p-iBuPFJL9.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"names":["tableSavedViewsCss","tableSavedViewsId","TableSavedViews","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","views","value","dirty","defaultViewId","defaultViewLabel","label","triggerLabel","createLabel","actionViewId","actionMenuOpen","actionMenuInitialFocusVisible","dialogOpen","dialogMode","dialogViewId","nameDraft","nameError","componentId","selectId","actionMenuId","fieldId","inputId","actionItems","isDestructive","selectedCustomView","find","view","id","dialogView","sections","custom","map","subtextActions","tone","undefined","action","controls","expanded","templates","header","options","divider","length","handleViewChange","dsViewChange","emit","viewId","handleSubtextAction","detail","actionValue","dsViewSave","dsViewDiscard","handleOptionAction","some","originalEvent","actionAnchorId","anchorId","handleActionSelect","event","openDialog","dsViewRemove","mode","item","requestAnimationFrame","input","el","querySelector","setFocus","validateName","name","trim","duplicate","toLocaleLowerCase","submitDialog","error","dsViewRename","dsViewCreate","finishDialogClose","select","render","h","Host","key","size","placeholder","triggerLabelPlaceholder","dot","footerActionLabel","activeFill","allowClear","onDsChange","onDsFooterAction","onDsOptionSubtextAction","onDsOptionAction","menuLabel","side","align","menuWidth","minWidth","items","open","initialFocusVisible","onDsClose","onDsAfterClose","onDsSelect","heading","modalWidth","errorMessage","autoFocus","onKeyDown","slot","class","onDsClick"],"sources":["src/wc/components/TableSavedViews/TableSavedViews.css?tag=ds-table-saved-views&encapsulation=scoped","src/wc/components/TableSavedViews/TableSavedViews.tsx"],"sourcesContent":[":host {\n --ds-choice-popup-min-inline-size: var(--dimension-menu-width-sm);\n\n display: inline-block;\n min-inline-size: 0;\n}\n\nds-select {\n display: block;\n}\n\n.table-saved-views__dialog-actions {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: var(--dimension-space-100);\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n State,\n} from '@stencil/core';\nimport type { MenuItemData } from '../Menu/menu-types';\nimport type {\n SelectOptionActionDetail,\n SelectOptionSubtextActionDetail,\n SelectValue,\n} from '../Select/Select';\nimport type {\n TableSavedView,\n TableSavedViewChangeDetail,\n TableSavedViewCreateDetail,\n TableSavedViewDiscardDetail,\n TableSavedViewRemoveDetail,\n TableSavedViewRenameDetail,\n TableSavedViewSaveDetail,\n} from './table-saved-views-types';\n\ntype SavedViewDialogMode = 'create' | 'rename';\n\nlet tableSavedViewsId = 0;\n\n@Component({\n tag: 'ds-table-saved-views',\n styleUrl: 'TableSavedViews.css',\n scoped: true,\n})\nexport class TableSavedViews {\n @Element() el!: HTMLElement;\n\n /** Application-owned custom saved views. Assign arrays through the JavaScript property. */\n @Prop() views: TableSavedView[] = [];\n /** ID of the controlled active view, including the default view ID. */\n @Prop() value: string = '__default__';\n /** Whether the current table state differs from the selected view. */\n @Prop() dirty: boolean = false;\n /** ID used for the built-in default view. */\n @Prop() defaultViewId: string = '__default__';\n /** Label used for the built-in default view. */\n @Prop() defaultViewLabel: string = 'Default';\n /** Accessible name for the saved-views select. */\n @Prop() label: string = 'Saved views';\n /** Trigger label shown while the default view is selected. */\n @Prop() triggerLabel: string = 'Views';\n /** Footer action label that opens the create-view dialog. */\n @Prop() createLabel: string = 'New view';\n\n /** Emitted when a view selection is requested. */\n @Event() dsViewChange!: EventEmitter<TableSavedViewChangeDetail>;\n /** Emitted after a valid create-view name is submitted. */\n @Event() dsViewCreate!: EventEmitter<TableSavedViewCreateDetail>;\n /** Emitted after a valid renamed view name is submitted. */\n @Event() dsViewRename!: EventEmitter<TableSavedViewRenameDetail>;\n /** Emitted when a custom view removal is requested. */\n @Event() dsViewRemove!: EventEmitter<TableSavedViewRemoveDetail>;\n /** Emitted when changes to the active custom view should replace its stored payload. */\n @Event() dsViewSave!: EventEmitter<TableSavedViewSaveDetail>;\n /** Emitted when the active custom view's stored payload should be restored. */\n @Event() dsViewDiscard!: EventEmitter<TableSavedViewDiscardDetail>;\n\n @State() private actionViewId: string | null = null;\n @State() private actionAnchorId: string | undefined;\n @State() private actionMenuOpen = false;\n @State() private actionMenuInitialFocusVisible = false;\n @State() private dialogOpen = false;\n @State() private dialogMode: SavedViewDialogMode = 'create';\n @State() private dialogViewId: string | null = null;\n @State() private nameDraft = '';\n @State() private nameError = '';\n\n private readonly componentId = `ds-table-saved-views-${++tableSavedViewsId}`;\n private readonly selectId = `${this.componentId}-select`;\n private readonly actionMenuId = `${this.componentId}-actions`;\n private readonly fieldId = `${this.componentId}-name-field`;\n private readonly inputId = `${this.componentId}-name-input`;\n private readonly actionItems: MenuItemData[] = [\n { label: 'Rename', value: 'rename' },\n { label: 'Remove', value: 'remove', isDestructive: true },\n ];\n\n private get selectedCustomView(): TableSavedView | undefined {\n return this.views.find(view => view.id === this.value);\n }\n\n private get dialogView(): TableSavedView | undefined {\n return this.views.find(view => view.id === this.dialogViewId);\n }\n\n private get sections() {\n const custom = this.views.map(view => ({\n label: view.label,\n value: view.id,\n subtextActions:\n this.dirty && view.id === this.selectedCustomView?.id\n ? [\n { label: 'Save', value: 'save' },\n { label: 'Discard', value: 'discard', tone: 'negative' as const },\n ]\n : undefined,\n action: {\n label: `Options for ${view.label}`,\n controls: this.actionMenuId,\n expanded: this.actionViewId === view.id && this.actionMenuOpen,\n },\n }));\n const templates = {\n header: 'Templates',\n options: [{ label: this.defaultViewLabel, value: this.defaultViewId }],\n divider: custom.length > 0,\n };\n return custom.length > 0\n ? [templates, { header: 'Custom', options: custom }]\n : [templates];\n }\n\n private handleViewChange(value: SelectValue) {\n if (typeof value === 'string') this.dsViewChange.emit({ viewId: value });\n }\n\n private handleSubtextAction(detail: SelectOptionSubtextActionDetail) {\n const view = this.selectedCustomView;\n if (!view || !this.dirty || detail.value !== view.id) return;\n if (detail.actionValue === 'save') this.dsViewSave.emit({ viewId: view.id });\n if (detail.actionValue === 'discard') this.dsViewDiscard.emit({ viewId: view.id });\n }\n\n private handleOptionAction(detail: SelectOptionActionDetail) {\n if (!this.views.some(view => view.id === detail.value)) return;\n this.actionMenuInitialFocusVisible = detail.originalEvent.detail === 0;\n if (this.actionViewId === detail.value && this.actionMenuOpen) {\n this.actionMenuOpen = false;\n return;\n }\n this.actionViewId = detail.value;\n this.actionAnchorId = detail.anchorId;\n this.actionMenuOpen = true;\n }\n\n private handleActionSelect(event: CustomEvent<MenuItemData>) {\n const viewId = this.actionViewId;\n this.actionMenuOpen = false;\n if (!viewId) return;\n if (event.detail.value === 'rename') this.openDialog('rename', viewId);\n if (event.detail.value === 'remove') this.dsViewRemove.emit({ viewId });\n }\n\n private openDialog(mode: SavedViewDialogMode, viewId: string | null = null) {\n const view = mode === 'rename' ? this.views.find(item => item.id === viewId) : undefined;\n if (mode === 'rename' && !view) return;\n this.dialogMode = mode;\n this.dialogViewId = view?.id ?? null;\n this.nameDraft = view?.label ?? '';\n this.nameError = '';\n this.dialogOpen = true;\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n const input = this.el.querySelector<HTMLElement & { setFocus?: () => Promise<void> }>(\n `#${this.inputId}`,\n );\n void input?.setFocus?.();\n });\n });\n }\n\n private validateName(): string {\n const name = this.nameDraft.trim();\n if (!name) return 'View name is required.';\n const duplicate = this.views.some(\n view => view.id !== this.dialogViewId && view.label.trim().toLocaleLowerCase() === name.toLocaleLowerCase(),\n );\n if (duplicate || this.defaultViewLabel.trim().toLocaleLowerCase() === name.toLocaleLowerCase()) {\n return 'A view with this name already exists.';\n }\n return '';\n }\n\n private submitDialog() {\n const error = this.validateName();\n if (error) {\n this.nameError = error;\n return;\n }\n const name = this.nameDraft.trim();\n if (this.dialogMode === 'rename' && this.dialogView) {\n this.dsViewRename.emit({ viewId: this.dialogView.id, name });\n } else {\n this.dsViewCreate.emit({ name });\n }\n this.dialogOpen = false;\n }\n\n private finishDialogClose() {\n if (this.dialogOpen) return;\n this.dialogViewId = null;\n this.nameDraft = '';\n this.nameError = '';\n const select = this.el.querySelector<HTMLElement & { setFocus?: () => Promise<void> }>(\n `#${this.selectId}`,\n );\n void select?.setFocus?.();\n }\n\n render() {\n return (\n <Host>\n <ds-select\n id={this.selectId}\n size=\"md\"\n placeholder={this.label}\n aria-label={this.label}\n sections={this.sections}\n value={this.value}\n triggerLabel={this.selectedCustomView ? undefined : this.triggerLabel}\n triggerLabelPlaceholder={!this.selectedCustomView}\n dot={this.dirty}\n footerActionLabel={this.createLabel}\n activeFill={false}\n allowClear={false}\n onDsChange={(event: CustomEvent<SelectValue>) => this.handleViewChange(event.detail)}\n onDsFooterAction={() => this.openDialog('create')}\n onDsOptionSubtextAction={(event: CustomEvent<SelectOptionSubtextActionDetail>) =>\n this.handleSubtextAction(event.detail)\n }\n onDsOptionAction={(event: CustomEvent<SelectOptionActionDetail>) =>\n this.handleOptionAction(event.detail)\n }\n />\n\n <ds-menu\n id={this.actionMenuId}\n anchorId={this.actionAnchorId}\n menuLabel=\"Saved view options\"\n side=\"bottom\"\n align=\"end\"\n menuWidth=\"max-content\"\n minWidth=\"0\"\n items={this.actionItems}\n open={this.actionMenuOpen}\n initialFocusVisible={this.actionMenuInitialFocusVisible}\n onDsClose={() => (this.actionMenuOpen = false)}\n onDsAfterClose={() => {\n if (this.actionMenuOpen) return;\n this.actionViewId = null;\n this.actionAnchorId = undefined;\n }}\n onDsSelect={(event: CustomEvent<MenuItemData>) => this.handleActionSelect(event)}\n />\n\n <ds-modal\n open={this.dialogOpen}\n heading={this.dialogMode === 'rename' ? 'Rename view' : 'Save as new view'}\n modalWidth=\"sm\"\n onDsClose={() => (this.dialogOpen = false)}\n onDsAfterClose={() => this.finishDialogClose()}\n >\n <ds-field\n label=\"Name\"\n fieldId={this.fieldId}\n error={this.nameError.length > 0}\n errorMessage={this.nameError}\n >\n <ds-input\n id={this.inputId}\n size=\"md\"\n placeholder=\"Enter a unique name\"\n value={this.nameDraft}\n autoFocus={true}\n onDsChange={(event: CustomEvent<string>) => {\n this.nameDraft = event.detail;\n if (this.nameError) this.nameError = '';\n }}\n onKeyDown={(event: KeyboardEvent) => {\n if (event.key === 'Enter') this.submitDialog();\n }}\n />\n </ds-field>\n\n <div slot=\"footer\" class=\"table-saved-views__dialog-actions\">\n <ds-button-filled\n label={this.dialogMode === 'rename' ? 'Rename' : 'Save'}\n size=\"md\"\n onDsClick={() => this.submitDialog()}\n />\n <ds-button-unfilled\n label=\"Cancel\"\n size=\"md\"\n onDsClick={() => (this.dialogOpen = false)}\n />\n </div>\n </ds-modal>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["tableSavedViewsCss","tableSavedViewsId","TableSavedViews","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","views","value","dirty","defaultViewId","defaultViewLabel","label","triggerLabel","createLabel","actionViewId","actionMenuOpen","actionMenuInitialFocusVisible","dialogOpen","dialogMode","dialogViewId","nameDraft","nameError","componentId","selectId","actionMenuId","fieldId","inputId","actionItems","isDestructive","selectedCustomView","find","view","id","dialogView","sections","custom","map","subtextActions","tone","undefined","action","controls","expanded","templates","header","options","divider","length","handleViewChange","dsViewChange","emit","viewId","handleSubtextAction","detail","actionValue","dsViewSave","dsViewDiscard","handleOptionAction","some","originalEvent","actionAnchorId","anchorId","handleActionSelect","event","openDialog","dsViewRemove","mode","item","requestAnimationFrame","input","el","querySelector","setFocus","validateName","name","trim","duplicate","toLocaleLowerCase","submitDialog","error","dsViewRename","dsViewCreate","finishDialogClose","select","render","h","Host","key","size","placeholder","triggerLabelPlaceholder","dot","Boolean","footerActionLabel","activeFill","allowClear","onDsChange","onDsFooterAction","onDsOptionSubtextAction","onDsOptionAction","menuLabel","side","align","menuWidth","minWidth","items","open","initialFocusVisible","onDsClose","onDsAfterClose","onDsSelect","heading","modalWidth","errorMessage","autoFocus","onKeyDown","slot","class","onDsClick"],"sources":["src/wc/components/TableSavedViews/TableSavedViews.css?tag=ds-table-saved-views&encapsulation=scoped","src/wc/components/TableSavedViews/TableSavedViews.tsx"],"sourcesContent":[":host {\n --ds-choice-popup-min-inline-size: var(--dimension-menu-width-xs);\n\n display: inline-block;\n min-inline-size: 0;\n}\n\nds-select {\n display: block;\n}\n\n.table-saved-views__dialog-actions {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: var(--dimension-space-100);\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Prop, State } from '@stencil/core';\nimport type { MenuItemData } from '../Menu/menu-types';\nimport type {\n SelectOptionActionDetail,\n SelectOptionSubtextActionDetail,\n SelectValue,\n} from '../Select/Select';\nimport type {\n TableSavedView,\n TableSavedViewChangeDetail,\n TableSavedViewCreateDetail,\n TableSavedViewDiscardDetail,\n TableSavedViewRemoveDetail,\n TableSavedViewRenameDetail,\n TableSavedViewSaveDetail,\n} from './table-saved-views-types';\n\ntype SavedViewDialogMode = 'create' | 'rename';\n\nlet tableSavedViewsId = 0;\n\n@Component({\n tag: 'ds-table-saved-views',\n styleUrl: 'TableSavedViews.css',\n scoped: true,\n})\nexport class TableSavedViews {\n @Element() el!: HTMLElement;\n\n /** Application-owned custom saved views. Assign arrays through the JavaScript property. */\n @Prop() views: TableSavedView[] = [];\n /** ID of the controlled active view, including the default view ID. */\n @Prop() value: string = '__default__';\n /** Whether the current table state differs from the selected custom view. Ignored for the default view. */\n @Prop() dirty: boolean = false;\n /** ID used for the built-in default view. */\n @Prop() defaultViewId: string = '__default__';\n /** Label used for the built-in default view. */\n @Prop() defaultViewLabel: string = 'Default';\n /** Accessible name for the saved-views select. */\n @Prop() label: string = 'Saved views';\n /** Trigger label shown while the default view is selected. */\n @Prop() triggerLabel: string = 'Views';\n /** Footer action label that opens the create-view dialog. */\n @Prop() createLabel: string = 'New view';\n\n /** Emitted when a view selection is requested. */\n @Event() dsViewChange!: EventEmitter<TableSavedViewChangeDetail>;\n /** Emitted after a valid create-view name is submitted. */\n @Event() dsViewCreate!: EventEmitter<TableSavedViewCreateDetail>;\n /** Emitted after a valid renamed view name is submitted. */\n @Event() dsViewRename!: EventEmitter<TableSavedViewRenameDetail>;\n /** Emitted when a custom view removal is requested. */\n @Event() dsViewRemove!: EventEmitter<TableSavedViewRemoveDetail>;\n /** Emitted when changes to the active custom view should replace its stored payload. */\n @Event() dsViewSave!: EventEmitter<TableSavedViewSaveDetail>;\n /** Emitted when the active custom view's stored payload should be restored. */\n @Event() dsViewDiscard!: EventEmitter<TableSavedViewDiscardDetail>;\n\n @State() private actionViewId: string | null = null;\n @State() private actionAnchorId: string | undefined;\n @State() private actionMenuOpen = false;\n @State() private actionMenuInitialFocusVisible = false;\n @State() private dialogOpen = false;\n @State() private dialogMode: SavedViewDialogMode = 'create';\n @State() private dialogViewId: string | null = null;\n @State() private nameDraft = '';\n @State() private nameError = '';\n\n private readonly componentId = `ds-table-saved-views-${++tableSavedViewsId}`;\n private readonly selectId = `${this.componentId}-select`;\n private readonly actionMenuId = `${this.componentId}-actions`;\n private readonly fieldId = `${this.componentId}-name-field`;\n private readonly inputId = `${this.componentId}-name-input`;\n private readonly actionItems: MenuItemData[] = [\n { label: 'Rename', value: 'rename' },\n { label: 'Remove', value: 'remove', isDestructive: true },\n ];\n\n private get selectedCustomView(): TableSavedView | undefined {\n return this.views.find(view => view.id === this.value);\n }\n\n private get dialogView(): TableSavedView | undefined {\n return this.views.find(view => view.id === this.dialogViewId);\n }\n\n private get sections() {\n const custom = this.views.map(view => ({\n label: view.label,\n value: view.id,\n subtextActions:\n this.dirty && view.id === this.selectedCustomView?.id\n ? [\n { label: 'Save', value: 'save' },\n { label: 'Discard', value: 'discard', tone: 'negative' as const },\n ]\n : undefined,\n action: {\n label: `Options for ${view.label}`,\n controls: this.actionMenuId,\n expanded: this.actionViewId === view.id && this.actionMenuOpen,\n },\n }));\n const templates = {\n header: 'Templates',\n options: [{ label: this.defaultViewLabel, value: this.defaultViewId }],\n divider: custom.length > 0,\n };\n return custom.length > 0 ? [templates, { header: 'Custom', options: custom }] : [templates];\n }\n\n private handleViewChange(value: SelectValue) {\n if (typeof value === 'string') this.dsViewChange.emit({ viewId: value });\n }\n\n private handleSubtextAction(detail: SelectOptionSubtextActionDetail) {\n const view = this.selectedCustomView;\n if (!view || !this.dirty || detail.value !== view.id) return;\n if (detail.actionValue === 'save') this.dsViewSave.emit({ viewId: view.id });\n if (detail.actionValue === 'discard') this.dsViewDiscard.emit({ viewId: view.id });\n }\n\n private handleOptionAction(detail: SelectOptionActionDetail) {\n if (!this.views.some(view => view.id === detail.value)) return;\n this.actionMenuInitialFocusVisible = detail.originalEvent.detail === 0;\n if (this.actionViewId === detail.value && this.actionMenuOpen) {\n this.actionMenuOpen = false;\n return;\n }\n this.actionViewId = detail.value;\n this.actionAnchorId = detail.anchorId;\n this.actionMenuOpen = true;\n }\n\n private handleActionSelect(event: CustomEvent<MenuItemData>) {\n const viewId = this.actionViewId;\n this.actionMenuOpen = false;\n if (!viewId) return;\n if (event.detail.value === 'rename') this.openDialog('rename', viewId);\n if (event.detail.value === 'remove') this.dsViewRemove.emit({ viewId });\n }\n\n private openDialog(mode: SavedViewDialogMode, viewId: string | null = null) {\n const view = mode === 'rename' ? this.views.find(item => item.id === viewId) : undefined;\n if (mode === 'rename' && !view) return;\n this.dialogMode = mode;\n this.dialogViewId = view?.id ?? null;\n this.nameDraft = view?.label ?? '';\n this.nameError = '';\n this.dialogOpen = true;\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n const input = this.el.querySelector<HTMLElement & { setFocus?: () => Promise<void> }>(\n `#${this.inputId}`\n );\n void input?.setFocus?.();\n });\n });\n }\n\n private validateName(): string {\n const name = this.nameDraft.trim();\n if (!name) return 'View name is required.';\n const duplicate = this.views.some(\n view =>\n view.id !== this.dialogViewId &&\n view.label.trim().toLocaleLowerCase() === name.toLocaleLowerCase()\n );\n if (\n duplicate ||\n this.defaultViewLabel.trim().toLocaleLowerCase() === name.toLocaleLowerCase()\n ) {\n return 'A view with this name already exists.';\n }\n return '';\n }\n\n private submitDialog() {\n const error = this.validateName();\n if (error) {\n this.nameError = error;\n return;\n }\n const name = this.nameDraft.trim();\n if (this.dialogMode === 'rename' && this.dialogView) {\n this.dsViewRename.emit({ viewId: this.dialogView.id, name });\n } else {\n this.dsViewCreate.emit({ name });\n }\n this.dialogOpen = false;\n }\n\n private finishDialogClose() {\n if (this.dialogOpen) return;\n this.dialogViewId = null;\n this.nameDraft = '';\n this.nameError = '';\n const select = this.el.querySelector<HTMLElement & { setFocus?: () => Promise<void> }>(\n `#${this.selectId}`\n );\n void select?.setFocus?.();\n }\n\n render() {\n return (\n <Host>\n <ds-select\n id={this.selectId}\n size=\"md\"\n placeholder={this.label}\n aria-label={this.label}\n sections={this.sections}\n value={this.value}\n triggerLabel={this.selectedCustomView ? undefined : this.triggerLabel}\n triggerLabelPlaceholder={!this.selectedCustomView}\n dot={this.dirty && Boolean(this.selectedCustomView)}\n footerActionLabel={this.createLabel}\n activeFill={false}\n allowClear={false}\n onDsChange={(event: CustomEvent<SelectValue>) => this.handleViewChange(event.detail)}\n onDsFooterAction={() => this.openDialog('create')}\n onDsOptionSubtextAction={(event: CustomEvent<SelectOptionSubtextActionDetail>) =>\n this.handleSubtextAction(event.detail)\n }\n onDsOptionAction={(event: CustomEvent<SelectOptionActionDetail>) =>\n this.handleOptionAction(event.detail)\n }\n />\n\n <ds-menu\n id={this.actionMenuId}\n anchorId={this.actionAnchorId}\n menuLabel=\"Saved view options\"\n side=\"bottom\"\n align=\"end\"\n menuWidth=\"max-content\"\n minWidth=\"0\"\n items={this.actionItems}\n open={this.actionMenuOpen}\n initialFocusVisible={this.actionMenuInitialFocusVisible}\n onDsClose={() => (this.actionMenuOpen = false)}\n onDsAfterClose={() => {\n if (this.actionMenuOpen) return;\n this.actionViewId = null;\n this.actionAnchorId = undefined;\n }}\n onDsSelect={(event: CustomEvent<MenuItemData>) => this.handleActionSelect(event)}\n />\n\n <ds-modal\n open={this.dialogOpen}\n heading={this.dialogMode === 'rename' ? 'Rename view' : 'Save as new view'}\n modalWidth=\"sm\"\n onDsClose={() => (this.dialogOpen = false)}\n onDsAfterClose={() => this.finishDialogClose()}\n >\n <ds-field\n label=\"Name\"\n fieldId={this.fieldId}\n error={this.nameError.length > 0}\n errorMessage={this.nameError}\n >\n <ds-input\n id={this.inputId}\n size=\"md\"\n placeholder=\"Enter a unique name\"\n value={this.nameDraft}\n autoFocus={true}\n onDsChange={(event: CustomEvent<string>) => {\n this.nameDraft = event.detail;\n if (this.nameError) this.nameError = '';\n }}\n onKeyDown={(event: KeyboardEvent) => {\n if (event.key === 'Enter') this.submitDialog();\n }}\n />\n </ds-field>\n\n <div slot=\"footer\" class=\"table-saved-views__dialog-actions\">\n <ds-button-filled\n label={this.dialogMode === 'rename' ? 'Rename' : 'Save'}\n size=\"md\"\n onDsClick={() => this.submitDialog()}\n />\n <ds-button-unfilled\n label=\"Cancel\"\n size=\"md\"\n onDsClick={() => (this.dialogOpen = false)}\n />\n </div>\n </ds-modal>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}