@api-client/ui 0.6.1 → 0.6.3
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/build/src/elements/data-table/internals/DataCatalogTable.d.ts.map +1 -1
- package/build/src/elements/data-table/internals/DataCatalogTable.js +0 -2
- package/build/src/elements/data-table/internals/DataCatalogTable.js.map +1 -1
- package/build/src/elements/file-system/internals/QuickApiFilesystem.d.ts.map +1 -1
- package/build/src/elements/file-system/internals/QuickApiFilesystem.js +0 -2
- package/build/src/elements/file-system/internals/QuickApiFilesystem.js.map +1 -1
- package/build/src/modeling/domain-navigation.d.ts +1 -0
- package/build/src/modeling/domain-navigation.d.ts.map +1 -1
- package/build/src/modeling/domain-navigation.js.map +1 -1
- package/build/src/modeling/internals/ApiModelingActionsScreen.d.ts.map +1 -1
- package/build/src/modeling/internals/ApiModelingActionsScreen.js +1 -14
- package/build/src/modeling/internals/ApiModelingActionsScreen.js.map +1 -1
- package/build/src/modeling/internals/DomainBrowser.d.ts.map +1 -1
- package/build/src/modeling/internals/DomainBrowser.js +4 -1
- package/build/src/modeling/internals/DomainBrowser.js.map +1 -1
- package/build/src/modeling/internals/styles/ApiModelingActionsScreen.styles.d.ts.map +1 -1
- package/build/src/modeling/internals/styles/ApiModelingActionsScreen.styles.js +33 -0
- package/build/src/modeling/internals/styles/ApiModelingActionsScreen.styles.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/elements/data-table/internals/DataCatalogTable.ts +0 -2
- package/src/elements/file-system/internals/QuickApiFilesystem.ts +0 -2
- package/src/modeling/domain-navigation.ts +2 -0
- package/src/modeling/internals/ApiModelingActionsScreen.ts +1 -16
- package/src/modeling/internals/DomainBrowser.ts +4 -1
- package/src/modeling/internals/styles/ApiModelingActionsScreen.styles.ts +33 -0
- package/lit-plugin.log +0 -7904
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataCatalogTable.d.ts","sourceRoot":"","sources":["../../../../../src/elements/data-table/internals/DataCatalogTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAA;AAE1F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AAGzE;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C;;;OAGG;IACH,IAAI,CAAC,EAAE,4BAA4B,CAAA;IACnC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,SAAS,CAAC,4BAA4B,CAAC;;IAE3E,KAAK,EAAE,QAAQ,CAAC,4BAA4B,EAAE,CAAC,GAAG,SAAS,CAAA;IAEnE;;OAEG;IACH,gBAAgB,sBAA4B;IAE5C;;;;OAIG;IACyC,QAAQ,CAAC,YAAY,UAAQ;;cAYtD,UAAU,CAAC,EAAE,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAgB7D,SAAS,CAAC,cAAc,IAAI,IAAI;IAShC,SAAS,CAAC,mBAAmB,CAAC,CAAC,EAAE,WAAW,CAAC,eAAe,CAAC,GAAG,IAAI;cAwBjD,YAAY,CAAC,aAAa,EAAE,4BAA4B,EAAE,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"DataCatalogTable.d.ts","sourceRoot":"","sources":["../../../../../src/elements/data-table/internals/DataCatalogTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAA;AAE1F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AAGzE;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C;;;OAGG;IACH,IAAI,CAAC,EAAE,4BAA4B,CAAA;IACnC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,SAAS,CAAC,4BAA4B,CAAC;;IAE3E,KAAK,EAAE,QAAQ,CAAC,4BAA4B,EAAE,CAAC,GAAG,SAAS,CAAA;IAEnE;;OAEG;IACH,gBAAgB,sBAA4B;IAE5C;;;;OAIG;IACyC,QAAQ,CAAC,YAAY,UAAQ;;cAYtD,UAAU,CAAC,EAAE,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAgB7D,SAAS,CAAC,cAAc,IAAI,IAAI;IAShC,SAAS,CAAC,mBAAmB,CAAC,CAAC,EAAE,WAAW,CAAC,eAAe,CAAC,GAAG,IAAI;cAwBjD,YAAY,CAAC,aAAa,EAAE,4BAA4B,EAAE,GAAG,IAAI;IAc3E,YAAY,IAAI,cAAc,EAAE;IAchC,eAAe,CAAC,IAAI,EAAE,4BAA4B,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,EAAE;CAqG9F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataCatalogTable.js","sourceRoot":"","sources":["../../../../../src/elements/data-table/internals/DataCatalogTable.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, PropertyValues, TemplateResult } from 'lit'\nimport { DataTable } from '../DataTable.js'\nimport { styleMap } from 'lit/directives/style-map.js'\nimport type { DataCatalogSchemaWithVersion } from '@api-client/core/models/DataCatalog.js'\nimport { schemaModel as schemaIcon } from '../../../md/icons/Icons.js'\nimport type { UiListSelection } from '../../../md/list/internals/List.js'\nimport { property } from 'lit/decorators.js'\n\n/**\n * Represents a selection in the data catalog browser.\n */\nexport interface DataCatalogTableSelectionDetail {\n /**\n * The schema that was selected.\n * When not set, the selection was cleared.\n */\n item?: DataCatalogSchemaWithVersion\n /**\n * The version of the schema that was selected.\n * When not set, the selection was cleared.\n */\n version?: string\n}\n\n/**\n * @fires CustomEvent<DataCatalogTableSelectionDetail> select - Dispatched when the selection in the table changes.\n */\nexport default class DataCatalogTable extends DataTable<DataCatalogSchemaWithVersion> {\n // @ts-expect-error This is to explicitly declare the type as LitPlugin does not handle this situation.\n declare items: LiveData<DataCatalogSchemaWithVersion[]> | undefined\n\n /**\n * When the user makes a selection, this map will contain the selected version for a schema.\n */\n selectedVersions = new Map<string, string>()\n\n /**\n * When set, the table will render additional column with a button to directly select the item.\n * Note, the row selection will not be available in this case.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) accessor directSelect = false\n\n constructor() {\n super()\n if (this.directSelect) {\n this.selection = 'none'\n } else {\n this.selection = 'single'\n this.active = true\n }\n }\n\n protected override willUpdate(cp: PropertyValues<this>): void {\n if (cp.has('directSelect')) {\n if (this.directSelect) {\n this.selection = 'none'\n this.active = false\n this.clearSelection()\n } else {\n this.selection = 'single'\n this.active = true\n }\n }\n if (cp.has('items')) {\n this.clearSelection()\n }\n }\n\n protected clearSelection(): void {\n this.selectedVersions.clear()\n const hasSelected = this.selectedItems[0]\n this.selectedItems = []\n if (hasSelected) {\n this.notifySelect([])\n }\n }\n\n protected handleVersionSelect(e: CustomEvent<UiListSelection>): void {\n const target = e.detail.item\n const value = target.dataset.value\n const key = target.dataset.key\n if (!value || !key) {\n return\n }\n this.selectedVersions.set(key, value)\n const popover = this.shadowRoot?.getElementById(`select-${key}`) as HTMLElement | null\n if (popover) {\n popover.hidePopover()\n }\n const anchor = this.shadowRoot?.querySelector(`[popovertarget=\"select-${key}\"]`) as HTMLElement | null\n if (anchor) {\n anchor.focus()\n }\n this.requestUpdate()\n const selected = this.selectedItems[0]\n if (selected && selected.key === key) {\n // if the selected item is the one that was just updated, notify the parent\n this.notifySelect([selected])\n }\n }\n\n protected override notifySelect(selectedItems: DataCatalogSchemaWithVersion[]): void {\n const selected = selectedItems[0]\n const detail: DataCatalogTableSelectionDetail = {}\n if (selected) {\n detail.item = selected\n detail.version = this.selectedVersions.get(selected.key) || selected.versions[0].version\n }\n this.dispatchEvent(\n new CustomEvent('select', {\n bubbles: true,\n composed: true,\n detail,\n })\n )\n }\n\n override renderHeader(): TemplateResult[] {\n const result: TemplateResult[] = [\n this.renderHeaderCell('Name', 0),\n this.renderHeaderCell('Version', 1, { delegateFocus: true }),\n this.renderHeaderCell('Lifecycle', 2),\n this.renderHeaderCell('Organization', 3),\n this.renderHeaderCell('Published', 4),\n ]\n if (this.directSelect) {\n result.push(this.renderHeaderCell('', 5, { classes: ['actions'], delegateFocus: true, ariaLabel: 'Actions' }))\n }\n return result\n }\n\n override renderRowValues(item: DataCatalogSchemaWithVersion, index: number): TemplateResult[] {\n const result: TemplateResult[] = [\n this.#nameCell(item, index, 0),\n this.#versionCell(item, index, 1),\n this.#lifecycleCell(item, index, 2),\n this.#organizationCell(item, index, 3),\n this.#publishedCell(item, index, 4),\n ]\n if (this.directSelect) {\n result.push(this.#actionCell(item, index, 5))\n }\n return result\n }\n\n #nameCell(item: DataCatalogSchemaWithVersion, row: number, col: number): TemplateResult {\n const content = html`<ui-icon class=\"cell-icon\" role=\"presentation\">${schemaIcon}</ui-icon> ${item.name}`\n return this.renderCell(content, row, col, { classes: ['primary-cell'], isPrimary: true })\n }\n\n #versionCell(item: DataCatalogSchemaWithVersion, row: number, col: number): TemplateResult {\n if (item.versions.length === 1) {\n return this.renderCell(item.versions[0].version, row, col, { classes: ['version'] })\n }\n const selectedVersion = this.selectedVersions.get(item.key) || item.versions[0].version\n const content = html`<ui-button\n size=\"xs\"\n color=\"text\"\n class=\"version-label\"\n trailingIcon\n popovertarget=\"select-${item.key}\"\n style=\"${styleMap({ 'anchor-name': `--select-${item.key}` })}\"\n part=\"version-button\"\n ><ui-icon slot=\"icon\">arrow_drop_down</ui-icon>${selectedVersion}</ui-button\n ><ui-listbox\n popover=\"auto\"\n id=\"select-${item.key}\"\n class=\"version-listbox\"\n role=\"listbox\"\n aria-label=\"Select version\"\n style=\"${styleMap({ 'position-anchor': `--select-${item.key}` })}\"\n part=\"version-listbox\"\n @select=\"${this.handleVersionSelect}\"\n >\n ${item.versions.map(\n (version) =>\n html`<ui-list-item\n class=\"version-item\"\n role=\"option\"\n lines=\"two\"\n data-value=\"${version.version}\"\n data-key=\"${item.key}\"\n aria-selected=\"${version.version === selectedVersion}\"\n part=\"version-item\"\n >\n ${version.version}\n <span slot=\"supporting-text\">${version.lifecycle}</span>\n </ui-list-item>`\n )}\n </ui-listbox>`\n return this.renderCell(content, row, col, { classes: ['version'], delegateFocus: true })\n }\n\n #lifecycleCell(item: DataCatalogSchemaWithVersion, row: number, col: number): TemplateResult {\n const selectedVersion = this.selectedVersions.get(item.key) || item.versions[0].version\n const info = item.versions.find((v) => v.version === selectedVersion)\n if (!info) {\n return this.renderCell('Unknown', row, col, { classes: ['lifecycle'] })\n }\n const lifecycle = info.lifecycle.charAt(0).toUpperCase() + info.lifecycle.slice(1)\n return this.renderCell(lifecycle, row, col, {\n classes: ['lifecycle'],\n })\n }\n\n #organizationCell(item: DataCatalogSchemaWithVersion, row: number, col: number): TemplateResult {\n return this.renderCell(item.organization, row, col, {\n classes: ['organization'],\n })\n }\n\n #publishedCell(item: DataCatalogSchemaWithVersion, row: number, col: number): TemplateResult {\n return this.renderCell(html`<ui-date-time date=\"${item.publishedAt}\"></ui-date-time>`, row, col, {\n classes: ['published'],\n })\n }\n\n #actionCell(item: DataCatalogSchemaWithVersion, row: number, col: number): TemplateResult {\n return this.renderCell(\n html`<ui-button\n size=\"xs\"\n color=\"outlined\"\n class=\"select-button\"\n @click=\"${() => this.notifySelect([item])}\"\n aria-label=\"Select ${item.name}\"\n >Select</ui-button\n >`,\n row,\n col,\n { classes: ['actions'], delegateFocus: true }\n )\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"DataCatalogTable.js","sourceRoot":"","sources":["../../../../../src/elements/data-table/internals/DataCatalogTable.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, PropertyValues, TemplateResult } from 'lit'\nimport { DataTable } from '../DataTable.js'\nimport { styleMap } from 'lit/directives/style-map.js'\nimport type { DataCatalogSchemaWithVersion } from '@api-client/core/models/DataCatalog.js'\nimport { schemaModel as schemaIcon } from '../../../md/icons/Icons.js'\nimport type { UiListSelection } from '../../../md/list/internals/List.js'\nimport { property } from 'lit/decorators.js'\n\n/**\n * Represents a selection in the data catalog browser.\n */\nexport interface DataCatalogTableSelectionDetail {\n /**\n * The schema that was selected.\n * When not set, the selection was cleared.\n */\n item?: DataCatalogSchemaWithVersion\n /**\n * The version of the schema that was selected.\n * When not set, the selection was cleared.\n */\n version?: string\n}\n\n/**\n * @fires CustomEvent<DataCatalogTableSelectionDetail> select - Dispatched when the selection in the table changes.\n */\nexport default class DataCatalogTable extends DataTable<DataCatalogSchemaWithVersion> {\n // @ts-expect-error This is to explicitly declare the type as LitPlugin does not handle this situation.\n declare items: LiveData<DataCatalogSchemaWithVersion[]> | undefined\n\n /**\n * When the user makes a selection, this map will contain the selected version for a schema.\n */\n selectedVersions = new Map<string, string>()\n\n /**\n * When set, the table will render additional column with a button to directly select the item.\n * Note, the row selection will not be available in this case.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) accessor directSelect = false\n\n constructor() {\n super()\n if (this.directSelect) {\n this.selection = 'none'\n } else {\n this.selection = 'single'\n this.active = true\n }\n }\n\n protected override willUpdate(cp: PropertyValues<this>): void {\n if (cp.has('directSelect')) {\n if (this.directSelect) {\n this.selection = 'none'\n this.active = false\n this.clearSelection()\n } else {\n this.selection = 'single'\n this.active = true\n }\n }\n if (cp.has('items')) {\n this.clearSelection()\n }\n }\n\n protected clearSelection(): void {\n this.selectedVersions.clear()\n const hasSelected = this.selectedItems[0]\n this.selectedItems = []\n if (hasSelected) {\n this.notifySelect([])\n }\n }\n\n protected handleVersionSelect(e: CustomEvent<UiListSelection>): void {\n const target = e.detail.item\n const value = target.dataset.value\n const key = target.dataset.key\n if (!value || !key) {\n return\n }\n this.selectedVersions.set(key, value)\n const popover = this.shadowRoot?.getElementById(`select-${key}`) as HTMLElement | null\n if (popover) {\n popover.hidePopover()\n }\n const anchor = this.shadowRoot?.querySelector(`[popovertarget=\"select-${key}\"]`) as HTMLElement | null\n if (anchor) {\n anchor.focus()\n }\n this.requestUpdate()\n const selected = this.selectedItems[0]\n if (selected && selected.key === key) {\n // if the selected item is the one that was just updated, notify the parent\n this.notifySelect([selected])\n }\n }\n\n protected override notifySelect(selectedItems: DataCatalogSchemaWithVersion[]): void {\n const selected = selectedItems[0]\n const detail: DataCatalogTableSelectionDetail = {}\n if (selected) {\n detail.item = selected\n detail.version = this.selectedVersions.get(selected.key) || selected.versions[0].version\n }\n this.dispatchEvent(\n new CustomEvent('select', {\n detail,\n })\n )\n }\n\n override renderHeader(): TemplateResult[] {\n const result: TemplateResult[] = [\n this.renderHeaderCell('Name', 0),\n this.renderHeaderCell('Version', 1, { delegateFocus: true }),\n this.renderHeaderCell('Lifecycle', 2),\n this.renderHeaderCell('Organization', 3),\n this.renderHeaderCell('Published', 4),\n ]\n if (this.directSelect) {\n result.push(this.renderHeaderCell('', 5, { classes: ['actions'], delegateFocus: true, ariaLabel: 'Actions' }))\n }\n return result\n }\n\n override renderRowValues(item: DataCatalogSchemaWithVersion, index: number): TemplateResult[] {\n const result: TemplateResult[] = [\n this.#nameCell(item, index, 0),\n this.#versionCell(item, index, 1),\n this.#lifecycleCell(item, index, 2),\n this.#organizationCell(item, index, 3),\n this.#publishedCell(item, index, 4),\n ]\n if (this.directSelect) {\n result.push(this.#actionCell(item, index, 5))\n }\n return result\n }\n\n #nameCell(item: DataCatalogSchemaWithVersion, row: number, col: number): TemplateResult {\n const content = html`<ui-icon class=\"cell-icon\" role=\"presentation\">${schemaIcon}</ui-icon> ${item.name}`\n return this.renderCell(content, row, col, { classes: ['primary-cell'], isPrimary: true })\n }\n\n #versionCell(item: DataCatalogSchemaWithVersion, row: number, col: number): TemplateResult {\n if (item.versions.length === 1) {\n return this.renderCell(item.versions[0].version, row, col, { classes: ['version'] })\n }\n const selectedVersion = this.selectedVersions.get(item.key) || item.versions[0].version\n const content = html`<ui-button\n size=\"xs\"\n color=\"text\"\n class=\"version-label\"\n trailingIcon\n popovertarget=\"select-${item.key}\"\n style=\"${styleMap({ 'anchor-name': `--select-${item.key}` })}\"\n part=\"version-button\"\n ><ui-icon slot=\"icon\">arrow_drop_down</ui-icon>${selectedVersion}</ui-button\n ><ui-listbox\n popover=\"auto\"\n id=\"select-${item.key}\"\n class=\"version-listbox\"\n role=\"listbox\"\n aria-label=\"Select version\"\n style=\"${styleMap({ 'position-anchor': `--select-${item.key}` })}\"\n part=\"version-listbox\"\n @select=\"${this.handleVersionSelect}\"\n >\n ${item.versions.map(\n (version) =>\n html`<ui-list-item\n class=\"version-item\"\n role=\"option\"\n lines=\"two\"\n data-value=\"${version.version}\"\n data-key=\"${item.key}\"\n aria-selected=\"${version.version === selectedVersion}\"\n part=\"version-item\"\n >\n ${version.version}\n <span slot=\"supporting-text\">${version.lifecycle}</span>\n </ui-list-item>`\n )}\n </ui-listbox>`\n return this.renderCell(content, row, col, { classes: ['version'], delegateFocus: true })\n }\n\n #lifecycleCell(item: DataCatalogSchemaWithVersion, row: number, col: number): TemplateResult {\n const selectedVersion = this.selectedVersions.get(item.key) || item.versions[0].version\n const info = item.versions.find((v) => v.version === selectedVersion)\n if (!info) {\n return this.renderCell('Unknown', row, col, { classes: ['lifecycle'] })\n }\n const lifecycle = info.lifecycle.charAt(0).toUpperCase() + info.lifecycle.slice(1)\n return this.renderCell(lifecycle, row, col, {\n classes: ['lifecycle'],\n })\n }\n\n #organizationCell(item: DataCatalogSchemaWithVersion, row: number, col: number): TemplateResult {\n return this.renderCell(item.organization, row, col, {\n classes: ['organization'],\n })\n }\n\n #publishedCell(item: DataCatalogSchemaWithVersion, row: number, col: number): TemplateResult {\n return this.renderCell(html`<ui-date-time date=\"${item.publishedAt}\"></ui-date-time>`, row, col, {\n classes: ['published'],\n })\n }\n\n #actionCell(item: DataCatalogSchemaWithVersion, row: number, col: number): TemplateResult {\n return this.renderCell(\n html`<ui-button\n size=\"xs\"\n color=\"outlined\"\n class=\"select-button\"\n @click=\"${() => this.notifySelect([item])}\"\n aria-label=\"Select ${item.name}\"\n >Select</ui-button\n >`,\n row,\n col,\n { classes: ['actions'], delegateFocus: true }\n )\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuickApiFilesystem.d.ts","sourceRoot":"","sources":["../../../../../src/elements/file-system/internals/QuickApiFilesystem.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"QuickApiFilesystem.d.ts","sourceRoot":"","sources":["../../../../../src/elements/file-system/internals/QuickApiFilesystem.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuickApiFilesystem.js","sourceRoot":"","sources":["../../../../../src/elements/file-system/internals/QuickApiFilesystem.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, nothing, TemplateResult } from 'lit'\nimport { property, state } from 'lit/decorators.js'\nimport { consume } from '@lit/context'\nimport { FolderKind } from '@api-client/core/models/kinds.js'\nimport type { FilesSource } from '../../../data/FilesModel.js'\nimport { type FileBreadcrumb, type IFile } from '@api-client/core/models/store/File.js'\nimport type { LiveData } from '../../../reactive/LiveData.js'\nimport { type IOrganization, organizationContext } from '../../../providers/organization.js'\nimport { type IUser, userContext } from '../../../providers/user.js'\nimport { api, folderFilled, schemaModel } from '../../../md/icons/Icons.js'\nimport type { UiMenuItemElement } from '../../../md/menu/ui-menu-item.js'\n\nimport '../../../md/icons/ui-icon.js'\nimport '../../../md/icon-button/ui-icon-button.js'\nimport '../../../md/button/ui-button.js'\nimport '../../../md/divider/ui-divider.js'\nimport '../../../md/menu/ui-menu.js'\nimport '../../../md/menu/ui-menu-item.js'\nimport '../ui-breadcrumbs.js'\nimport '../../data-table/filesystem-table.js'\n\nexport interface QuickApiFilesystemOpenFolderDetails {\n /**\n * The key of the folder to open.\n * When not set, it opens the root folder.\n */\n key?: string\n}\n\nexport interface QuickApiFilesystemOpenFileDetail {\n /**\n * The key of the file to open.\n */\n key: string\n /**\n * The kind of the file to open.\n */\n kind: string\n}\n\nexport interface QuickApiFilesystemFilesDetail {\n /**\n * The keys of files to process.\n */\n keys: string[]\n}\n\nexport interface QuickApiFilesystemFileActionDetail {\n /**\n * The key of the file.\n */\n key: string\n}\n\nexport interface QuickApiFilesystemFileCreateDetail {\n /**\n * The action to perform from the \"add file\" menu.\n */\n action: 'folder' | 'api' | 'domain' | 'import'\n}\n\n/**\n * The supported file actions.\n */\nexport type FileAction = 'rename' | 'move' | 'delete' | 'share' | 'open'\n\n/**\n * A component that renders a file system view.\n * It supports listing files, navigating folders, and performing actions on files.\n *\n * The whole logic related to querying files, manipulating them, requesting breadcrumbs\n * or a parent folder is delegated to the parent component or a controller.\n *\n * @fires open-folder - Dispatched when a folder is opened.\n * @fires open-file - Dispatched when a file is opened.\n * @fires share-files - Dispatched when files are shared.\n * @fires file-rename - Dispatched when a file is renamed.\n * @fires file-move - Dispatched when a file is moved.\n * @fires file-create - Dispatched when a file create action is triggered.\n * @fires delete-files - Dispatched when files are deleted.\n * @fires scroll-end - Dispatched when the scroll end on the data table is reached.\n */\nexport default class QuickApiFilesystem extends LitElement {\n /**\n * What kind of files we render.\n * @attribute\n */\n @property({ type: String })\n accessor source: FilesSource = 'own'\n /**\n * The currently selected organization, if any.\n *\n * This property consumes the `organizationContext`.\n */\n @property({ type: Object, attribute: false })\n @consume({ context: organizationContext, subscribe: true })\n accessor organization: IOrganization | undefined\n\n /**\n * The user object to use with the file system.\n *\n * This property consumes the `userContext`.\n */\n @property({ type: Object, attribute: false })\n @consume({ context: userContext })\n accessor user: IUser | undefined\n\n /**\n * The list of files to render.\n */\n @property({ type: Object })\n accessor files: LiveData<IFile[]> | undefined\n\n /**\n * The breadcrumbs to render.\n */\n @property({ type: Object })\n accessor breadcrumbs: LiveData<FileBreadcrumb[]> | undefined\n\n /**\n * The parent folder of the current view.\n * It is used to compute the permissions for the current view.\n */\n @property({ type: Object })\n accessor parent: LiveData<IFile> | undefined\n\n /**\n * The list of currently selected items.\n */\n @state()\n accessor selectedItems: IFile[] = []\n\n /**\n * Dispatches the `open-folder` event.\n *\n * @param key The key of the folder to open.\n */\n protected openFolder(key?: string): void {\n this.clearSelection()\n this.dispatchEvent(\n new CustomEvent<QuickApiFilesystemOpenFolderDetails>('open-folder', {\n detail: { key },\n bubbles: true,\n composed: true,\n })\n )\n }\n\n /**\n * Dispatches the `open-file` event.\n *\n * @param file The file to open.\n */\n protected openFile(file: IFile): void {\n this.dispatchEvent(\n new CustomEvent<QuickApiFilesystemOpenFileDetail>('open-file', {\n detail: { key: file.key, kind: file.kind },\n bubbles: true,\n composed: true,\n })\n )\n }\n\n /**\n * Dispatches the `share-files` event.\n *\n * @param files The list of files to share.\n */\n protected shareFiles(files: IFile[]): void {\n this.dispatchEvent(\n new CustomEvent<QuickApiFilesystemFilesDetail>('share-files', {\n detail: { keys: files.map((file) => file.key) },\n })\n )\n }\n\n /**\n * Handler for the item activation event from the data table.\n * Depending on the item kind it opens the folder or the file.\n *\n * @param e The activation event.\n * @throws {Error} When the item kind is unknown.\n */\n protected itemActivateHandler(e: CustomEvent<IFile>): void {\n const item = e.detail\n const { kind } = item\n if (kind === FolderKind) {\n this.openFolder(item.key)\n } else {\n this.openFile(item)\n }\n }\n\n /**\n * Handler for the selection event from the data table.\n * Updates the `selectedItems` state.\n *\n * @param e The selection event.\n */\n protected handleTableSelect(e: CustomEvent<{ selectedItems: IFile[] }>): void {\n this.selectedItems = [...e.detail.selectedItems]\n }\n\n /**\n * Clears the current selection.\n */\n clearSelection(): void {\n this.selectedItems = []\n }\n\n /**\n * Shares the currently selected files.\n */\n shareSelection(): void {\n const { selectedItems } = this\n this.shareFiles(selectedItems)\n }\n\n /**\n * Removes files from the selection.\n * @param keys The keys of the files to remove from the selection.\n */\n removeFromSelection(keys: string[]): void {\n const { selectedItems } = this\n this.selectedItems = selectedItems.filter((item) => !keys.some((key) => key === item.key))\n }\n\n /**\n * Logic to handle file actions from the data table (e.g. rename, delete, share, open).\n *\n * @param e The file action event.\n */\n protected handleFileAction(e: CustomEvent<{ key: string; action: string }>): void {\n const { key } = e.detail\n const action = e.detail.action as FileAction\n\n switch (action) {\n case 'rename':\n case 'move':\n this.dispatchEvent(\n new CustomEvent<QuickApiFilesystemFileActionDetail>(`file-${action}`, {\n detail: { key },\n bubbles: true,\n composed: true,\n })\n )\n break\n case 'delete':\n this.deleteFiles([key])\n break\n case 'share':\n case 'open': {\n const item = this.files?.value?.find((item) => item.key === key)\n if (!item) {\n return\n }\n if (action === 'share') {\n this.shareFiles([item])\n } else if (action === 'open') {\n if (item.kind !== FolderKind) {\n this.openFile(item)\n } else {\n this.openFolder(key)\n }\n }\n break\n }\n default:\n // Unknown action\n }\n }\n\n /**\n * Handler for the \"add file\" menu selection.\n * Dispatches the `file-create` event.\n *\n * @param e The menu selection event.\n */\n protected handleAddMenuSelect(e: CustomEvent<{ item: UiMenuItemElement }>): void {\n const action = e.detail.item.value as QuickApiFilesystemFileCreateDetail['action'] | undefined\n if (!action || !['folder', 'api', 'domain', 'import'].includes(action)) {\n return\n }\n this.dispatchEvent(\n new CustomEvent<QuickApiFilesystemFileCreateDetail>('file-create', {\n detail: { action },\n })\n )\n }\n\n /**\n * Handler for the breadcrumbs navigation event.\n * Opens the folder corresponding to the breadcrumb.\n *\n * @param e The breadcrumb navigation event.\n */\n protected handleBreadcrumbsNavigate(e: CustomEvent<FileBreadcrumb>): void {\n const { key } = e.detail\n this.openFolder(key)\n }\n\n /**\n * Deletes the currently selected files.\n */\n protected handleDeleteSelected(): void {\n const { selectedItems } = this\n this.deleteFiles(selectedItems.map((item) => item.key))\n }\n\n /**\n * Deletes a list of files identified by their keys.\n * Dispatches the `delete-files` event and removes the files from the selection.\n *\n * @param keys The keys of the files to delete.\n */\n async deleteFiles(keys: string[]): Promise<void> {\n this.dispatchEvent(\n new CustomEvent<QuickApiFilesystemFilesDetail>('delete-files', {\n detail: { keys },\n })\n )\n this.removeFromSelection(keys)\n }\n\n protected handleScrollEnd(): void {\n this.dispatchEvent(new CustomEvent('scroll-end'))\n }\n\n protected override render(): TemplateResult {\n const { selectedItems, files } = this\n const own = this.source === 'own'\n const ariaLabel = own ? 'Your files' : 'Shared files'\n const content = html`\n <div class=\"section-header\">\n ${selectedItems && selectedItems.length ? this.renderSelection(selectedItems) : this.renderHeader()}\n </div>\n <filesystem-table\n .oid=\"${this.organization?.key}\"\n .user=\"${this.user}\"\n .items=\"${files}\"\n selection=\"multi\"\n active\n sort=\"name\"\n sortDirection=\"desc\"\n ariaLabel=\"${ariaLabel}\"\n .selectedItems=\"${selectedItems}\"\n @activate=\"${this.itemActivateHandler}\"\n @select=\"${this.handleTableSelect}\"\n @rowaction=\"${this.handleFileAction}\"\n @scrollend=\"${this.handleScrollEnd}\"\n class=\"table\"\n >\n ${own\n ? html`<p slot=\"empty\" class=\"empty\">You have no files.</p>`\n : html`<p slot=\"empty\" class=\"empty\">You have no shared files.</p>`}\n </filesystem-table>\n `\n return content\n }\n\n protected renderSelection(selected: IFile[]): TemplateResult {\n const { length } = selected\n return html`\n <div class=\"file-selection-info\">\n <ui-icon-button @click=\"${this.clearSelection}\" title=\"Clear selection\" aria-label=\"Clear selection\">\n <ui-icon>close</ui-icon>\n </ui-icon-button>\n <span class=\"selection-label body-large\">${length} selected</span>\n <ui-icon-button\n @click=\"${this.shareSelection}\"\n title=\"Share selected\"\n aria-label=\"Share selected\"\n ?disabled=\"${length !== 1}\"\n >\n <ui-icon>person_add</ui-icon>\n </ui-icon-button>\n <!-- <ui-icon-button>\n <ui-icon>drive_file_move</ui-icon>\n </ui-icon-button> -->\n <ui-icon-button\n @click=\"${this.handleDeleteSelected}\"\n title=\"Move selected to trash\"\n aria-label=\"Move selected to trash\"\n >\n <ui-icon>delete</ui-icon>\n </ui-icon-button>\n </div>\n `\n }\n\n protected renderHeader(): TemplateResult {\n return html` ${this.renderBreadcrumbs()}${this.renderAddFileMenu()} `\n }\n\n protected renderBreadcrumbs(): TemplateResult {\n const rootName = this.source === 'own' ? 'Files' : 'Shared'\n return html`\n <div class=\"breadcrumbs\">\n <ui-breadcrumbs\n .breadcrumbs=\"${this.breadcrumbs}\"\n root-name=\"${rootName}\"\n @navigate=\"${this.handleBreadcrumbsNavigate}\"\n ></ui-breadcrumbs>\n </div>\n `\n }\n\n protected renderAddFileMenu(): TemplateResult | typeof nothing {\n const own = this.source === 'own'\n if (!own) {\n if (this.parent) {\n const caps = this.parent.value?.capabilities\n if (!caps?.canAddChildren) {\n return nothing\n }\n } else {\n return nothing\n }\n }\n return html`\n <span class=\"menu-area\">\n <ui-button color=\"filled\" id=\"new-file-anchor\" trailingicon popoverTarget=\"new-file-menu\">\n Add\n <ui-icon slot=\"icon\">arrow_drop_down</ui-icon>\n </ui-button>\n <ui-menu id=\"new-file-menu\" popover=\"auto\" @select=\"${this.handleAddMenuSelect}\">\n <ui-menu-item value=\"folder\">\n <div>Folder</div>\n <div slot=\"supporting-text\">A folder for your domains</div>\n <ui-icon slot=\"start\">${folderFilled}</ui-icon>\n </ui-menu-item>\n <ui-menu-item value=\"domain\">\n <div>Domain model</div>\n <div slot=\"supporting-text\">Define your data</div>\n <ui-icon slot=\"start\">${schemaModel}</ui-icon>\n </ui-menu-item>\n <ui-menu-item value=\"api\">\n <div>API</div>\n <div slot=\"supporting-text\">Make data actionable</div>\n <ui-icon slot=\"start\">${api}</ui-icon>\n </ui-menu-item>\n <ui-divider role=\"separator\"></ui-divider>\n <ui-menu-item value=\"import\">\n <div>Import data model</div>\n <div slot=\"supporting-text\">Use well-know domains</div>\n <ui-icon slot=\"start\">download_2</ui-icon>\n </ui-menu-item>\n </ui-menu>\n </span>\n `\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"QuickApiFilesystem.js","sourceRoot":"","sources":["../../../../../src/elements/file-system/internals/QuickApiFilesystem.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, nothing, TemplateResult } from 'lit'\nimport { property, state } from 'lit/decorators.js'\nimport { consume } from '@lit/context'\nimport { FolderKind } from '@api-client/core/models/kinds.js'\nimport type { FilesSource } from '../../../data/FilesModel.js'\nimport { type FileBreadcrumb, type IFile } from '@api-client/core/models/store/File.js'\nimport type { LiveData } from '../../../reactive/LiveData.js'\nimport { type IOrganization, organizationContext } from '../../../providers/organization.js'\nimport { type IUser, userContext } from '../../../providers/user.js'\nimport { api, folderFilled, schemaModel } from '../../../md/icons/Icons.js'\nimport type { UiMenuItemElement } from '../../../md/menu/ui-menu-item.js'\n\nimport '../../../md/icons/ui-icon.js'\nimport '../../../md/icon-button/ui-icon-button.js'\nimport '../../../md/button/ui-button.js'\nimport '../../../md/divider/ui-divider.js'\nimport '../../../md/menu/ui-menu.js'\nimport '../../../md/menu/ui-menu-item.js'\nimport '../ui-breadcrumbs.js'\nimport '../../data-table/filesystem-table.js'\n\nexport interface QuickApiFilesystemOpenFolderDetails {\n /**\n * The key of the folder to open.\n * When not set, it opens the root folder.\n */\n key?: string\n}\n\nexport interface QuickApiFilesystemOpenFileDetail {\n /**\n * The key of the file to open.\n */\n key: string\n /**\n * The kind of the file to open.\n */\n kind: string\n}\n\nexport interface QuickApiFilesystemFilesDetail {\n /**\n * The keys of files to process.\n */\n keys: string[]\n}\n\nexport interface QuickApiFilesystemFileActionDetail {\n /**\n * The key of the file.\n */\n key: string\n}\n\nexport interface QuickApiFilesystemFileCreateDetail {\n /**\n * The action to perform from the \"add file\" menu.\n */\n action: 'folder' | 'api' | 'domain' | 'import'\n}\n\n/**\n * The supported file actions.\n */\nexport type FileAction = 'rename' | 'move' | 'delete' | 'share' | 'open'\n\n/**\n * A component that renders a file system view.\n * It supports listing files, navigating folders, and performing actions on files.\n *\n * The whole logic related to querying files, manipulating them, requesting breadcrumbs\n * or a parent folder is delegated to the parent component or a controller.\n *\n * @fires open-folder - Dispatched when a folder is opened.\n * @fires open-file - Dispatched when a file is opened.\n * @fires share-files - Dispatched when files are shared.\n * @fires file-rename - Dispatched when a file is renamed.\n * @fires file-move - Dispatched when a file is moved.\n * @fires file-create - Dispatched when a file create action is triggered.\n * @fires delete-files - Dispatched when files are deleted.\n * @fires scroll-end - Dispatched when the scroll end on the data table is reached.\n */\nexport default class QuickApiFilesystem extends LitElement {\n /**\n * What kind of files we render.\n * @attribute\n */\n @property({ type: String })\n accessor source: FilesSource = 'own'\n /**\n * The currently selected organization, if any.\n *\n * This property consumes the `organizationContext`.\n */\n @property({ type: Object, attribute: false })\n @consume({ context: organizationContext, subscribe: true })\n accessor organization: IOrganization | undefined\n\n /**\n * The user object to use with the file system.\n *\n * This property consumes the `userContext`.\n */\n @property({ type: Object, attribute: false })\n @consume({ context: userContext })\n accessor user: IUser | undefined\n\n /**\n * The list of files to render.\n */\n @property({ type: Object })\n accessor files: LiveData<IFile[]> | undefined\n\n /**\n * The breadcrumbs to render.\n */\n @property({ type: Object })\n accessor breadcrumbs: LiveData<FileBreadcrumb[]> | undefined\n\n /**\n * The parent folder of the current view.\n * It is used to compute the permissions for the current view.\n */\n @property({ type: Object })\n accessor parent: LiveData<IFile> | undefined\n\n /**\n * The list of currently selected items.\n */\n @state()\n accessor selectedItems: IFile[] = []\n\n /**\n * Dispatches the `open-folder` event.\n *\n * @param key The key of the folder to open.\n */\n protected openFolder(key?: string): void {\n this.clearSelection()\n this.dispatchEvent(\n new CustomEvent<QuickApiFilesystemOpenFolderDetails>('open-folder', {\n detail: { key },\n bubbles: true,\n composed: true,\n })\n )\n }\n\n /**\n * Dispatches the `open-file` event.\n *\n * @param file The file to open.\n */\n protected openFile(file: IFile): void {\n this.dispatchEvent(\n new CustomEvent<QuickApiFilesystemOpenFileDetail>('open-file', {\n detail: { key: file.key, kind: file.kind },\n bubbles: true,\n composed: true,\n })\n )\n }\n\n /**\n * Dispatches the `share-files` event.\n *\n * @param files The list of files to share.\n */\n protected shareFiles(files: IFile[]): void {\n this.dispatchEvent(\n new CustomEvent<QuickApiFilesystemFilesDetail>('share-files', {\n detail: { keys: files.map((file) => file.key) },\n })\n )\n }\n\n /**\n * Handler for the item activation event from the data table.\n * Depending on the item kind it opens the folder or the file.\n *\n * @param e The activation event.\n * @throws {Error} When the item kind is unknown.\n */\n protected itemActivateHandler(e: CustomEvent<IFile>): void {\n const item = e.detail\n const { kind } = item\n if (kind === FolderKind) {\n this.openFolder(item.key)\n } else {\n this.openFile(item)\n }\n }\n\n /**\n * Handler for the selection event from the data table.\n * Updates the `selectedItems` state.\n *\n * @param e The selection event.\n */\n protected handleTableSelect(e: CustomEvent<{ selectedItems: IFile[] }>): void {\n this.selectedItems = [...e.detail.selectedItems]\n }\n\n /**\n * Clears the current selection.\n */\n clearSelection(): void {\n this.selectedItems = []\n }\n\n /**\n * Shares the currently selected files.\n */\n shareSelection(): void {\n const { selectedItems } = this\n this.shareFiles(selectedItems)\n }\n\n /**\n * Removes files from the selection.\n * @param keys The keys of the files to remove from the selection.\n */\n removeFromSelection(keys: string[]): void {\n const { selectedItems } = this\n this.selectedItems = selectedItems.filter((item) => !keys.some((key) => key === item.key))\n }\n\n /**\n * Logic to handle file actions from the data table (e.g. rename, delete, share, open).\n *\n * @param e The file action event.\n */\n protected handleFileAction(e: CustomEvent<{ key: string; action: string }>): void {\n const { key } = e.detail\n const action = e.detail.action as FileAction\n\n switch (action) {\n case 'rename':\n case 'move':\n this.dispatchEvent(\n new CustomEvent<QuickApiFilesystemFileActionDetail>(`file-${action}`, {\n detail: { key },\n bubbles: true,\n composed: true,\n })\n )\n break\n case 'delete':\n this.deleteFiles([key])\n break\n case 'share':\n case 'open': {\n const item = this.files?.value?.find((item) => item.key === key)\n if (!item) {\n return\n }\n if (action === 'share') {\n this.shareFiles([item])\n } else if (action === 'open') {\n if (item.kind !== FolderKind) {\n this.openFile(item)\n } else {\n this.openFolder(key)\n }\n }\n break\n }\n default:\n // Unknown action\n }\n }\n\n /**\n * Handler for the \"add file\" menu selection.\n * Dispatches the `file-create` event.\n *\n * @param e The menu selection event.\n */\n protected handleAddMenuSelect(e: CustomEvent<{ item: UiMenuItemElement }>): void {\n const action = e.detail.item.value as QuickApiFilesystemFileCreateDetail['action'] | undefined\n if (!action || !['folder', 'api', 'domain', 'import'].includes(action)) {\n return\n }\n this.dispatchEvent(\n new CustomEvent<QuickApiFilesystemFileCreateDetail>('file-create', {\n detail: { action },\n })\n )\n }\n\n /**\n * Handler for the breadcrumbs navigation event.\n * Opens the folder corresponding to the breadcrumb.\n *\n * @param e The breadcrumb navigation event.\n */\n protected handleBreadcrumbsNavigate(e: CustomEvent<FileBreadcrumb>): void {\n const { key } = e.detail\n this.openFolder(key)\n }\n\n /**\n * Deletes the currently selected files.\n */\n protected handleDeleteSelected(): void {\n const { selectedItems } = this\n this.deleteFiles(selectedItems.map((item) => item.key))\n }\n\n /**\n * Deletes a list of files identified by their keys.\n * Dispatches the `delete-files` event and removes the files from the selection.\n *\n * @param keys The keys of the files to delete.\n */\n async deleteFiles(keys: string[]): Promise<void> {\n this.dispatchEvent(\n new CustomEvent<QuickApiFilesystemFilesDetail>('delete-files', {\n detail: { keys },\n })\n )\n this.removeFromSelection(keys)\n }\n\n protected handleScrollEnd(): void {\n this.dispatchEvent(new CustomEvent('scroll-end'))\n }\n\n protected override render(): TemplateResult {\n const { selectedItems, files } = this\n const own = this.source === 'own'\n const ariaLabel = own ? 'Your files' : 'Shared files'\n const content = html`\n <div class=\"section-header\">\n ${selectedItems && selectedItems.length ? this.renderSelection(selectedItems) : this.renderHeader()}\n </div>\n <filesystem-table\n .oid=\"${this.organization?.key}\"\n .user=\"${this.user}\"\n .items=\"${files}\"\n selection=\"multi\"\n active\n ariaLabel=\"${ariaLabel}\"\n .selectedItems=\"${selectedItems}\"\n @activate=\"${this.itemActivateHandler}\"\n @select=\"${this.handleTableSelect}\"\n @rowaction=\"${this.handleFileAction}\"\n @scrollend=\"${this.handleScrollEnd}\"\n class=\"table\"\n >\n ${own\n ? html`<p slot=\"empty\" class=\"empty\">You have no files.</p>`\n : html`<p slot=\"empty\" class=\"empty\">You have no shared files.</p>`}\n </filesystem-table>\n `\n return content\n }\n\n protected renderSelection(selected: IFile[]): TemplateResult {\n const { length } = selected\n return html`\n <div class=\"file-selection-info\">\n <ui-icon-button @click=\"${this.clearSelection}\" title=\"Clear selection\" aria-label=\"Clear selection\">\n <ui-icon>close</ui-icon>\n </ui-icon-button>\n <span class=\"selection-label body-large\">${length} selected</span>\n <ui-icon-button\n @click=\"${this.shareSelection}\"\n title=\"Share selected\"\n aria-label=\"Share selected\"\n ?disabled=\"${length !== 1}\"\n >\n <ui-icon>person_add</ui-icon>\n </ui-icon-button>\n <!-- <ui-icon-button>\n <ui-icon>drive_file_move</ui-icon>\n </ui-icon-button> -->\n <ui-icon-button\n @click=\"${this.handleDeleteSelected}\"\n title=\"Move selected to trash\"\n aria-label=\"Move selected to trash\"\n >\n <ui-icon>delete</ui-icon>\n </ui-icon-button>\n </div>\n `\n }\n\n protected renderHeader(): TemplateResult {\n return html` ${this.renderBreadcrumbs()}${this.renderAddFileMenu()} `\n }\n\n protected renderBreadcrumbs(): TemplateResult {\n const rootName = this.source === 'own' ? 'Files' : 'Shared'\n return html`\n <div class=\"breadcrumbs\">\n <ui-breadcrumbs\n .breadcrumbs=\"${this.breadcrumbs}\"\n root-name=\"${rootName}\"\n @navigate=\"${this.handleBreadcrumbsNavigate}\"\n ></ui-breadcrumbs>\n </div>\n `\n }\n\n protected renderAddFileMenu(): TemplateResult | typeof nothing {\n const own = this.source === 'own'\n if (!own) {\n if (this.parent) {\n const caps = this.parent.value?.capabilities\n if (!caps?.canAddChildren) {\n return nothing\n }\n } else {\n return nothing\n }\n }\n return html`\n <span class=\"menu-area\">\n <ui-button color=\"filled\" id=\"new-file-anchor\" trailingicon popoverTarget=\"new-file-menu\">\n Add\n <ui-icon slot=\"icon\">arrow_drop_down</ui-icon>\n </ui-button>\n <ui-menu id=\"new-file-menu\" popover=\"auto\" @select=\"${this.handleAddMenuSelect}\">\n <ui-menu-item value=\"folder\">\n <div>Folder</div>\n <div slot=\"supporting-text\">A folder for your domains</div>\n <ui-icon slot=\"start\">${folderFilled}</ui-icon>\n </ui-menu-item>\n <ui-menu-item value=\"domain\">\n <div>Domain model</div>\n <div slot=\"supporting-text\">Define your data</div>\n <ui-icon slot=\"start\">${schemaModel}</ui-icon>\n </ui-menu-item>\n <ui-menu-item value=\"api\">\n <div>API</div>\n <div slot=\"supporting-text\">Make data actionable</div>\n <ui-icon slot=\"start\">${api}</ui-icon>\n </ui-menu-item>\n <ui-divider role=\"separator\"></ui-divider>\n <ui-menu-item value=\"import\">\n <div>Import data model</div>\n <div slot=\"supporting-text\">Use well-know domains</div>\n <ui-icon slot=\"start\">download_2</ui-icon>\n </ui-menu-item>\n </ui-menu>\n </span>\n `\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-navigation.d.ts","sourceRoot":"","sources":["../../../src/modeling/domain-navigation.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,iCAAiC,CAAA;AAIrD,OAAO,6BAA6B,CAAA;AACpC,OAAO,wBAAwB,CAAA;AAC/B,OAAO,2BAA2B,CAAA;AAClC,OAAO,qCAAqC,CAAA;AAC5C,OAAO,0CAA0C,CAAA;AAEjD,qBACa,uBAAwB,SAAQ,OAAO;IAClD,OAAgB,MAAM,4BAAuB;CAC9C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,uBAAuB,CAAA;KAC7C;CACF"}
|
|
1
|
+
{"version":3,"file":"domain-navigation.d.ts","sourceRoot":"","sources":["../../../src/modeling/domain-navigation.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,iCAAiC,CAAA;AAIrD,OAAO,6BAA6B,CAAA;AACpC,OAAO,wBAAwB,CAAA;AAC/B,OAAO,2BAA2B,CAAA;AAClC,OAAO,qCAAqC,CAAA;AAC5C,OAAO,0CAA0C,CAAA;AAEjD,qBACa,uBAAwB,SAAQ,OAAO;IAClD,OAAgB,MAAM,4BAAuB;CAC9C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,uBAAuB,CAAA;KAC7C;CACF;AAED,YAAY,EAAE,yBAAyB,EAAE,+BAA+B,EAAE,MAAM,iCAAiC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-navigation.js","sourceRoot":"","sources":["../../../src/modeling/domain-navigation.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,OAAO,MAAM,iCAAiC,CAAA;AACrD,OAAO,MAAM,MAAM,+CAA+C,CAAA;AAClE,OAAO,UAAU,MAAM,mCAAmC,CAAA;AAE1D,OAAO,6BAA6B,CAAA;AACpC,OAAO,wBAAwB,CAAA;AAC/B,OAAO,2BAA2B,CAAA;AAClC,OAAO,qCAAqC,CAAA;AAC5C,OAAO,0CAA0C,CAAA;IAGpC,uBAAuB;4BADnC,aAAa,CAAC,mBAAmB,CAAC;;;;sBACU,OAAO;uCAAf,SAAQ,WAAO;;;;YAApD,6KAEC;;;;QADC,MAAM,CAAU,MAAM,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;;YADlC,uDAAuB;;;;;SAAvB,uBAAuB","sourcesContent":["import { customElement } from 'lit/decorators.js'\nimport Element from './internals/DomainNavigation.js'\nimport styles from './internals/styles/DomainNavigation.styles.js'\nimport typography from '../styles/m3/typography.module.js'\n\nimport '../md/divider/ui-divider.js'\nimport '../md/icons/ui-icon.js'\nimport '../md/button/ui-button.js'\nimport '../md/icon-button/ui-icon-button.js'\nimport '../elements/search-input/search-input.js'\n\n@customElement('domain-navigation')\nexport class DomainNavigationElement extends Element {\n static override styles = [styles, typography]\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'domain-navigation': DomainNavigationElement\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"domain-navigation.js","sourceRoot":"","sources":["../../../src/modeling/domain-navigation.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,OAAO,MAAM,iCAAiC,CAAA;AACrD,OAAO,MAAM,MAAM,+CAA+C,CAAA;AAClE,OAAO,UAAU,MAAM,mCAAmC,CAAA;AAE1D,OAAO,6BAA6B,CAAA;AACpC,OAAO,wBAAwB,CAAA;AAC/B,OAAO,2BAA2B,CAAA;AAClC,OAAO,qCAAqC,CAAA;AAC5C,OAAO,0CAA0C,CAAA;IAGpC,uBAAuB;4BADnC,aAAa,CAAC,mBAAmB,CAAC;;;;sBACU,OAAO;uCAAf,SAAQ,WAAO;;;;YAApD,6KAEC;;;;QADC,MAAM,CAAU,MAAM,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;;YADlC,uDAAuB;;;;;SAAvB,uBAAuB","sourcesContent":["import { customElement } from 'lit/decorators.js'\nimport Element from './internals/DomainNavigation.js'\nimport styles from './internals/styles/DomainNavigation.styles.js'\nimport typography from '../styles/m3/typography.module.js'\n\nimport '../md/divider/ui-divider.js'\nimport '../md/icons/ui-icon.js'\nimport '../md/button/ui-button.js'\nimport '../md/icon-button/ui-icon-button.js'\nimport '../elements/search-input/search-input.js'\n\n@customElement('domain-navigation')\nexport class DomainNavigationElement extends Element {\n static override styles = [styles, typography]\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'domain-navigation': DomainNavigationElement\n }\n}\n\nexport type { DomainDragDropEventDetail, DomainMultiSelectionEventDetail } from './internals/DomainNavigation.js'\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiModelingActionsScreen.d.ts","sourceRoot":"","sources":["../../../../src/modeling/internals/ApiModelingActionsScreen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,KAAK,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAG1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAG1D,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,4BAA4B;IAC3C;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,OAAO,OAAO,wBAAyB,SAAQ,iBAAiB;IACrE;;OAEG;IACM,QAAQ,CAAC,SAAS,UAAQ;IAEnC;;OAEG;IACM,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,CAAK;IAE/C,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI;cAc3C,kBAAkB,IAAI,IAAI;IAO7C;;;OAGG;IACH,SAAS,CAAC,kBAAkB,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"ApiModelingActionsScreen.d.ts","sourceRoot":"","sources":["../../../../src/modeling/internals/ApiModelingActionsScreen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,KAAK,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAG1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAG1D,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,4BAA4B;IAC3C;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,OAAO,OAAO,wBAAyB,SAAQ,iBAAiB;IACrE;;OAEG;IACM,QAAQ,CAAC,SAAS,UAAQ;IAEnC;;OAEG;IACM,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,CAAK;IAE/C,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI;cAc3C,kBAAkB,IAAI,IAAI;IAO7C;;;OAGG;IACH,SAAS,CAAC,kBAAkB,IAAI,IAAI;IAIpC;;;;OAIG;IACH,SAAS,CAAC,kBAAkB,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAe5C;;;;OAIG;IACH,SAAS,CAAC,kBAAkB,CAAC,CAAC,EAAE,WAAW,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI;IAgBpE,SAAS,CAAC,gBAAgB,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAejC,MAAM,IAAI,cAAc,GAAG,OAAO,OAAO;IAoBlD,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,iBAAiB;IAQzB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAoCxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA4B1B,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,uBAAuB;IAe/B,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,kBAAkB;CAG3B"}
|
|
@@ -58,11 +58,7 @@ let ApiModelingActionsScreen = (() => {
|
|
|
58
58
|
* It dispatches the `exposeentity` event to notify the parent component that the user wants to expose an entity.
|
|
59
59
|
*/
|
|
60
60
|
handleAddDataClick() {
|
|
61
|
-
this.dispatchEvent(new Event('exposed-new'
|
|
62
|
-
bubbles: true,
|
|
63
|
-
cancelable: true,
|
|
64
|
-
composed: true,
|
|
65
|
-
}));
|
|
61
|
+
this.dispatchEvent(new Event('exposed-new'));
|
|
66
62
|
}
|
|
67
63
|
/**
|
|
68
64
|
* A handler for the "Remove action" button click.
|
|
@@ -76,9 +72,6 @@ let ApiModelingActionsScreen = (() => {
|
|
|
76
72
|
return;
|
|
77
73
|
}
|
|
78
74
|
this.dispatchEvent(new CustomEvent('exposed-remove', {
|
|
79
|
-
bubbles: true,
|
|
80
|
-
cancelable: true,
|
|
81
|
-
composed: true,
|
|
82
75
|
detail: {
|
|
83
76
|
exposedId: id,
|
|
84
77
|
},
|
|
@@ -96,9 +89,6 @@ let ApiModelingActionsScreen = (() => {
|
|
|
96
89
|
return;
|
|
97
90
|
}
|
|
98
91
|
this.dispatchEvent(new CustomEvent('action-edit', {
|
|
99
|
-
bubbles: true,
|
|
100
|
-
cancelable: true,
|
|
101
|
-
composed: true,
|
|
102
92
|
detail: {
|
|
103
93
|
exposedId: id,
|
|
104
94
|
kind: e.detail.kind,
|
|
@@ -112,9 +102,6 @@ let ApiModelingActionsScreen = (() => {
|
|
|
112
102
|
return;
|
|
113
103
|
}
|
|
114
104
|
this.dispatchEvent(new CustomEvent('exposed-edit', {
|
|
115
|
-
bubbles: true,
|
|
116
|
-
cancelable: true,
|
|
117
|
-
composed: true,
|
|
118
105
|
detail: {
|
|
119
106
|
exposedId: id,
|
|
120
107
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiModelingActionsScreen.js","sourceRoot":"","sources":["../../../../src/modeling/internals/ApiModelingActionsScreen.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, type TemplateResult, nothing } from 'lit'\nimport { ExposedEntity, type ApiModel } from '@api-client/core/browser.js'\nimport type { ApiAction } from '@api-client/core/modeling/types.js'\nimport { state } from 'lit/decorators.js'\nimport { ApiModelingScreen } from './ApiModelingScreen.js'\nimport type ApiModelingEntityCardElement from './ApiModelingEntityCard.js'\n\nexport interface EditActionEventDetail {\n /**\n * The id of the exposed entity.\n */\n exposedId: string\n /**\n * The kind of operation to edit (list, read, delete, etc)\n */\n kind: string\n}\n\nexport interface EditExposedEntityEventDetail {\n /**\n * The id of the exposed entity.\n */\n exposedId: string\n}\n\n/**\n * A screen that allows the user to expose data entities as a root level actions\n * and configure their properties:\n * - Collection actions (create, list, search)\n * - Resource actions (read, update, delete)\n *\n * @fires exposed-new - When the user wants to expose an entity.\n * @fires action-edit - When the user wants to edit an action.\n * @fires exposed-edit - When the user wants to edit an exposed entity.\n * @fires exposed-remove - When the user wants to remove an exposed entity.\n */\nexport default class ApiModelingActionsScreen extends ApiModelingScreen {\n /**\n * A flag that determines whether the API has added a data domain.\n */\n @state() accessor hasDomain = false\n\n /**\n * The list of exposed entities **on the root level**.\n */\n @state() accessor exposed: ExposedEntity[] = []\n\n protected handleModelChange(model: ApiModel | undefined): void {\n this.hasDomain = false\n this.exposed = []\n if (!model) {\n return\n }\n\n if (!model.domain) {\n return\n }\n this.hasDomain = true\n this.exposed = model.exposes.filter((expose) => expose.isRoot)\n }\n\n protected override handleDomainChange(): void {\n // TODO: this is too much for a model change, but temporary we will re-render the screen on any model change\n // until we figure out how to expose a new entity to the API and capture only that change.\n this.handleModelChange(this.model)\n this.requestUpdate()\n }\n\n /**\n * A handler for the \"Add data\" button click.\n * It dispatches the `exposeentity` event to notify the parent component that the user wants to expose an entity.\n */\n protected handleAddDataClick(): void {\n this.dispatchEvent(\n new Event('exposed-new', {\n bubbles: true,\n cancelable: true,\n composed: true,\n })\n )\n }\n\n /**\n * A handler for the \"Remove action\" button click.\n * It removes the action from the model and updates the exposed list.\n * @param event The event object.\n */\n protected handleRemoveAction(e: Event): void {\n const card = e.currentTarget as ApiModelingEntityCardElement\n const id = card.domainKey\n if (!id) {\n return\n }\n this.dispatchEvent(\n new CustomEvent<EditExposedEntityEventDetail>('exposed-remove', {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n exposedId: id,\n },\n })\n )\n }\n\n /**\n * Handles the action selection event.\n * It dispatches the `editaction` event to notify the parent component that the user wants to edit an action.\n * @param e The event object.\n */\n protected handleActionSelect(e: CustomEvent<{ kind: string }>): void {\n const card = e.currentTarget as ApiModelingEntityCardElement\n const id = card.domainKey\n if (!id) {\n return\n }\n this.dispatchEvent(\n new CustomEvent<EditActionEventDetail>('action-edit', {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n exposedId: id,\n kind: e.detail.kind,\n },\n })\n )\n }\n\n protected handleEditAction(e: Event): void {\n const card = e.currentTarget as ApiModelingEntityCardElement\n const id = card.domainKey\n if (!id) {\n return\n }\n this.dispatchEvent(\n new CustomEvent<EditExposedEntityEventDetail>('exposed-edit', {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n exposedId: id,\n },\n })\n )\n }\n\n override render(): TemplateResult | typeof nothing {\n const model = this.model\n if (!model) {\n return nothing\n }\n return html`\n <div class=\"config-section horizontal center\">\n <div class=\"section-header\">\n <h2 class=\"headline-medium\">API Actions</h2>\n <p class=\"body-medium\">\n You define your API logic by selecting data objects you want to use in your API and adding predefined\n actions to these data.\n </p>\n </div>\n <ui-button @click=\"${this.handleAddDataClick}\">Add data</ui-button>\n </div>\n ${this.hasDomain ? this.renderContent(model) : html`<p>No data domain selected.</p>`}\n `\n }\n\n private renderContent(model: ApiModel): TemplateResult | typeof nothing {\n if (!this.exposed.length) {\n return this.renderEmptyView()\n }\n return html`<div class=\"exposed-canvas\">\n ${this.exposed.map((expose) => this.renderExposedPath(model, expose))}\n </div>`\n }\n\n private renderEmptyView(): TemplateResult | typeof nothing {\n return html`\n <section class=\"empty-screen\">\n <div class=\"icon-wrapper\">\n <ui-icon class=\"icon\" icon=\"api\"></ui-icon>\n </div>\n <p class=\"empty-message body-large\">Find your API logic here</p>\n <p class=\"empty-message body-medium\">Add a data entity to define your API behavior.</p>\n </section>\n `\n }\n\n private renderExposedPath(model: ApiModel, rootExpose: ExposedEntity): TemplateResult | typeof nothing {\n // Render the root expose and all its nested children (by parent key) in a single row.\n // Use the model.exposes list as the source of truth for child relationships.\n const allExposes = model.exposes ?? []\n const row = this.renderExposeTree(model, rootExpose, allExposes)\n return html`<div class=\"exposure-row\">${row}</div>`\n }\n\n /**\n * Recursively render an expose and its children. Shows entity name only.\n * The model guarantees no infinite cycles, so the UI does not need to track visited nodes.\n */\n private renderExposeTree(\n model: ApiModel,\n rootExpose: ExposedEntity,\n allExposes: ExposedEntity[]\n ): TemplateResult | typeof nothing {\n if (!rootExpose || !rootExpose.key) {\n return nothing\n }\n\n // Render current entity\n const current = this.renderEntity(model, rootExpose)\n\n // Find children that reference this expose as parent.\n const children = allExposes.filter((e) => e.parent?.key === rootExpose.key)\n\n // If no children, render just the entity\n if (!children.length) {\n return html`<div class=\"expose-node inline\">${current}</div>`\n }\n\n // Render current entity and stack children vertically. Each child row shows\n // the child and its inline descendants (classic tree view).\n return html`${current}\n <div class=\"children-list\">\n ${children.map(\n (child) => html`\n <div class=\"child-row\">\n <span class=\"expose-sep\">→</span>\n ${this.renderExposeTree(model, child, allExposes)}\n </div>\n `\n )}\n </div>`\n // <!-- ${this.renderExposeInline(model, child, allExposes)} -->\n }\n\n /**\n * Render a node and all its descendants inline (used for child rows).\n */\n private renderExposeInline(\n model: ApiModel,\n expose: ExposedEntity,\n allExposes: ExposedEntity[]\n ): TemplateResult | typeof nothing {\n if (!expose || !expose.key) {\n return nothing\n }\n const current = this.renderEntity(model, expose)\n\n const children = allExposes.filter((e) => {\n const parentRef = (e as unknown as { parent?: { key?: string } }).parent\n const parentKey = parentRef?.key\n return parentKey === expose.key\n })\n\n if (!children.length) {\n return html`${current}`\n }\n\n return html`${current}${children.map(\n (child) => html`\n <span class=\"expose-sep\">→</span>\n ${this.renderExposeInline(model, child, allExposes)}\n `\n )}`\n }\n\n private renderEntity(model: ApiModel, expose: ExposedEntity): TemplateResult {\n const entity = model.domain?.findEntity(expose.entity.key, expose.entity.domain)\n if (!entity) {\n return this.renderMissingEntity(expose)\n }\n return html`<api-modeling-entity-card\n .model=${model}\n .domainKey=${expose.key}\n ?showCollectionActions=\"${expose.hasCollection}\"\n @select=\"${this.handleActionSelect}\"\n @edit=\"${this.handleEditAction}\"\n @remove=\"${this.handleRemoveAction}\"\n ></api-modeling-entity-card>`\n }\n\n private renderMissingEntity(expose: ExposedEntity): TemplateResult {\n return html`<div class=\"entity missing-entity\">\n <span class=\"entity-missing-label\">Missing entity:</span>\n <span class=\"api-action-entity\">${expose.key}</span>\n </div>`\n }\n\n private renderEntityActions(expose: ExposedEntity): TemplateResult {\n const hasActions = !!expose.actions.length\n if (!hasActions) {\n return html`<div class=\"no-actions\">\n <p class=\"body-medium\">No API actions are defined for this object.</p>\n </div>`\n }\n return html`${this.renderCollectionActions(expose)}${this.renderResourceActions(expose)}`\n }\n\n private renderCollectionActions(expose: ExposedEntity): TemplateResult {\n const actions = expose.actions.filter((action) => ['create', 'list', 'search'].includes(action.kind))\n const hasActions = !!actions.length\n const templates: TemplateResult[] = []\n if (!hasActions) {\n templates.push(html`<p class=\"body-medium\">No API actions are defined for this collection.</p>`)\n } else {\n templates.push(...actions.map((action) => this.renderEntityAction(action)))\n }\n return html`<div class=\"actions-group\">\n <div class=\"label-small\">Collection</div>\n ${templates}\n </div>`\n }\n\n private renderResourceActions(expose: ExposedEntity): TemplateResult {\n const actions = expose.actions.filter((action) => ['read', 'update', 'delete'].includes(action.kind))\n const hasActions = !!actions.length\n const templates: TemplateResult[] = []\n if (!hasActions) {\n templates.push(html`<p class=\"body-medium\">No API actions are defined for this resource.</p>`)\n } else {\n templates.push(...actions.map((action) => this.renderEntityAction(action)))\n }\n return html`<div class=\"actions-group\">\n <div class=\"label-small\">Resource</div>\n ${templates}\n </div>`\n }\n\n private renderEntityAction(action: ApiAction): TemplateResult {\n return html`<ui-chip type=\"assist\">${action.kind}</ui-chip>`\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ApiModelingActionsScreen.js","sourceRoot":"","sources":["../../../../src/modeling/internals/ApiModelingActionsScreen.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAuB,OAAO,EAAE,MAAM,KAAK,CAAA;AAGxD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;;sBAgCJ,iBAAiB;;;;;;;iBAAlD,wBAAyB,SAAQ,WAAiB;;;qCAIpE,KAAK,EAAE;mCAKP,KAAK,EAAE;YALC,gLAAS,SAAS,6BAAT,SAAS,6FAAQ;YAK1B,0KAAS,OAAO,6BAAP,OAAO,yFAAsB;;;QALtC,+EAAqB,KAAK;QAEnC;;WAEG;UAJgC;QAHnC;;WAEG;QACM,IAAS,SAAS,+CAAQ;QAA1B,IAAS,SAAS,qDAAQ;QAK1B,mIAAoC,EAAE,GAAA;QAH/C;;WAEG;QACM,IAAS,OAAO,6CAAsB;QAAtC,IAAS,OAAO,mDAAsB;QAErC,iBAAiB,CAAC,KAA2B;YACrD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;YACtB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;YACjB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAM;YACR,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAClB,OAAM;YACR,CAAC;YACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;YACrB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAChE,CAAC;QAEkB,kBAAkB;YACnC,4GAA4G;YAC5G,0FAA0F;YAC1F,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAClC,IAAI,CAAC,aAAa,EAAE,CAAA;QACtB,CAAC;QAED;;;WAGG;QACO,kBAAkB;YAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAA;QAC9C,CAAC;QAED;;;;WAIG;QACO,kBAAkB,CAAC,CAAQ;YACnC,MAAM,IAAI,GAAG,CAAC,CAAC,aAA6C,CAAA;YAC5D,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAA;YACzB,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,OAAM;YACR,CAAC;YACD,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAA+B,gBAAgB,EAAE;gBAC9D,MAAM,EAAE;oBACN,SAAS,EAAE,EAAE;iBACd;aACF,CAAC,CACH,CAAA;QACH,CAAC;QAED;;;;WAIG;QACO,kBAAkB,CAAC,CAAgC;YAC3D,MAAM,IAAI,GAAG,CAAC,CAAC,aAA6C,CAAA;YAC5D,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAA;YACzB,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,OAAM;YACR,CAAC;YACD,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAwB,aAAa,EAAE;gBACpD,MAAM,EAAE;oBACN,SAAS,EAAE,EAAE;oBACb,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;iBACpB;aACF,CAAC,CACH,CAAA;QACH,CAAC;QAES,gBAAgB,CAAC,CAAQ;YACjC,MAAM,IAAI,GAAG,CAAC,CAAC,aAA6C,CAAA;YAC5D,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAA;YACzB,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,OAAM;YACR,CAAC;YACD,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAA+B,cAAc,EAAE;gBAC5D,MAAM,EAAE;oBACN,SAAS,EAAE,EAAE;iBACd;aACF,CAAC,CACH,CAAA;QACH,CAAC;QAEQ,MAAM;YACb,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;YACxB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,OAAO,CAAA;YAChB,CAAC;YACD,OAAO,IAAI,CAAA;;;;;;;;;6BASc,IAAI,CAAC,kBAAkB;;QAE5C,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA,iCAAiC;KACrF,CAAA;QACH,CAAC;QAEO,aAAa,CAAC,KAAe;YACnC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACzB,OAAO,IAAI,CAAC,eAAe,EAAE,CAAA;YAC/B,CAAC;YACD,OAAO,IAAI,CAAA;QACP,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;WAChE,CAAA;QACT,CAAC;QAEO,eAAe;YACrB,OAAO,IAAI,CAAA;;;;;;;;KAQV,CAAA;QACH,CAAC;QAEO,iBAAiB,CAAC,KAAe,EAAE,UAAyB;YAClE,sFAAsF;YACtF,6EAA6E;YAC7E,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAA;YACtC,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;YAChE,OAAO,IAAI,CAAA,6BAA6B,GAAG,QAAQ,CAAA;QACrD,CAAC;QAED;;;WAGG;QACK,gBAAgB,CACtB,KAAe,EACf,UAAyB,EACzB,UAA2B;YAE3B,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;gBACnC,OAAO,OAAO,CAAA;YAChB,CAAC;YAED,wBAAwB;YACxB,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;YAEpD,sDAAsD;YACtD,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,UAAU,CAAC,GAAG,CAAC,CAAA;YAE3E,yCAAyC;YACzC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACrB,OAAO,IAAI,CAAA,mCAAmC,OAAO,QAAQ,CAAA;YAC/D,CAAC;YAED,4EAA4E;YAC5E,4DAA4D;YAC5D,OAAO,IAAI,CAAA,GAAG,OAAO;;UAEf,QAAQ,CAAC,GAAG,CACZ,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAA;;;gBAGT,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC;;WAEpD,CACF;aACI,CAAA;YACT,gEAAgE;QAClE,CAAC;QAED;;WAEG;QACK,kBAAkB,CACxB,KAAe,EACf,MAAqB,EACrB,UAA2B;YAE3B,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;gBAC3B,OAAO,OAAO,CAAA;YAChB,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YAEhD,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;gBACvC,MAAM,SAAS,GAAI,CAA8C,CAAC,MAAM,CAAA;gBACxE,MAAM,SAAS,GAAG,SAAS,EAAE,GAAG,CAAA;gBAChC,OAAO,SAAS,KAAK,MAAM,CAAC,GAAG,CAAA;YACjC,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACrB,OAAO,IAAI,CAAA,GAAG,OAAO,EAAE,CAAA;YACzB,CAAC;YAED,OAAO,IAAI,CAAA,GAAG,OAAO,GAAG,QAAQ,CAAC,GAAG,CAClC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAA;;UAEX,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC;OACpD,CACF,EAAE,CAAA;QACL,CAAC;QAEO,YAAY,CAAC,KAAe,EAAE,MAAqB;YACzD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAChF,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAA;YACzC,CAAC;YACD,OAAO,IAAI,CAAA;eACA,KAAK;mBACD,MAAM,CAAC,GAAG;gCACG,MAAM,CAAC,aAAa;iBACnC,IAAI,CAAC,kBAAkB;eACzB,IAAI,CAAC,gBAAgB;iBACnB,IAAI,CAAC,kBAAkB;iCACP,CAAA;QAC/B,CAAC;QAEO,mBAAmB,CAAC,MAAqB;YAC/C,OAAO,IAAI,CAAA;;wCAEyB,MAAM,CAAC,GAAG;WACvC,CAAA;QACT,CAAC;QAEO,mBAAmB,CAAC,MAAqB;YAC/C,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAA;YAC1C,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAA;;aAEJ,CAAA;YACT,CAAC;YACD,OAAO,IAAI,CAAA,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAA;QAC3F,CAAC;QAEO,uBAAuB,CAAC,MAAqB;YACnD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;YACrG,MAAM,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAA;YACnC,MAAM,SAAS,GAAqB,EAAE,CAAA;YACtC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAA,4EAA4E,CAAC,CAAA;YAClG,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YAC7E,CAAC;YACD,OAAO,IAAI,CAAA;;QAEP,SAAS;WACN,CAAA;QACT,CAAC;QAEO,qBAAqB,CAAC,MAAqB;YACjD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;YACrG,MAAM,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAA;YACnC,MAAM,SAAS,GAAqB,EAAE,CAAA;YACtC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAA,0EAA0E,CAAC,CAAA;YAChG,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YAC7E,CAAC;YACD,OAAO,IAAI,CAAA;;QAEP,SAAS;WACN,CAAA;QACT,CAAC;QAEO,kBAAkB,CAAC,MAAiB;YAC1C,OAAO,IAAI,CAAA,0BAA0B,MAAM,CAAC,IAAI,YAAY,CAAA;QAC9D,CAAC;;;;;;;AAnSH;;;;;;;;;;GAUG;AACH,wCAyRC","sourcesContent":["import { html, type TemplateResult, nothing } from 'lit'\nimport { ExposedEntity, type ApiModel } from '@api-client/core/browser.js'\nimport type { ApiAction } from '@api-client/core/modeling/types.js'\nimport { state } from 'lit/decorators.js'\nimport { ApiModelingScreen } from './ApiModelingScreen.js'\nimport type ApiModelingEntityCardElement from './ApiModelingEntityCard.js'\n\nexport interface EditActionEventDetail {\n /**\n * The id of the exposed entity.\n */\n exposedId: string\n /**\n * The kind of operation to edit (list, read, delete, etc)\n */\n kind: string\n}\n\nexport interface EditExposedEntityEventDetail {\n /**\n * The id of the exposed entity.\n */\n exposedId: string\n}\n\n/**\n * A screen that allows the user to expose data entities as a root level actions\n * and configure their properties:\n * - Collection actions (create, list, search)\n * - Resource actions (read, update, delete)\n *\n * @fires exposed-new - When the user wants to expose an entity.\n * @fires action-edit - When the user wants to edit an action.\n * @fires exposed-edit - When the user wants to edit an exposed entity.\n * @fires exposed-remove - When the user wants to remove an exposed entity.\n */\nexport default class ApiModelingActionsScreen extends ApiModelingScreen {\n /**\n * A flag that determines whether the API has added a data domain.\n */\n @state() accessor hasDomain = false\n\n /**\n * The list of exposed entities **on the root level**.\n */\n @state() accessor exposed: ExposedEntity[] = []\n\n protected handleModelChange(model: ApiModel | undefined): void {\n this.hasDomain = false\n this.exposed = []\n if (!model) {\n return\n }\n\n if (!model.domain) {\n return\n }\n this.hasDomain = true\n this.exposed = model.exposes.filter((expose) => expose.isRoot)\n }\n\n protected override handleDomainChange(): void {\n // TODO: this is too much for a model change, but temporary we will re-render the screen on any model change\n // until we figure out how to expose a new entity to the API and capture only that change.\n this.handleModelChange(this.model)\n this.requestUpdate()\n }\n\n /**\n * A handler for the \"Add data\" button click.\n * It dispatches the `exposeentity` event to notify the parent component that the user wants to expose an entity.\n */\n protected handleAddDataClick(): void {\n this.dispatchEvent(new Event('exposed-new'))\n }\n\n /**\n * A handler for the \"Remove action\" button click.\n * It removes the action from the model and updates the exposed list.\n * @param event The event object.\n */\n protected handleRemoveAction(e: Event): void {\n const card = e.currentTarget as ApiModelingEntityCardElement\n const id = card.domainKey\n if (!id) {\n return\n }\n this.dispatchEvent(\n new CustomEvent<EditExposedEntityEventDetail>('exposed-remove', {\n detail: {\n exposedId: id,\n },\n })\n )\n }\n\n /**\n * Handles the action selection event.\n * It dispatches the `editaction` event to notify the parent component that the user wants to edit an action.\n * @param e The event object.\n */\n protected handleActionSelect(e: CustomEvent<{ kind: string }>): void {\n const card = e.currentTarget as ApiModelingEntityCardElement\n const id = card.domainKey\n if (!id) {\n return\n }\n this.dispatchEvent(\n new CustomEvent<EditActionEventDetail>('action-edit', {\n detail: {\n exposedId: id,\n kind: e.detail.kind,\n },\n })\n )\n }\n\n protected handleEditAction(e: Event): void {\n const card = e.currentTarget as ApiModelingEntityCardElement\n const id = card.domainKey\n if (!id) {\n return\n }\n this.dispatchEvent(\n new CustomEvent<EditExposedEntityEventDetail>('exposed-edit', {\n detail: {\n exposedId: id,\n },\n })\n )\n }\n\n override render(): TemplateResult | typeof nothing {\n const model = this.model\n if (!model) {\n return nothing\n }\n return html`\n <div class=\"config-section horizontal center\">\n <div class=\"section-header\">\n <h2 class=\"headline-medium\">API Actions</h2>\n <p class=\"body-medium\">\n You define your API logic by selecting data objects you want to use in your API and adding predefined\n actions to these data.\n </p>\n </div>\n <ui-button @click=\"${this.handleAddDataClick}\">Add data</ui-button>\n </div>\n ${this.hasDomain ? this.renderContent(model) : html`<p>No data domain selected.</p>`}\n `\n }\n\n private renderContent(model: ApiModel): TemplateResult | typeof nothing {\n if (!this.exposed.length) {\n return this.renderEmptyView()\n }\n return html`<div class=\"exposed-canvas\">\n ${this.exposed.map((expose) => this.renderExposedPath(model, expose))}\n </div>`\n }\n\n private renderEmptyView(): TemplateResult | typeof nothing {\n return html`\n <section class=\"empty-screen\">\n <div class=\"icon-wrapper\">\n <ui-icon class=\"icon\" icon=\"api\"></ui-icon>\n </div>\n <p class=\"empty-message body-large\">Find your API logic here</p>\n <p class=\"empty-message body-medium\">Add a data entity to define your API behavior.</p>\n </section>\n `\n }\n\n private renderExposedPath(model: ApiModel, rootExpose: ExposedEntity): TemplateResult | typeof nothing {\n // Render the root expose and all its nested children (by parent key) in a single row.\n // Use the model.exposes list as the source of truth for child relationships.\n const allExposes = model.exposes ?? []\n const row = this.renderExposeTree(model, rootExpose, allExposes)\n return html`<div class=\"exposure-row\">${row}</div>`\n }\n\n /**\n * Recursively render an expose and its children. Shows entity name only.\n * The model guarantees no infinite cycles, so the UI does not need to track visited nodes.\n */\n private renderExposeTree(\n model: ApiModel,\n rootExpose: ExposedEntity,\n allExposes: ExposedEntity[]\n ): TemplateResult | typeof nothing {\n if (!rootExpose || !rootExpose.key) {\n return nothing\n }\n\n // Render current entity\n const current = this.renderEntity(model, rootExpose)\n\n // Find children that reference this expose as parent.\n const children = allExposes.filter((e) => e.parent?.key === rootExpose.key)\n\n // If no children, render just the entity\n if (!children.length) {\n return html`<div class=\"expose-node inline\">${current}</div>`\n }\n\n // Render current entity and stack children vertically. Each child row shows\n // the child and its inline descendants (classic tree view).\n return html`${current}\n <div class=\"children-list\">\n ${children.map(\n (child) => html`\n <div class=\"child-row\">\n <span class=\"expose-sep\">→</span>\n ${this.renderExposeTree(model, child, allExposes)}\n </div>\n `\n )}\n </div>`\n // <!-- ${this.renderExposeInline(model, child, allExposes)} -->\n }\n\n /**\n * Render a node and all its descendants inline (used for child rows).\n */\n private renderExposeInline(\n model: ApiModel,\n expose: ExposedEntity,\n allExposes: ExposedEntity[]\n ): TemplateResult | typeof nothing {\n if (!expose || !expose.key) {\n return nothing\n }\n const current = this.renderEntity(model, expose)\n\n const children = allExposes.filter((e) => {\n const parentRef = (e as unknown as { parent?: { key?: string } }).parent\n const parentKey = parentRef?.key\n return parentKey === expose.key\n })\n\n if (!children.length) {\n return html`${current}`\n }\n\n return html`${current}${children.map(\n (child) => html`\n <span class=\"expose-sep\">→</span>\n ${this.renderExposeInline(model, child, allExposes)}\n `\n )}`\n }\n\n private renderEntity(model: ApiModel, expose: ExposedEntity): TemplateResult {\n const entity = model.domain?.findEntity(expose.entity.key, expose.entity.domain)\n if (!entity) {\n return this.renderMissingEntity(expose)\n }\n return html`<api-modeling-entity-card\n .model=${model}\n .domainKey=${expose.key}\n ?showCollectionActions=\"${expose.hasCollection}\"\n @select=\"${this.handleActionSelect}\"\n @edit=\"${this.handleEditAction}\"\n @remove=\"${this.handleRemoveAction}\"\n ></api-modeling-entity-card>`\n }\n\n private renderMissingEntity(expose: ExposedEntity): TemplateResult {\n return html`<div class=\"entity missing-entity\">\n <span class=\"entity-missing-label\">Missing entity:</span>\n <span class=\"api-action-entity\">${expose.key}</span>\n </div>`\n }\n\n private renderEntityActions(expose: ExposedEntity): TemplateResult {\n const hasActions = !!expose.actions.length\n if (!hasActions) {\n return html`<div class=\"no-actions\">\n <p class=\"body-medium\">No API actions are defined for this object.</p>\n </div>`\n }\n return html`${this.renderCollectionActions(expose)}${this.renderResourceActions(expose)}`\n }\n\n private renderCollectionActions(expose: ExposedEntity): TemplateResult {\n const actions = expose.actions.filter((action) => ['create', 'list', 'search'].includes(action.kind))\n const hasActions = !!actions.length\n const templates: TemplateResult[] = []\n if (!hasActions) {\n templates.push(html`<p class=\"body-medium\">No API actions are defined for this collection.</p>`)\n } else {\n templates.push(...actions.map((action) => this.renderEntityAction(action)))\n }\n return html`<div class=\"actions-group\">\n <div class=\"label-small\">Collection</div>\n ${templates}\n </div>`\n }\n\n private renderResourceActions(expose: ExposedEntity): TemplateResult {\n const actions = expose.actions.filter((action) => ['read', 'update', 'delete'].includes(action.kind))\n const hasActions = !!actions.length\n const templates: TemplateResult[] = []\n if (!hasActions) {\n templates.push(html`<p class=\"body-medium\">No API actions are defined for this resource.</p>`)\n } else {\n templates.push(...actions.map((action) => this.renderEntityAction(action)))\n }\n return html`<div class=\"actions-group\">\n <div class=\"label-small\">Resource</div>\n ${templates}\n </div>`\n }\n\n private renderEntityAction(action: ApiAction): TemplateResult {\n return html`<ui-chip type=\"assist\">${action.kind}</ui-chip>`\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DomainBrowser.d.ts","sourceRoot":"","sources":["../../../../src/modeling/internals/DomainBrowser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAA;AAI7E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EACV,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,aAAa,CAAA;AACpB,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,eAAe,EACrB,MAAM,6BAA6B,CAAA;AAGpC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAElE,UAAU,eAAe;IACvB;;OAEG;IACH,KAAK,EAAE,CAAC,eAAe,GAAG,WAAW,GAAG,YAAY,CAAC,EAAE,CAAA;IACvD;;OAEG;IACH,QAAQ,CAAC,EAAE,wBAAwB,CAAA;IACnC;;OAEG;IACH,MAAM,CAAC,EAAE,eAAe,GAAG,WAAW,CAAA;CACvC;AAED,UAAU,eAAe;IACvB;;OAEG;IACH,WAAW,EAAE,sBAAsB,EAAE,CAAA;IACrC;;OAEG;IACH,QAAQ,CAAC,EAAE,wBAAwB,CAAA;CACpC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,eAAe;IACxD;;OAEG;IAC0B,QAAQ,CAAC,UAAU,UAAQ;IACxD;;OAEG;IACyB,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAS;IAC7E;;;OAGG;IACwB,QAAQ,CAAC,OAAO,EAAE,qBAAqB,EAAE,GAAG,SAAS,CAAA;IAChF;;;OAGG;IACM,QAAQ,CAAC,WAAW,EAAE,QAAQ,GAAG,QAAQ,CAAW;IAC7D;;OAEG;IACM,QAAQ,CAAC,mBAAmB,UAAQ;IAE7C;;OAEG;IACH,MAAM,EAAE,eAAe,CAEtB;IAED;;OAEG;IACH,OAAO,CAAC,EAAE,eAAe,CAAA;IAEzB;;OAEG;IACH,IAAI,eAAe,IAAI,eAAe,GAAG,eAAe,CAQvD;cAEkB,UAAU,CAAC,EAAE,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAW7D,SAAS,CAAC,qBAAqB,IAAI,IAAI;IAcvC;;;OAGG;IACH,SAAS,CAAC,qBAAqB,CAAC,SAAS,EAAE,eAAe,GAAG,eAAe,GAAG,IAAI;IAgCnF;;;OAGG;IACH,SAAS,CAAC,wBAAwB,IAAI,IAAI;IA6B1C;;OAEG;cACa,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB5C;;;;OAIG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAQhC;;;OAGG;IACH,SAAS,CAAC,eAAe,CAAC,CAAC,EAAE,WAAW,CAAC,kBAAkB,CAAC,GAAG,IAAI;IAUnE;;OAEG;IACH,SAAS,CAAC,gBAAgB,IAAI,IAAI;IAiBlC;;;;;;;OAOG;IACH,YAAY,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAe7F;;;;OAIG;IACH,SAAS,CAAC,gBAAgB,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAa1C;;;OAGG;IACH,SAAS,CAAC,gBAAgB,CAAC,CAAC,EAAE,WAAW,CAAC;QAAE,IAAI,EAAE,WAAW,CAAA;KAAE,CAAC,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"DomainBrowser.d.ts","sourceRoot":"","sources":["../../../../src/modeling/internals/DomainBrowser.ts"],"names":[],"mappings":"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"}
|
|
@@ -333,7 +333,10 @@ let DomainBrowser = (() => {
|
|
|
333
333
|
}
|
|
334
334
|
this.setupAllowedSelection(state);
|
|
335
335
|
this.requestUpdate();
|
|
336
|
-
this.
|
|
336
|
+
if (this.hasAllowedSelection) {
|
|
337
|
+
// We only notify the selection if it is allowed.
|
|
338
|
+
this.notifySelected(state.selected);
|
|
339
|
+
}
|
|
337
340
|
}
|
|
338
341
|
notifySelected(selected) {
|
|
339
342
|
this.dispatchEvent(new CustomEvent('select', { detail: selected, bubbles: false, composed: false }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DomainBrowser.js","sourceRoot":"","sources":["../../../../src/modeling/internals/DomainBrowser.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing, type PropertyValues, type TemplateResult } from 'lit'\nimport { property, state } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { ModelingElement } from './ModelingElement.js'\nimport type {\n DomainBrowseRecentItem,\n DomainBrowserPickItem,\n DomainBrowserPickReason,\n DomainBrowseSelectedItem,\n} from '../types.js'\nimport {\n DomainEntityKind,\n DomainFileKind,\n DomainModelKind,\n DomainNamespaceKind,\n type DomainEntity,\n type DomainModel,\n type DomainNamespace,\n} from '@api-client/core/browser.js'\nimport { Events } from '../../events/Events.js'\nimport { getDomainIconType } from '../lib/ui_mapping.js'\nimport type { TabSelectionDetail } from '../../md/tabs/ui-tabs.js'\n\ninterface DomainPartition {\n /**\n * The list of currently rendered items.\n */\n items: (DomainNamespace | DomainModel | DomainEntity)[]\n /**\n * The currently selected item.\n */\n selected?: DomainBrowseSelectedItem\n /**\n * The parent object, if any\n */\n parent?: DomainNamespace | DomainModel\n}\n\ninterface RecentPartition {\n /**\n * The list of recently picked items.\n */\n currentList: DomainBrowseRecentItem[]\n /**\n * The currently selected item.\n */\n selected?: DomainBrowseSelectedItem\n}\n\n/**\n * An element that provides browsing capabilities for a data domain.\n *\n * @fires select - Fired when a domain item is selected or deselected.\n * The detail contains `DomainBrowseSelectedItem` with the selected item's key, kind,\n * namespace, and whether it's a parent (can be opened), or `undefined` if deselected.\n */\nexport default class DomainBrowser extends ModelingElement {\n /**\n * Whether to include recent items in the browsing.\n */\n @property({ type: Boolean }) accessor withRecent = false\n /**\n * The reason to browse the domain.\n */\n @property({ type: String }) accessor reason: DomainBrowserPickReason = 'pick'\n /**\n * Specifies which items are allowed to select in the UI to return the result\n * back to the application. By default all data domain items are allowed.\n */\n @property({ type: Array }) accessor allowed: DomainBrowserPickItem[] | undefined\n /**\n * The currently selected tab.\n * @default 'domain'\n */\n @state() accessor selectedTab: 'recent' | 'domain' = 'domain'\n /**\n * Whether there is an allowed selection.\n */\n @state() accessor hasAllowedSelection = false\n\n /**\n * The recent browsing partition state.\n */\n recent: RecentPartition = {\n currentList: [],\n }\n\n /**\n * The current data domain partition state.\n */\n current?: DomainPartition\n\n /**\n * Returns the active browsing partition based on the selected tab.\n */\n get activePartition(): DomainPartition | RecentPartition {\n if (this.selectedTab === 'recent') {\n return this.recent\n }\n if (!this.current) {\n throw new Error('Browsing domain partition is not set.')\n }\n return this.current\n }\n\n protected override willUpdate(cp: PropertyValues<this>): void {\n super.willUpdate(cp)\n if (cp.has('root')) {\n this.setupCurrentPartition()\n this.setupRecent()\n }\n if (cp.has('withRecent')) {\n this.setupRecent()\n }\n }\n\n protected setupCurrentPartition(): void {\n const { root } = this\n if (!root) {\n this.current = undefined\n this.hasAllowedSelection = false\n return\n }\n this.current = {\n items: [],\n }\n this.setupAllowedSelection(this.current)\n this.updateBrowsingDomainList()\n }\n\n /**\n * Sets up whether a selection is allowed based on the current state.\n * @param partition - The partition to check.\n */\n protected setupAllowedSelection(partition: DomainPartition | RecentPartition): void {\n const { allowed = [] } = this\n const { selected } = partition\n if (!Array.isArray(allowed) || allowed.length === 0) {\n if (selected) {\n this.hasAllowedSelection = true\n }\n return\n }\n if (!selected) {\n this.hasAllowedSelection = false\n return\n }\n const { kind } = selected\n if (!kind) {\n this.hasAllowedSelection = false\n return\n }\n this.hasAllowedSelection = allowed.some((item) => {\n if (item === DomainEntityKind) {\n return kind === DomainEntityKind\n }\n if (item === DomainModelKind) {\n return kind === DomainModelKind\n }\n if (item === DomainNamespaceKind) {\n return kind === DomainNamespaceKind || kind === DomainFileKind\n }\n return false\n })\n }\n\n /**\n * Updates the current list of items in a browsing domain partition.\n * @param partition - The partition to update.\n */\n protected updateBrowsingDomainList(): void {\n const { root, current } = this\n if (!current || !root) {\n return\n }\n current.items = []\n const { parent } = current\n if (!parent) {\n current.items = [...root.listNamespaces(), ...root.listModels()]\n if (root.dependencies.size > 0) {\n for (const foreign of root.dependencies.values()) {\n current.items.push(...root.listForeignNamespaces(foreign.key))\n current.items.push(...root.listForeignModels(foreign.key))\n }\n }\n } else if (parent.kind === DomainModelKind) {\n const model = root.findModel(parent.key, parent.namespace)\n if (model) {\n current.items = [...model.listEntities()]\n }\n } else if (parent.kind === DomainNamespaceKind) {\n const namespace = root.findNamespace(parent.key, parent.namespace)\n if (namespace) {\n current.items = [...namespace.listNamespaces(), ...namespace.listModels()]\n }\n }\n this.requestUpdate()\n }\n\n /**\n * Requests the recent items from the context provider if `withRecent` is enabled.\n */\n protected async setupRecent(): Promise<void> {\n if (!this.withRecent) {\n this.recent.currentList = []\n if (this.selectedTab === 'recent') {\n this.selectedTab = 'domain'\n }\n return\n }\n const { root } = this\n if (!root) {\n this.recent.currentList = []\n return\n }\n const result = await Events.Domain.Browse.recent(root.key, this.allowed, this)\n this.recent.currentList = result ?? []\n }\n\n /**\n * Checks if an item is selected.\n * @param key The key of the item to check.\n * @returns True if the item is selected, false otherwise.\n */\n isSelected(key: string): boolean {\n const browsing = this.activePartition\n if (!browsing.selected) {\n return false\n }\n return browsing.selected.key === key\n }\n\n /**\n * Handles the tab selection event.\n * @param e - The tab selection event.\n */\n protected handleTabSelect(e: CustomEvent<TabSelectionDetail>): void {\n const { item } = e.detail\n const { key } = item.dataset\n if (!key) {\n return\n }\n this.selectedTab = key as 'recent' | 'domain'\n this.requestUpdate()\n }\n\n /**\n * Handles the click event to go back to the parent.\n */\n protected handleParentBack(): void {\n const source = this.current\n if (!source || !source.parent) {\n return\n }\n if (this.selectedTab === 'domain') {\n const domainElement = source.parent as DomainNamespace | DomainModel\n const ns = domainElement.getParentInstance()\n if (!ns || ns.key === ns.domain.key) {\n source.parent = undefined\n } else {\n this.selectParent(source, ns.key, ns.kind, ns.domain.key)\n }\n this.updateBrowsingDomainList()\n }\n }\n\n /**\n * Selects a parent item.\n *\n * @param partition - The partition to select the parent in.\n * @param key - The key of the parent item.\n * @param kind - The kind of the parent item.\n * @throws {Error} If the root is not set or the item is not found.\n */\n selectParent(partition: DomainPartition, key: string, kind: string, namespace?: string): void {\n const { root } = this\n if (!root) {\n throw new Error(`Unable to select parent. The root is not set.`)\n }\n if (kind === DomainModelKind) {\n partition.parent = root.findModel(key, namespace)\n } else if (kind === DomainNamespaceKind) {\n partition.parent = root.findNamespace(key, namespace)\n }\n if (!partition.parent) {\n throw new Error(`Unable to select parent. The item with key \"${key}\" was not found.`)\n }\n }\n\n /**\n * Handles the click event to open a parent item.\n *\n * @param e - The click event.\n */\n protected handleOpenParent(e: Event): void {\n e.preventDefault()\n e.stopPropagation()\n const button = e.currentTarget as HTMLElement\n const item = button.parentElement as HTMLElement\n const { kind, key, parent, namespace } = item.dataset\n if (!key || !kind || !parent || parent !== 'true' || !this.current) {\n return\n }\n this.selectParent(this.current, key, kind, namespace)\n this.updateBrowsingDomainList()\n }\n\n /**\n * Handles the selection event on a list.\n * @param e The selection event.\n */\n protected handleItemSelect(e: CustomEvent<{ item: HTMLElement }>): void {\n const { item } = e.detail\n if (!item) {\n return\n }\n const { kind, key, parent, namespace } = item.dataset\n if (!key || !kind || !parent || !namespace) {\n return\n }\n const state = this.activePartition\n if (this.isSelected(key)) {\n state.selected = undefined\n } else {\n state.selected = {\n key,\n kind,\n isParent: parent === 'true',\n namespace,\n }\n }\n this.setupAllowedSelection(state)\n this.requestUpdate()\n this.notifySelected(state.selected)\n }\n\n notifySelected(selected: DomainBrowseSelectedItem | undefined): void {\n this.dispatchEvent(\n new CustomEvent<DomainBrowseSelectedItem>('select', { detail: selected, bubbles: false, composed: false })\n )\n }\n\n override render(): TemplateResult | typeof nothing {\n if (!this.root) {\n return nothing\n }\n const result: (TemplateResult | typeof nothing)[] = []\n result.push(this.renderHeader())\n if (this.selectedTab === 'recent') {\n result.push(this.renderRecent())\n } else if (this.selectedTab === 'domain') {\n result.push(this.renderBrowsingDomain())\n }\n return html`${result}`\n }\n\n /**\n * Renders the header of the dialog.\n * @private\n */\n protected renderHeader(): TemplateResult | typeof nothing {\n if (this.selectedTab === 'recent') {\n return this.renderTabs()\n }\n const activePartition = this.current\n if (!activePartition) {\n return nothing\n }\n const { parent } = activePartition\n if (parent) {\n return this.renderParentHeader(parent)\n }\n return this.renderTabs()\n }\n\n /**\n * Renders the tabs.\n * @private\n */\n protected renderTabs(): TemplateResult {\n const { withRecent, selectedTab, root } = this\n return html`<ui-tabs @change=\"${this.handleTabSelect}\" class=\"tabs\">\n ${withRecent\n ? html`<ui-tab aria-controls=\"recent\" data-key=\"recent\" ?selected=\"${selectedTab === 'recent'}\">Recent</ui-tab>`\n : nothing}\n ${root?.key\n ? html`<ui-tab aria-controls=\"domain\" data-key=\"domain\" ?selected=\"${selectedTab === 'domain'}\"\n >Data domain</ui-tab\n >`\n : nothing}\n </ui-tabs>`\n }\n\n /**\n * Renders the parent header.\n * @private\n * @param parent - The parent item.\n */\n protected renderParentHeader(parent: DomainNamespace | DomainModel): TemplateResult {\n const label = parent.info.displayName || parent.info.name\n return html`<div class=\"parent-header\">\n <ui-icon-button @click=\"${this.handleParentBack}\"><ui-icon>arrow_back</ui-icon></ui-icon-button>\n <h2 class=\"title-medium\">${label}</h2>\n </div>\n <ui-divider></ui-divider>`\n }\n\n /**\n * Renders the recent items.\n * @private\n */\n protected renderRecent(): TemplateResult {\n const { recent } = this\n return html`<div id=\"recent\">${this.renderRecentItems(recent.currentList)}</div>`\n }\n\n /**\n * Renders the browsing domain items.\n * @private\n */\n protected renderBrowsingDomain(): TemplateResult | typeof nothing {\n const { current } = this\n if (!current) {\n return nothing\n }\n return html`<div id=\"domain\">${this.renderDomainItems(current.items)}</div>`\n }\n\n /**\n * Renders the domain items.\n * @private\n * @param items - The items to render.\n */\n protected renderDomainItems(items: (DomainNamespace | DomainModel | DomainEntity)[]): TemplateResult {\n const empty = items.length === 0\n if (empty) {\n return html`<p class=\"empty-list body-medium\">No items found.</p>`\n }\n return html`<ui-list selectActive class=\"domain-list\" @select=\"${this.handleItemSelect}\">\n ${items.map((item) => this.renderDomainItem(item))}\n </ui-list>`\n }\n\n protected renderRecentItems(items: DomainBrowseRecentItem[]): TemplateResult {\n const empty = items.length === 0\n if (empty) {\n return html`<p class=\"empty-list body-medium\">No items found.</p>`\n }\n return html`<ui-list selectActive class=\"domain-list\" @select=\"${this.handleItemSelect}\">\n ${items.map((item) => this.renderRecentItem(item))}\n </ui-list>`\n }\n\n protected renderDomainItem(item: DomainNamespace | DomainModel | DomainEntity): TemplateResult {\n const isParent = [DomainModelKind, DomainNamespaceKind].includes(item.kind)\n return this.renderItem(item.key, item.kind, item.info.getLabel(), { isParent, domain: item.namespace })\n }\n\n protected renderRecentItem(item: DomainBrowseRecentItem): TemplateResult {\n const { key, kind, label } = item\n return this.renderItem(key, kind, label, { domain: this.root?.key })\n }\n\n /**\n * Renders a generic item.\n * @private\n * @param key - The key of the item.\n * @param kind - The kind of the item.\n * @param label - The label of the item.\n * @param {{ noParent?: boolean }} opts - Additional options.\n */\n protected renderItem(\n key: string,\n kind: string,\n label: string,\n opts: { isParent?: boolean; domain?: string } = {}\n ): TemplateResult {\n const isSelected = this.isSelected(key)\n const parentValue = opts.isParent ? 'true' : 'false'\n const classes = {\n select: isSelected,\n }\n const icon = getDomainIconType(kind)\n return html`<ui-list-item\n data-kind=\"${kind}\"\n data-key=\"${key}\"\n data-parent=\"${parentValue}\"\n data-namespace=\"${ifDefined(opts.domain)}\"\n class=\"${classMap(classes)}\"\n >\n <ui-icon slot=\"start\" class=\"icon\" icon=\"${icon}\"></ui-icon>\n <span>${label}</span>\n ${isSelected && opts.isParent\n ? html`<ui-button color=\"filled\" slot=\"end\" @click=\"${this.handleOpenParent}\">Open</ui-button>`\n : nothing}\n </ui-list-item>`\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"DomainBrowser.js","sourceRoot":"","sources":["../../../../src/modeling/internals/DomainBrowser.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing, type PropertyValues, type TemplateResult } from 'lit'\nimport { property, state } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { ModelingElement } from './ModelingElement.js'\nimport type {\n DomainBrowseRecentItem,\n DomainBrowserPickItem,\n DomainBrowserPickReason,\n DomainBrowseSelectedItem,\n} from '../types.js'\nimport {\n DomainEntityKind,\n DomainFileKind,\n DomainModelKind,\n DomainNamespaceKind,\n type DomainEntity,\n type DomainModel,\n type DomainNamespace,\n} from '@api-client/core/browser.js'\nimport { Events } from '../../events/Events.js'\nimport { getDomainIconType } from '../lib/ui_mapping.js'\nimport type { TabSelectionDetail } from '../../md/tabs/ui-tabs.js'\n\ninterface DomainPartition {\n /**\n * The list of currently rendered items.\n */\n items: (DomainNamespace | DomainModel | DomainEntity)[]\n /**\n * The currently selected item.\n */\n selected?: DomainBrowseSelectedItem\n /**\n * The parent object, if any\n */\n parent?: DomainNamespace | DomainModel\n}\n\ninterface RecentPartition {\n /**\n * The list of recently picked items.\n */\n currentList: DomainBrowseRecentItem[]\n /**\n * The currently selected item.\n */\n selected?: DomainBrowseSelectedItem\n}\n\n/**\n * An element that provides browsing capabilities for a data domain.\n *\n * @fires select - Fired when a domain item is selected or deselected.\n * The detail contains `DomainBrowseSelectedItem` with the selected item's key, kind,\n * namespace, and whether it's a parent (can be opened), or `undefined` if deselected.\n */\nexport default class DomainBrowser extends ModelingElement {\n /**\n * Whether to include recent items in the browsing.\n */\n @property({ type: Boolean }) accessor withRecent = false\n /**\n * The reason to browse the domain.\n */\n @property({ type: String }) accessor reason: DomainBrowserPickReason = 'pick'\n /**\n * Specifies which items are allowed to select in the UI to return the result\n * back to the application. By default all data domain items are allowed.\n */\n @property({ type: Array }) accessor allowed: DomainBrowserPickItem[] | undefined\n /**\n * The currently selected tab.\n * @default 'domain'\n */\n @state() accessor selectedTab: 'recent' | 'domain' = 'domain'\n /**\n * Whether there is an allowed selection.\n */\n @state() accessor hasAllowedSelection = false\n\n /**\n * The recent browsing partition state.\n */\n recent: RecentPartition = {\n currentList: [],\n }\n\n /**\n * The current data domain partition state.\n */\n current?: DomainPartition\n\n /**\n * Returns the active browsing partition based on the selected tab.\n */\n get activePartition(): DomainPartition | RecentPartition {\n if (this.selectedTab === 'recent') {\n return this.recent\n }\n if (!this.current) {\n throw new Error('Browsing domain partition is not set.')\n }\n return this.current\n }\n\n protected override willUpdate(cp: PropertyValues<this>): void {\n super.willUpdate(cp)\n if (cp.has('root')) {\n this.setupCurrentPartition()\n this.setupRecent()\n }\n if (cp.has('withRecent')) {\n this.setupRecent()\n }\n }\n\n protected setupCurrentPartition(): void {\n const { root } = this\n if (!root) {\n this.current = undefined\n this.hasAllowedSelection = false\n return\n }\n this.current = {\n items: [],\n }\n this.setupAllowedSelection(this.current)\n this.updateBrowsingDomainList()\n }\n\n /**\n * Sets up whether a selection is allowed based on the current state.\n * @param partition - The partition to check.\n */\n protected setupAllowedSelection(partition: DomainPartition | RecentPartition): void {\n const { allowed = [] } = this\n const { selected } = partition\n if (!Array.isArray(allowed) || allowed.length === 0) {\n if (selected) {\n this.hasAllowedSelection = true\n }\n return\n }\n if (!selected) {\n this.hasAllowedSelection = false\n return\n }\n const { kind } = selected\n if (!kind) {\n this.hasAllowedSelection = false\n return\n }\n this.hasAllowedSelection = allowed.some((item) => {\n if (item === DomainEntityKind) {\n return kind === DomainEntityKind\n }\n if (item === DomainModelKind) {\n return kind === DomainModelKind\n }\n if (item === DomainNamespaceKind) {\n return kind === DomainNamespaceKind || kind === DomainFileKind\n }\n return false\n })\n }\n\n /**\n * Updates the current list of items in a browsing domain partition.\n * @param partition - The partition to update.\n */\n protected updateBrowsingDomainList(): void {\n const { root, current } = this\n if (!current || !root) {\n return\n }\n current.items = []\n const { parent } = current\n if (!parent) {\n current.items = [...root.listNamespaces(), ...root.listModels()]\n if (root.dependencies.size > 0) {\n for (const foreign of root.dependencies.values()) {\n current.items.push(...root.listForeignNamespaces(foreign.key))\n current.items.push(...root.listForeignModels(foreign.key))\n }\n }\n } else if (parent.kind === DomainModelKind) {\n const model = root.findModel(parent.key, parent.namespace)\n if (model) {\n current.items = [...model.listEntities()]\n }\n } else if (parent.kind === DomainNamespaceKind) {\n const namespace = root.findNamespace(parent.key, parent.namespace)\n if (namespace) {\n current.items = [...namespace.listNamespaces(), ...namespace.listModels()]\n }\n }\n this.requestUpdate()\n }\n\n /**\n * Requests the recent items from the context provider if `withRecent` is enabled.\n */\n protected async setupRecent(): Promise<void> {\n if (!this.withRecent) {\n this.recent.currentList = []\n if (this.selectedTab === 'recent') {\n this.selectedTab = 'domain'\n }\n return\n }\n const { root } = this\n if (!root) {\n this.recent.currentList = []\n return\n }\n const result = await Events.Domain.Browse.recent(root.key, this.allowed, this)\n this.recent.currentList = result ?? []\n }\n\n /**\n * Checks if an item is selected.\n * @param key The key of the item to check.\n * @returns True if the item is selected, false otherwise.\n */\n isSelected(key: string): boolean {\n const browsing = this.activePartition\n if (!browsing.selected) {\n return false\n }\n return browsing.selected.key === key\n }\n\n /**\n * Handles the tab selection event.\n * @param e - The tab selection event.\n */\n protected handleTabSelect(e: CustomEvent<TabSelectionDetail>): void {\n const { item } = e.detail\n const { key } = item.dataset\n if (!key) {\n return\n }\n this.selectedTab = key as 'recent' | 'domain'\n this.requestUpdate()\n }\n\n /**\n * Handles the click event to go back to the parent.\n */\n protected handleParentBack(): void {\n const source = this.current\n if (!source || !source.parent) {\n return\n }\n if (this.selectedTab === 'domain') {\n const domainElement = source.parent as DomainNamespace | DomainModel\n const ns = domainElement.getParentInstance()\n if (!ns || ns.key === ns.domain.key) {\n source.parent = undefined\n } else {\n this.selectParent(source, ns.key, ns.kind, ns.domain.key)\n }\n this.updateBrowsingDomainList()\n }\n }\n\n /**\n * Selects a parent item.\n *\n * @param partition - The partition to select the parent in.\n * @param key - The key of the parent item.\n * @param kind - The kind of the parent item.\n * @throws {Error} If the root is not set or the item is not found.\n */\n selectParent(partition: DomainPartition, key: string, kind: string, namespace?: string): void {\n const { root } = this\n if (!root) {\n throw new Error(`Unable to select parent. The root is not set.`)\n }\n if (kind === DomainModelKind) {\n partition.parent = root.findModel(key, namespace)\n } else if (kind === DomainNamespaceKind) {\n partition.parent = root.findNamespace(key, namespace)\n }\n if (!partition.parent) {\n throw new Error(`Unable to select parent. The item with key \"${key}\" was not found.`)\n }\n }\n\n /**\n * Handles the click event to open a parent item.\n *\n * @param e - The click event.\n */\n protected handleOpenParent(e: Event): void {\n e.preventDefault()\n e.stopPropagation()\n const button = e.currentTarget as HTMLElement\n const item = button.parentElement as HTMLElement\n const { kind, key, parent, namespace } = item.dataset\n if (!key || !kind || !parent || parent !== 'true' || !this.current) {\n return\n }\n this.selectParent(this.current, key, kind, namespace)\n this.updateBrowsingDomainList()\n }\n\n /**\n * Handles the selection event on a list.\n * @param e The selection event.\n */\n protected handleItemSelect(e: CustomEvent<{ item: HTMLElement }>): void {\n const { item } = e.detail\n if (!item) {\n return\n }\n const { kind, key, parent, namespace } = item.dataset\n if (!key || !kind || !parent || !namespace) {\n return\n }\n const state = this.activePartition\n if (this.isSelected(key)) {\n state.selected = undefined\n } else {\n state.selected = {\n key,\n kind,\n isParent: parent === 'true',\n namespace,\n }\n }\n this.setupAllowedSelection(state)\n this.requestUpdate()\n if (this.hasAllowedSelection) {\n // We only notify the selection if it is allowed.\n this.notifySelected(state.selected)\n }\n }\n\n notifySelected(selected: DomainBrowseSelectedItem | undefined): void {\n this.dispatchEvent(\n new CustomEvent<DomainBrowseSelectedItem>('select', { detail: selected, bubbles: false, composed: false })\n )\n }\n\n override render(): TemplateResult | typeof nothing {\n if (!this.root) {\n return nothing\n }\n const result: (TemplateResult | typeof nothing)[] = []\n result.push(this.renderHeader())\n if (this.selectedTab === 'recent') {\n result.push(this.renderRecent())\n } else if (this.selectedTab === 'domain') {\n result.push(this.renderBrowsingDomain())\n }\n return html`${result}`\n }\n\n /**\n * Renders the header of the dialog.\n * @private\n */\n protected renderHeader(): TemplateResult | typeof nothing {\n if (this.selectedTab === 'recent') {\n return this.renderTabs()\n }\n const activePartition = this.current\n if (!activePartition) {\n return nothing\n }\n const { parent } = activePartition\n if (parent) {\n return this.renderParentHeader(parent)\n }\n return this.renderTabs()\n }\n\n /**\n * Renders the tabs.\n * @private\n */\n protected renderTabs(): TemplateResult {\n const { withRecent, selectedTab, root } = this\n return html`<ui-tabs @change=\"${this.handleTabSelect}\" class=\"tabs\">\n ${withRecent\n ? html`<ui-tab aria-controls=\"recent\" data-key=\"recent\" ?selected=\"${selectedTab === 'recent'}\">Recent</ui-tab>`\n : nothing}\n ${root?.key\n ? html`<ui-tab aria-controls=\"domain\" data-key=\"domain\" ?selected=\"${selectedTab === 'domain'}\"\n >Data domain</ui-tab\n >`\n : nothing}\n </ui-tabs>`\n }\n\n /**\n * Renders the parent header.\n * @private\n * @param parent - The parent item.\n */\n protected renderParentHeader(parent: DomainNamespace | DomainModel): TemplateResult {\n const label = parent.info.displayName || parent.info.name\n return html`<div class=\"parent-header\">\n <ui-icon-button @click=\"${this.handleParentBack}\"><ui-icon>arrow_back</ui-icon></ui-icon-button>\n <h2 class=\"title-medium\">${label}</h2>\n </div>\n <ui-divider></ui-divider>`\n }\n\n /**\n * Renders the recent items.\n * @private\n */\n protected renderRecent(): TemplateResult {\n const { recent } = this\n return html`<div id=\"recent\">${this.renderRecentItems(recent.currentList)}</div>`\n }\n\n /**\n * Renders the browsing domain items.\n * @private\n */\n protected renderBrowsingDomain(): TemplateResult | typeof nothing {\n const { current } = this\n if (!current) {\n return nothing\n }\n return html`<div id=\"domain\">${this.renderDomainItems(current.items)}</div>`\n }\n\n /**\n * Renders the domain items.\n * @private\n * @param items - The items to render.\n */\n protected renderDomainItems(items: (DomainNamespace | DomainModel | DomainEntity)[]): TemplateResult {\n const empty = items.length === 0\n if (empty) {\n return html`<p class=\"empty-list body-medium\">No items found.</p>`\n }\n return html`<ui-list selectActive class=\"domain-list\" @select=\"${this.handleItemSelect}\">\n ${items.map((item) => this.renderDomainItem(item))}\n </ui-list>`\n }\n\n protected renderRecentItems(items: DomainBrowseRecentItem[]): TemplateResult {\n const empty = items.length === 0\n if (empty) {\n return html`<p class=\"empty-list body-medium\">No items found.</p>`\n }\n return html`<ui-list selectActive class=\"domain-list\" @select=\"${this.handleItemSelect}\">\n ${items.map((item) => this.renderRecentItem(item))}\n </ui-list>`\n }\n\n protected renderDomainItem(item: DomainNamespace | DomainModel | DomainEntity): TemplateResult {\n const isParent = [DomainModelKind, DomainNamespaceKind].includes(item.kind)\n return this.renderItem(item.key, item.kind, item.info.getLabel(), { isParent, domain: item.namespace })\n }\n\n protected renderRecentItem(item: DomainBrowseRecentItem): TemplateResult {\n const { key, kind, label } = item\n return this.renderItem(key, kind, label, { domain: this.root?.key })\n }\n\n /**\n * Renders a generic item.\n * @private\n * @param key - The key of the item.\n * @param kind - The kind of the item.\n * @param label - The label of the item.\n * @param {{ noParent?: boolean }} opts - Additional options.\n */\n protected renderItem(\n key: string,\n kind: string,\n label: string,\n opts: { isParent?: boolean; domain?: string } = {}\n ): TemplateResult {\n const isSelected = this.isSelected(key)\n const parentValue = opts.isParent ? 'true' : 'false'\n const classes = {\n select: isSelected,\n }\n const icon = getDomainIconType(kind)\n return html`<ui-list-item\n data-kind=\"${kind}\"\n data-key=\"${key}\"\n data-parent=\"${parentValue}\"\n data-namespace=\"${ifDefined(opts.domain)}\"\n class=\"${classMap(classes)}\"\n >\n <ui-icon slot=\"start\" class=\"icon\" icon=\"${icon}\"></ui-icon>\n <span>${label}</span>\n ${isSelected && opts.isParent\n ? html`<ui-button color=\"filled\" slot=\"end\" @click=\"${this.handleOpenParent}\">Open</ui-button>`\n : nothing}\n </ui-list-item>`\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiModelingActionsScreen.styles.d.ts","sourceRoot":"","sources":["../../../../../src/modeling/internals/styles/ApiModelingActionsScreen.styles.ts"],"names":[],"mappings":";AAEA,
|
|
1
|
+
{"version":3,"file":"ApiModelingActionsScreen.styles.d.ts","sourceRoot":"","sources":["../../../../../src/modeling/internals/styles/ApiModelingActionsScreen.styles.ts"],"names":[],"mappings":";AAEA,wBA6DC"}
|