@api-client/ui 0.6.0 → 0.6.2
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/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 +13 -3
- 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/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":"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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(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":"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"}
|
|
@@ -27,5 +27,38 @@ export default css `
|
|
|
27
27
|
align-items: center;
|
|
28
28
|
gap: 8px;
|
|
29
29
|
}
|
|
30
|
+
|
|
31
|
+
.empty-screen {
|
|
32
|
+
display: flex;
|
|
33
|
+
flex-direction: column;
|
|
34
|
+
flex: 1;
|
|
35
|
+
justify-content: center;
|
|
36
|
+
align-items: center;
|
|
37
|
+
align-self: stretch;
|
|
38
|
+
gap: 20px;
|
|
39
|
+
border-radius: var(--md-sys-shape-corner-medium, 12px);
|
|
40
|
+
background: var(--md-sys-color-surface);
|
|
41
|
+
|
|
42
|
+
& .empty-message {
|
|
43
|
+
margin: 0;
|
|
44
|
+
padding: 0;
|
|
45
|
+
color: var(--md-sys-color-on-surface);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
& > .icon-wrapper {
|
|
49
|
+
display: flex;
|
|
50
|
+
padding: 40px;
|
|
51
|
+
justify-content: center;
|
|
52
|
+
align-items: center;
|
|
53
|
+
border-radius: 60px;
|
|
54
|
+
background: var(--md-sys-color-primary);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
& .icon {
|
|
58
|
+
width: 40px;
|
|
59
|
+
height: 40px;
|
|
60
|
+
fill: var(--md-sys-color-on-primary);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
30
63
|
`;
|
|
31
64
|
//# sourceMappingURL=ApiModelingActionsScreen.styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiModelingActionsScreen.styles.js","sourceRoot":"","sources":["../../../../../src/modeling/internals/styles/ApiModelingActionsScreen.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAEzB,eAAe,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"ApiModelingActionsScreen.styles.js","sourceRoot":"","sources":["../../../../../src/modeling/internals/styles/ApiModelingActionsScreen.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAEzB,eAAe,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6DjB,CAAA","sourcesContent":["import { css } from 'lit'\n\nexport default css`\n .exposed-canvas {\n display: flex;\n flex-direction: column;\n gap: 12px;\n align-items: flex-start;\n overflow: auto;\n }\n\n .exposure-row {\n display: flex;\n gap: 8px;\n align-items: center;\n border-bottom: 1px var(--md-sys-color-outline-variant) solid;\n padding-bottom: 12px;\n }\n\n .children-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n }\n\n .child-row {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .empty-screen {\n display: flex;\n flex-direction: column;\n flex: 1;\n justify-content: center;\n align-items: center;\n align-self: stretch;\n gap: 20px;\n border-radius: var(--md-sys-shape-corner-medium, 12px);\n background: var(--md-sys-color-surface);\n\n & .empty-message {\n margin: 0;\n padding: 0;\n color: var(--md-sys-color-on-surface);\n }\n\n & > .icon-wrapper {\n display: flex;\n padding: 40px;\n justify-content: center;\n align-items: center;\n border-radius: 60px;\n background: var(--md-sys-color-primary);\n }\n\n & .icon {\n width: 40px;\n height: 40px;\n fill: var(--md-sys-color-on-primary);\n }\n }\n`\n"]}
|