{"version":3,"file":"index.js","sources":["../../../../src/packages/core/collection/collection-view.manager.ts","../../../../src/packages/core/collection/default/collection-default.context.ts","../../../../src/packages/core/collection/default/collection-default.element.ts","../../../../src/packages/core/collection/collection.element.ts","../../../../src/packages/core/collection/components/boolean-table-column-view/boolean-table-column-view.element.ts","../../../../src/packages/core/collection/components/collection-action-bundle.element.ts","../../../../src/packages/core/collection/components/collection-filter-field.element.ts","../../../../src/packages/core/collection/components/collection-selection-actions.element.ts","../../../../src/packages/core/collection/components/collection-toolbar.element.ts","../../../../src/packages/core/collection/components/collection-view-bundle.element.ts","../../../../src/packages/core/collection/components/pagination/collection-pagination.element.ts","../../../../src/packages/core/collection/collection-item-picker-modal/collection-item-picker-modal.context.ts","../../../../src/packages/core/collection/action/collection-action-button.element.ts","../../../../src/packages/core/collection/action/collection-action-base.ts"],"sourcesContent":["import type { ManifestCollectionView } from './extensions/types.js';\r\nimport { UmbControllerBase } from '@umbraco-cms/backoffice/class-api';\r\nimport { UmbExtensionsManifestInitializer, createExtensionElement } from '@umbraco-cms/backoffice/extension-api';\r\nimport { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';\r\nimport { UmbArrayState, UmbObjectState, UmbStringState } from '@umbraco-cms/backoffice/observable-api';\r\nimport type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';\r\nimport type { UmbRoute } from '@umbraco-cms/backoffice/router';\r\n\r\nexport interface UmbCollectionViewManagerConfig {\r\n\tdefaultViewAlias?: string;\r\n\tmanifestFilter?: (manifest: ManifestCollectionView) => boolean;\r\n}\r\n\r\nexport class UmbCollectionViewManager extends UmbControllerBase {\r\n\t#views = new UmbArrayState([], (x) => x.alias);\r\n\tpublic readonly views = this.#views.asObservable();\r\n\r\n\t#currentView = new UmbObjectState(undefined);\r\n\tpublic readonly currentView = this.#currentView.asObservable();\r\n\r\n\t#routes = new UmbArrayState([], (x) => x.path);\r\n\tpublic readonly routes = this.#routes.asObservable();\r\n\r\n\t#rootPathName = new UmbStringState('');\r\n\tpublic readonly rootPathName = this.#rootPathName.asObservable();\r\n\r\n\t#defaultViewAlias?: string;\r\n\r\n\tconstructor(host: UmbControllerHost) {\r\n\t\tsuper(host);\r\n\r\n\t\t// TODO: hack - we need to figure out how to get the \"parent path\" from the router\r\n\t\tsetTimeout(() => {\r\n\t\t\tconst currentUrl = new URL(window.location.href);\r\n\t\t\tthis.#rootPathName.setValue(currentUrl.pathname.substring(0, currentUrl.pathname.lastIndexOf('/')));\r\n\t\t}, 100);\r\n\t}\r\n\r\n\tpublic setConfig(config: UmbCollectionViewManagerConfig) {\r\n\t\tthis.#defaultViewAlias = config.defaultViewAlias;\r\n\t\tthis.#observeViews(config.manifestFilter);\r\n\t}\r\n\r\n\t// Views\r\n\t/**\r\n\t * Sets the current view.\r\n\t * @param {ManifestCollectionView} view\r\n\t * @memberof UmbCollectionContext\r\n\t */\r\n\tpublic setCurrentView(view: ManifestCollectionView) {\r\n\t\tthis.#currentView.setValue(view);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the current view.\r\n\t * @returns {ManifestCollectionView}\r\n\t * @memberof UmbCollectionContext\r\n\t */\r\n\tpublic getCurrentView() {\r\n\t\treturn this.#currentView.getValue();\r\n\t}\r\n\r\n\t#observeViews(filter?: (manifest: ManifestCollectionView) => boolean) {\r\n\t\treturn new UmbExtensionsManifestInitializer(\r\n\t\t\tthis,\r\n\t\t\tumbExtensionsRegistry,\r\n\t\t\t'collectionView',\r\n\t\t\tfilter ?? null,\r\n\t\t\t(views) => {\r\n\t\t\t\tconst manifests = views.map((view) => view.manifest);\r\n\t\t\t\tthis.#views.setValue(manifests);\r\n\t\t\t\tthis.#createRoutes(manifests);\r\n\t\t\t},\r\n\t\t);\r\n\t}\r\n\r\n\t#createRoutes(views: ManifestCollectionView[] | null) {\r\n\t\tlet routes: Array = [];\r\n\r\n\t\tif (views && views.length > 0) {\r\n\t\t\t// find the default view from the config. If it doesn't exist, use the first view\r\n\t\t\tconst defaultView = views.find((view) => view.alias === this.#defaultViewAlias);\r\n\t\t\tconst fallbackView = defaultView?.meta.pathName || views[0].meta.pathName;\r\n\r\n\t\t\troutes = views.map((view) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tpath: `${view.meta.pathName}`,\r\n\t\t\t\t\tcomponent: () => createExtensionElement(view),\r\n\t\t\t\t\tsetup: () => {\r\n\t\t\t\t\t\tthis.setCurrentView(view);\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tif (routes.length > 0) {\r\n\t\t\t\troutes.push({\r\n\t\t\t\t\tpath: '',\r\n\t\t\t\t\tredirectTo: fallbackView,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\troutes.push({\r\n\t\t\t\tpath: `**`,\r\n\t\t\t\tcomponent: async () => (await import('@umbraco-cms/backoffice/router')).UmbRouteNotFoundElement,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.#routes.setValue(routes);\r\n\t}\r\n}\r\n","import { UmbCollectionViewManager } from '../collection-view.manager.js';\r\nimport type { UmbCollectionViewManagerConfig } from '../collection-view.manager.js';\r\nimport type {\r\n\tUmbCollectionColumnConfiguration,\r\n\tUmbCollectionConfiguration,\r\n\tUmbCollectionContext,\r\n\tUmbCollectionLayoutConfiguration,\r\n} from '../types.js';\r\nimport type { UmbCollectionFilterModel } from '../collection-filter-model.interface.js';\r\nimport type { UmbCollectionRepository } from '../repository/collection-repository.interface.js';\r\nimport type { ManifestCollection } from '../extensions/types.js';\r\nimport { UMB_COLLECTION_CONTEXT } from './collection-default.context-token.js';\r\nimport { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';\r\nimport { UmbArrayState, UmbBasicState, UmbNumberState, UmbObjectState } from '@umbraco-cms/backoffice/observable-api';\r\nimport { UmbChangeEvent } from '@umbraco-cms/backoffice/event';\r\nimport { UmbContextBase } from '@umbraco-cms/backoffice/class-api';\r\nimport { UmbExtensionApiInitializer } from '@umbraco-cms/backoffice/extension-api';\r\nimport { UmbSelectionManager, UmbPaginationManager } from '@umbraco-cms/backoffice/utils';\r\nimport type { ManifestRepository } from '@umbraco-cms/backoffice/extension-registry';\r\nimport type { UmbApi } from '@umbraco-cms/backoffice/extension-api';\r\nimport type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';\r\nimport {\r\n\tUmbRequestReloadChildrenOfEntityEvent,\r\n\tUmbRequestReloadStructureForEntityEvent,\r\n} from '@umbraco-cms/backoffice/entity-action';\r\nimport type { UmbActionEventContext } from '@umbraco-cms/backoffice/action';\r\nimport { UMB_ACTION_EVENT_CONTEXT } from '@umbraco-cms/backoffice/action';\r\nimport { UMB_ENTITY_CONTEXT } from '@umbraco-cms/backoffice/entity';\r\nimport { UMB_WORKSPACE_MODAL } from '@umbraco-cms/backoffice/workspace';\r\nimport { UmbModalRouteRegistrationController, type UmbModalRouteBuilder } from '@umbraco-cms/backoffice/router';\r\n\r\nconst LOCAL_STORAGE_KEY = 'umb-collection-view';\r\n\r\nexport class UmbDefaultCollectionContext<\r\n\t\tCollectionItemType extends { entityType: string; unique: string } = any,\r\n\t\tFilterModelType extends UmbCollectionFilterModel = UmbCollectionFilterModel,\r\n\t>\r\n\textends UmbContextBase\r\n\timplements UmbCollectionContext, UmbApi\r\n{\r\n\t#config?: UmbCollectionConfiguration = { pageSize: 50 };\r\n\tprotected _manifest?: ManifestCollection;\r\n\tprotected _repository?: UmbCollectionRepository;\r\n\r\n\t// TODO: replace with a state manager\r\n\tprotected _loading = new UmbObjectState(false);\r\n\tpublic readonly loading = this._loading.asObservable();\r\n\r\n\tprotected _items = new UmbArrayState([], (x) => x.unique);\r\n\tpublic readonly items = this._items.asObservable();\r\n\r\n\tprotected _totalItems = new UmbNumberState(0);\r\n\tpublic readonly totalItems = this._totalItems.asObservable();\r\n\r\n\tprotected _filter = new UmbObjectState({});\r\n\tpublic readonly filter = this._filter.asObservable();\r\n\r\n\t#workspacePathBuilder = new UmbBasicState(undefined);\r\n\tpublic readonly workspacePathBuilder = this.#workspacePathBuilder.asObservable();\r\n\r\n\t#userDefinedProperties = new UmbArrayState([], (x) => x.alias);\r\n\tpublic readonly userDefinedProperties = this.#userDefinedProperties.asObservable();\r\n\r\n\t#viewLayouts = new UmbArrayState([], (x) => x.collectionView);\r\n\tpublic readonly viewLayouts = this.#viewLayouts.asObservable();\r\n\r\n\tpublic readonly pagination = new UmbPaginationManager();\r\n\tpublic readonly selection = new UmbSelectionManager(this);\r\n\tpublic readonly view = new UmbCollectionViewManager(this);\r\n\r\n\t#defaultViewAlias: string;\r\n\t#defaultFilter: Partial;\r\n\r\n\t#initResolver?: () => void;\r\n\t#initialized = false;\r\n\r\n\tprotected _init = new Promise((resolve) => {\r\n\t\tif (this.#initialized) {\r\n\t\t\tresolve();\r\n\t\t} else {\r\n\t\t\tthis.#initResolver = resolve;\r\n\t\t}\r\n\t});\r\n\r\n\t#actionEventContext: UmbActionEventContext | undefined;\r\n\r\n\tconstructor(host: UmbControllerHost, defaultViewAlias: string, defaultFilter: Partial = {}) {\r\n\t\tsuper(host, UMB_COLLECTION_CONTEXT);\r\n\r\n\t\tthis.#defaultViewAlias = defaultViewAlias;\r\n\t\tthis.#defaultFilter = defaultFilter;\r\n\r\n\t\tthis.pagination.addEventListener(UmbChangeEvent.TYPE, this.#onPageChange);\r\n\t\tthis.#listenToEntityEvents();\r\n\t}\r\n\r\n\tsetupView(viewElement: UmbControllerHost) {\r\n\t\tnew UmbModalRouteRegistrationController(viewElement, UMB_WORKSPACE_MODAL)\r\n\t\t\t.addAdditionalPath('entity/:entityType')\r\n\t\t\t.onSetup((params) => {\r\n\t\t\t\treturn { data: { entityType: params.entityType, preset: {} } };\r\n\t\t\t})\r\n\t\t\t.onReject(() => {\r\n\t\t\t\t// TODO: Maybe this can be removed?\r\n\t\t\t\tthis.requestCollection();\r\n\t\t\t})\r\n\t\t\t.onSubmit(() => {\r\n\t\t\t\t// TODO: Maybe this can be removed?\r\n\t\t\t\tthis.requestCollection();\r\n\t\t\t})\r\n\t\t\t.observeRouteBuilder((routeBuilder) => {\r\n\t\t\t\tthis.#workspacePathBuilder.setValue(routeBuilder);\r\n\t\t\t});\r\n\t}\r\n\r\n\tasync #listenToEntityEvents() {\r\n\t\tthis.consumeContext(UMB_ACTION_EVENT_CONTEXT, (context) => {\r\n\t\t\tthis.#actionEventContext = context;\r\n\r\n\t\t\tcontext?.removeEventListener(\r\n\t\t\t\tUmbRequestReloadStructureForEntityEvent.TYPE,\r\n\t\t\t\tthis.#onReloadStructureRequest as unknown as EventListener,\r\n\t\t\t);\r\n\r\n\t\t\tcontext?.removeEventListener(\r\n\t\t\t\tUmbRequestReloadChildrenOfEntityEvent.TYPE,\r\n\t\t\t\tthis.#onReloadChildrenRequest as unknown as EventListener,\r\n\t\t\t);\r\n\r\n\t\t\tcontext?.addEventListener(\r\n\t\t\t\tUmbRequestReloadStructureForEntityEvent.TYPE,\r\n\t\t\t\tthis.#onReloadStructureRequest as unknown as EventListener,\r\n\t\t\t);\r\n\r\n\t\t\tcontext?.addEventListener(\r\n\t\t\t\tUmbRequestReloadChildrenOfEntityEvent.TYPE,\r\n\t\t\t\tthis.#onReloadChildrenRequest as unknown as EventListener,\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n\r\n\tprotected _configured = false;\r\n\r\n\tprotected _configure() {\r\n\t\tif (!this.#config) return;\r\n\r\n\t\tthis.selection.setMultiple(true);\r\n\r\n\t\tif (this.#config.pageSize) {\r\n\t\t\tthis.pagination.setPageSize(this.#config.pageSize);\r\n\t\t}\r\n\r\n\t\tconst filterValue = this._filter.getValue() as FilterModelType;\r\n\r\n\t\tthis._filter.setValue({\r\n\t\t\t...this.#defaultFilter,\r\n\t\t\t...this.#config,\r\n\t\t\t...filterValue,\r\n\t\t\tskip: filterValue.skip ?? 0,\r\n\t\t\ttake: this.#config.pageSize,\r\n\t\t});\r\n\r\n\t\tthis.#userDefinedProperties.setValue(this.#config?.userDefinedProperties ?? []);\r\n\r\n\t\tconst viewManagerConfig: UmbCollectionViewManagerConfig = { defaultViewAlias: this.#defaultViewAlias };\r\n\r\n\t\tif (this.#config.layouts && this.#config.layouts.length > 0) {\r\n\t\t\tthis.#viewLayouts.setValue(this.#config.layouts);\r\n\t\t\tconst aliases = this.#config.layouts.map((layout) => layout.collectionView);\r\n\t\t\tviewManagerConfig.manifestFilter = (manifest) => aliases.includes(manifest.alias);\r\n\t\t}\r\n\r\n\t\tthis.view.setConfig(viewManagerConfig);\r\n\r\n\t\tthis._configured = true;\r\n\t}\r\n\r\n\t#checkIfInitialized() {\r\n\t\tif (this._repository) {\r\n\t\t\tthis.#initialized = true;\r\n\t\t\tthis.#initResolver?.();\r\n\t\t}\r\n\t}\r\n\r\n\t#observeRepository(repositoryAlias?: string) {\r\n\t\tif (!repositoryAlias) throw new Error('Tree must have a repository alias.');\r\n\r\n\t\tnew UmbExtensionApiInitializer>(\r\n\t\t\tthis,\r\n\t\t\tumbExtensionsRegistry,\r\n\t\t\trepositoryAlias,\r\n\t\t\t[this._host],\r\n\t\t\t(permitted, ctrl) => {\r\n\t\t\t\tthis._repository = permitted ? ctrl.api : undefined;\r\n\t\t\t\tthis.#checkIfInitialized();\r\n\t\t\t},\r\n\t\t);\r\n\t}\r\n\r\n\t#onPageChange = (event: UmbChangeEvent) => {\r\n\t\tconst target = event.target as UmbPaginationManager;\r\n\t\tconst skipFilter = { skip: target.getSkip() } as Partial;\r\n\t\tthis.setFilter(skipFilter);\r\n\t};\r\n\r\n\t/**\r\n\t * Sets the configuration for the collection.\r\n\t * @param {UmbCollectionConfiguration} config\r\n\t * @memberof UmbCollectionContext\r\n\t */\r\n\tpublic setConfig(config: UmbCollectionConfiguration) {\r\n\t\tthis.#config = config;\r\n\t}\r\n\r\n\tpublic getConfig() {\r\n\t\treturn this.#config;\r\n\t}\r\n\r\n\tpublic set manifest(manifest: ManifestCollection | undefined) {\r\n\t\tif (this._manifest === manifest) return;\r\n\t\tthis._manifest = manifest;\r\n\t\tthis.#observeRepository(this._manifest?.meta.repositoryAlias);\r\n\t}\r\n\tpublic get manifest() {\r\n\t\treturn this._manifest;\r\n\t}\r\n\r\n\t/**\r\n\t * Requests the collection from the repository.\r\n\t * @returns {*}\r\n\t * @memberof UmbCollectionContext\r\n\t */\r\n\tpublic async requestCollection() {\r\n\t\tawait this._init;\r\n\r\n\t\tif (!this._configured) this._configure();\r\n\r\n\t\tif (!this._repository) throw new Error(`Missing repository for ${this._manifest}`);\r\n\r\n\t\tthis._loading.setValue(true);\r\n\r\n\t\tconst filter = this._filter.getValue();\r\n\t\tconst { data } = await this._repository.requestCollection(filter);\r\n\r\n\t\tif (data) {\r\n\t\t\tthis._items.setValue(data.items);\r\n\t\t\tthis._totalItems.setValue(data.total);\r\n\t\t\tthis.pagination.setTotalItems(data.total);\r\n\t\t}\r\n\r\n\t\tthis._loading.setValue(false);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the filter for the collection and refreshes the collection.\r\n\t * @param {Partial} filter\r\n\t * @memberof UmbCollectionContext\r\n\t */\r\n\tpublic setFilter(filter: Partial) {\r\n\t\tthis._filter.setValue({ ...this._filter.getValue(), ...filter });\r\n\t\tthis.requestCollection();\r\n\t}\r\n\r\n\tpublic getLastSelectedView(unique: string | undefined): string | undefined {\r\n\t\tif (!unique) return;\r\n\r\n\t\tconst layouts = JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY) ?? '{}') ?? {};\r\n\t\tif (!layouts) return;\r\n\r\n\t\treturn layouts[unique];\r\n\t}\r\n\r\n\tpublic setLastSelectedView(unique: string | undefined, viewAlias: string) {\r\n\t\tif (!unique) return;\r\n\r\n\t\tconst layouts = JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY) ?? '{}') ?? {};\r\n\t\tif (!layouts) return;\r\n\r\n\t\tlayouts[unique] = viewAlias;\r\n\r\n\t\tlocalStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(layouts));\r\n\t}\r\n\r\n\t#onReloadStructureRequest = (event: UmbRequestReloadStructureForEntityEvent) => {\r\n\t\tconst items = this._items.getValue();\r\n\t\tconst hasItem = items.some((item) => item.unique === event.getUnique());\r\n\t\tif (hasItem) {\r\n\t\t\tthis.requestCollection();\r\n\t\t}\r\n\t};\r\n\r\n\t#onReloadChildrenRequest = async (event: UmbRequestReloadChildrenOfEntityEvent) => {\r\n\t\t// check if the collection is in the same context as the entity from the event\r\n\t\tconst entityContext = await this.getContext(UMB_ENTITY_CONTEXT);\r\n\t\tconst unique = entityContext.getUnique();\r\n\t\tconst entityType = entityContext.getEntityType();\r\n\r\n\t\tif (unique === event.getUnique() && entityType === event.getEntityType()) {\r\n\t\t\tthis.requestCollection();\r\n\t\t}\r\n\t};\r\n\r\n\toverride destroy(): void {\r\n\t\tthis.#actionEventContext?.removeEventListener(\r\n\t\t\tUmbRequestReloadStructureForEntityEvent.TYPE,\r\n\t\t\tthis.#onReloadStructureRequest as unknown as EventListener,\r\n\t\t);\r\n\r\n\t\tthis.#actionEventContext?.removeEventListener(\r\n\t\t\tUmbRequestReloadChildrenOfEntityEvent.TYPE,\r\n\t\t\tthis.#onReloadChildrenRequest as unknown as EventListener,\r\n\t\t);\r\n\r\n\t\tsuper.destroy();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the manifest for the collection.\r\n\t * @param {ManifestCollection} manifest\r\n\t * @memberof UmbCollectionContext\r\n\t * @deprecated Use set the `.manifest` property instead.\r\n\t */\r\n\tpublic setManifest(manifest: ManifestCollection | undefined) {\r\n\t\tif (this._manifest === manifest) return;\r\n\t\tthis._manifest = manifest;\r\n\r\n\t\tif (!this._manifest) return;\r\n\t\tthis.#observeRepository(this._manifest.meta.repositoryAlias);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the manifest for the collection.\r\n\t * @returns {ManifestCollection}\r\n\t * @memberof UmbCollectionContext\r\n\t * @deprecated Use get the `.manifest` property instead.\r\n\t */\r\n\tpublic getManifest() {\r\n\t\treturn this._manifest;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the items in the collection.\r\n\t * @returns {Array} - The items in the collection.\r\n\t */\r\n\tpublic getItems() {\r\n\t\treturn this._items.getValue();\r\n\t}\r\n}\r\n","import { UmbDefaultCollectionContext } from './collection-default.context.js';\r\nimport { UMB_COLLECTION_CONTEXT } from './collection-default.context-token.js';\r\nimport { css, html, customElement, state, nothing } from '@umbraco-cms/backoffice/external/lit';\r\nimport { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';\r\nimport { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';\r\nimport { UmbTextStyles } from '@umbraco-cms/backoffice/style';\r\nimport type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';\r\nimport type { UmbRoute } from '@umbraco-cms/backoffice/router';\r\n\r\nconst manifest: UmbExtensionManifestKind = {\r\n\ttype: 'kind',\r\n\talias: 'Umb.Kind.Collection.Default',\r\n\tmatchKind: 'default',\r\n\tmatchType: 'collection',\r\n\tmanifest: {\r\n\t\ttype: 'collection',\r\n\t\tkind: 'default',\r\n\t\telementName: 'umb-collection-default',\r\n\t\tapi: UmbDefaultCollectionContext,\r\n\t},\r\n};\r\numbExtensionsRegistry.register(manifest);\r\n\r\n@customElement('umb-collection-default')\r\nexport class UmbCollectionDefaultElement extends UmbLitElement {\r\n\t@state()\r\n\tprivate _routes: Array = [];\r\n\r\n\t@state()\r\n\tprivate _hasItems = false;\r\n\r\n\t@state()\r\n\tprivate _isDoneLoading = false;\r\n\r\n\t#collectionContext?: UmbDefaultCollectionContext;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.consumeContext(UMB_COLLECTION_CONTEXT, async (context) => {\r\n\t\t\tthis.#collectionContext = context;\r\n\t\t\tthis.#observeCollectionRoutes();\r\n\t\t\tthis.#observeTotalItems();\r\n\t\t\tawait this.#collectionContext?.requestCollection();\r\n\t\t\tthis._isDoneLoading = true;\r\n\t\t});\r\n\t}\r\n\r\n\t#observeCollectionRoutes() {\r\n\t\tif (!this.#collectionContext) return;\r\n\r\n\t\tthis.observe(\r\n\t\t\tthis.#collectionContext.view.routes,\r\n\t\t\t(routes) => {\r\n\t\t\t\tthis._routes = routes;\r\n\t\t\t},\r\n\t\t\t'umbCollectionRoutesObserver',\r\n\t\t);\r\n\t}\r\n\r\n\t#observeTotalItems() {\r\n\t\tif (!this.#collectionContext) return;\r\n\r\n\t\tthis.observe(\r\n\t\t\tthis.#collectionContext.totalItems,\r\n\t\t\t(totalItems) => {\r\n\t\t\t\tthis._hasItems = totalItems > 0;\r\n\t\t\t},\r\n\t\t\t'umbCollectionTotalItemsObserver',\r\n\t\t);\r\n\t}\r\n\r\n\toverride render() {\r\n\t\treturn this._routes\r\n\t\t\t? html`\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t${this.renderToolbar()} ${this._hasItems ? this.#renderContent() : this.#renderEmptyState()}\r\n\t\t\t\t\t\r\n\t\t\t\t`\r\n\t\t\t: nothing;\r\n\t}\r\n\r\n\tprotected renderToolbar() {\r\n\t\treturn html``;\r\n\t}\r\n\r\n\tprotected renderPagination() {\r\n\t\treturn html``;\r\n\t}\r\n\r\n\tprotected renderSelectionActions() {\r\n\t\treturn html``;\r\n\t}\r\n\r\n\t#renderContent() {\r\n\t\treturn html` ${this.renderPagination()} ${this.renderSelectionActions()} `;\r\n\t}\r\n\r\n\t#renderEmptyState() {\r\n\t\tif (!this._isDoneLoading) return nothing;\r\n\t\treturn html`
\r\n\t\t\t

\r\n\t\t
`;\r\n\t}\r\n\r\n\tstatic override styles = [\r\n\t\tUmbTextStyles,\r\n\t\tcss`\r\n\t\t\t:host {\r\n\t\t\t\tdisplay: flex;\r\n\t\t\t\tflex-direction: column;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tgap: var(--uui-size-space-5);\r\n\t\t\t\theight: 100%;\r\n\t\t\t}\r\n\r\n\t\t\t#router {\r\n\t\t\t\tvisibility: hidden;\r\n\t\t\t}\r\n\r\n\t\t\t.has-items #router {\r\n\t\t\t\tvisibility: visible;\r\n\t\t\t}\r\n\r\n\t\t\t#empty-state {\r\n\t\t\t\theight: 80%;\r\n\t\t\t\talign-content: center;\r\n\t\t\t\ttext-align: center;\r\n\t\t\t}\r\n\r\n\t\t\trouter-slot {\r\n\t\t\t\twidth: 100%;\r\n\t\t\t\theight: 100%;\r\n\t\t\t}\r\n\t\t`,\r\n\t];\r\n}\r\n\r\ndeclare global {\r\n\tinterface HTMLElementTagNameMap {\r\n\t\t'umb-collection-default': UmbCollectionDefaultElement;\r\n\t}\r\n}\r\n","import type { UmbCollectionConfiguration } from './types.js';\r\nimport type { ManifestCollection } from './extensions/types.js';\r\nimport { customElement, property } from '@umbraco-cms/backoffice/external/lit';\r\nimport { UmbExtensionElementAndApiSlotElementBase } from '@umbraco-cms/backoffice/extension-registry';\r\nimport type { UmbApi } from '@umbraco-cms/backoffice/extension-api';\r\n\r\nconst elementName = 'umb-collection';\r\n@customElement(elementName)\r\nexport class UmbCollectionElement extends UmbExtensionElementAndApiSlotElementBase {\r\n\tgetExtensionType() {\r\n\t\treturn 'collection';\r\n\t}\r\n\r\n\tgetDefaultElementName() {\r\n\t\treturn 'umb-collection-default';\r\n\t}\r\n\r\n\t@property({ type: Object, attribute: false })\r\n\tset config(newVal: UmbCollectionConfiguration | undefined) {\r\n\t\tthis.#config = newVal;\r\n\t\tthis.#setConfig();\r\n\t}\r\n\tget config() {\r\n\t\treturn this.#config;\r\n\t}\r\n\t#config?: UmbCollectionConfiguration;\r\n\r\n\tprotected override apiChanged(api: UmbApi | undefined): void {\r\n\t\tsuper.apiChanged(api);\r\n\t\tthis.#setConfig();\r\n\t}\r\n\r\n\t#setConfig() {\r\n\t\tif (!this.#config || !this._api) return;\r\n\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n\t\t// @ts-ignore\r\n\t\tthis._api.setConfig(this.#config);\r\n\t}\r\n}\r\n\r\ndeclare global {\r\n\tinterface HTMLElementTagNameMap {\r\n\t\t[elementName]: UmbCollectionElement;\r\n\t}\r\n}\r\n","import { html, nothing, customElement, property } from '@umbraco-cms/backoffice/external/lit';\r\nimport { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';\r\n\r\n@customElement('umb-boolean-table-column-view')\r\nexport class UmbBooleanTableColumnViewElement extends UmbLitElement {\r\n\t@property({ attribute: false })\r\n\tvalue = false;\r\n\r\n\toverride render() {\r\n\t\treturn this.value ? html`` : nothing;\r\n\t}\r\n}\r\n\r\ndeclare global {\r\n\tinterface HTMLElementTagNameMap {\r\n\t\t'umb-boolean-table-column-view': UmbBooleanTableColumnViewElement;\r\n\t}\r\n}\r\n","import { css, customElement, html } from '@umbraco-cms/backoffice/external/lit';\r\nimport { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';\r\n\r\n@customElement('umb-collection-action-bundle')\r\nexport class UmbCollectionActionBundleElement extends UmbLitElement {\r\n\toverride render() {\r\n\t\treturn html``;\r\n\t}\r\n\r\n\tstatic override readonly styles = [\r\n\t\tcss`\r\n\t\t\t:host {\r\n\t\t\t\tdisplay: contents;\r\n\t\t\t}\r\n\t\t`,\r\n\t];\r\n}\r\n\r\ndeclare global {\r\n\tinterface HTMLElementTagNameMap {\r\n\t\t'umb-collection-action-bundle': UmbCollectionActionBundleElement;\r\n\t}\r\n}\r\n","import { UMB_COLLECTION_CONTEXT } from '../default/index.js';\r\nimport { css, customElement, html } from '@umbraco-cms/backoffice/external/lit';\r\nimport { debounce } from '@umbraco-cms/backoffice/utils';\r\nimport { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';\r\n\r\n@customElement('umb-collection-filter-field')\r\nexport class UmbCollectionFilterFieldElement extends UmbLitElement {\r\n\t#collectionContext?: typeof UMB_COLLECTION_CONTEXT.TYPE;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis.consumeContext(UMB_COLLECTION_CONTEXT, (context) => {\r\n\t\t\tthis.#collectionContext = context;\r\n\t\t});\r\n\t}\r\n\r\n\t#debouncedFilter = debounce((filter: string) => this.#collectionContext?.setFilter({ filter }), 500);\r\n\r\n\t#onInput(event: InputEvent & { target: HTMLInputElement }) {\r\n\t\tconst filter = event.target.value ?? '';\r\n\t\tthis.#debouncedFilter(filter);\r\n\t}\r\n\r\n\toverride render() {\r\n\t\treturn html`\r\n\t\t\t\r\n\t\t`;\r\n\t}\r\n\r\n\tstatic override readonly styles = [\r\n\t\tcss`\r\n\t\t\tuui-input {\r\n\t\t\t\tdisplay: block;\r\n\t\t\t}\r\n\t\t`,\r\n\t];\r\n}\r\n\r\ndeclare global {\r\n\tinterface HTMLElementTagNameMap {\r\n\t\t'umb-collection-filter-field': UmbCollectionFilterFieldElement;\r\n\t}\r\n}\r\n","import { UMB_COLLECTION_CONTEXT } from '../default/index.js';\r\nimport { css, customElement, html, nothing, state } from '@umbraco-cms/backoffice/external/lit';\r\nimport { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';\r\nimport { UmbTextStyles } from '@umbraco-cms/backoffice/style';\r\nimport { UMB_ENTITY_CONTEXT } from '@umbraco-cms/backoffice/entity';\r\nimport type { ManifestEntityBulkAction, MetaEntityBulkAction } from '@umbraco-cms/backoffice/extension-registry';\r\nimport type { UmbActionExecutedEvent } from '@umbraco-cms/backoffice/event';\r\n\r\n/**\r\n * Generates API arguments for the given manifest.\r\n * @param {string | null | undefined} entityType - The type of the entity.\r\n * @param {ManifestEntityBulkAction} manifest - The manifest object from the extension.\r\n * @returns {Array} An array with the meta object from the manifest.\r\n */\r\nfunction apiArgsMethod(\r\n\tentityType: string | null | undefined,\r\n\tmanifest: ManifestEntityBulkAction,\r\n): Array {\r\n\treturn [{ entityType, meta: manifest.meta }] as Array;\r\n}\r\n\r\n@customElement('umb-collection-selection-actions')\r\nexport class UmbCollectionSelectionActionsElement extends UmbLitElement {\r\n\t@state()\r\n\tprivate _entityType?: string | null;\r\n\r\n\t@state()\r\n\tprivate _totalItems = 0;\r\n\r\n\t@state()\r\n\tprivate _selectionLength = 0;\r\n\r\n\t@state()\r\n\tprivate _apiProps = {};\r\n\r\n\tprivate _selection: Array = [];\r\n\r\n\tprivate _collectionContext?: typeof UMB_COLLECTION_CONTEXT.TYPE;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.consumeContext(UMB_COLLECTION_CONTEXT, (instance) => {\r\n\t\t\tthis._collectionContext = instance;\r\n\t\t\tthis._observeCollectionContext();\r\n\t\t});\r\n\r\n\t\tthis.consumeContext(UMB_ENTITY_CONTEXT, (entityContext) => {\r\n\t\t\tthis._entityType = entityContext.getEntityType();\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _handleKeyDown(event: KeyboardEvent) {\r\n\t\tif (event.key === 'Enter') {\r\n\t\t\tthis._handleClearSelection();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _handleClearSelection() {\r\n\t\tthis._collectionContext?.selection.clearSelection();\r\n\t}\r\n\r\n\tprivate _observeCollectionContext() {\r\n\t\tif (!this._collectionContext) return;\r\n\r\n\t\tthis.observe(\r\n\t\t\tthis._collectionContext.totalItems,\r\n\t\t\t(value) => {\r\n\t\t\t\tthis._totalItems = value;\r\n\t\t\t},\r\n\t\t\t'umbTotalItemsObserver',\r\n\t\t);\r\n\r\n\t\tthis.observe(\r\n\t\t\tthis._collectionContext.selection.selection,\r\n\t\t\t(selection) => {\r\n\t\t\t\tthis._selectionLength = selection.length;\r\n\t\t\t\tthis._selection = selection;\r\n\t\t\t\tthis._apiProps = { selection: this._selection };\r\n\t\t\t},\r\n\t\t\t'umbSelectionObserver',\r\n\t\t);\r\n\t}\r\n\r\n\tprivate _renderSelectionCount() {\r\n\t\treturn html`
${this._selectionLength} of ${this._totalItems} selected
`;\r\n\t}\r\n\r\n\t#onActionExecuted(event: UmbActionExecutedEvent) {\r\n\t\tevent.stopPropagation();\r\n\t\tthis._collectionContext?.selection.clearSelection();\r\n\t}\r\n\r\n\toverride render() {\r\n\t\tif (this._selectionLength === 0) return nothing;\r\n\r\n\t\treturn html`\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t${this._renderSelectionCount()}\r\n\t\t\t\t
\r\n\r\n\t\t\t\t apiArgsMethod(this._entityType, manifest)}\r\n\t\t\t\t\t@action-executed=${this.#onActionExecuted}>\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t`;\r\n\t}\r\n\r\n\tstatic override styles = [\r\n\t\tUmbTextStyles,\r\n\t\tcss`\r\n\t\t\t:host {\r\n\t\t\t\twidth: 100%;\r\n\t\t\t\tmargin-right: calc(\r\n\t\t\t\t\t-1 * var(--uui-size-space-6)\r\n\t\t\t\t); // compensate for the padding on the container. TODO: make a better solution\r\n\t\t\t}\r\n\r\n\t\t\t#container {\r\n\t\t\t\tdisplay: flex;\r\n\t\t\t\tgap: var(--uui-size-3);\r\n\t\t\t\twidth: 100%;\r\n\t\t\t\tpadding: var(--uui-size-space-4) var(--uui-size-space-6);\r\n\t\t\t\tbackground-color: var(--uui-color-selected);\r\n\t\t\t\tcolor: var(--uui-color-selected-contrast);\r\n\t\t\t\talign-items: center;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tjustify-content: space-between;\r\n\t\t\t}\r\n\t\t\t#selection-info,\r\n\t\t\t#actions {\r\n\t\t\t\tdisplay: flex;\r\n\t\t\t\talign-items: center;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tgap: var(--uui-size-3);\r\n\t\t\t}\r\n\t\t`,\r\n\t];\r\n}\r\n\r\ndeclare global {\r\n\tinterface HTMLElementTagNameMap {\r\n\t\t'umb-collection-selection-actions': UmbCollectionSelectionActionsElement;\r\n\t}\r\n}\r\n","import { UmbTextStyles } from '@umbraco-cms/backoffice/style';\r\nimport { css, html, customElement } from '@umbraco-cms/backoffice/external/lit';\r\nimport { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';\r\n\r\n@customElement('umb-collection-toolbar')\r\nexport class UmbCollectionToolbarElement extends UmbLitElement {\r\n\toverride render() {\r\n\t\treturn html`\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t`;\r\n\t}\r\n\r\n\tstatic override styles = [\r\n\t\tUmbTextStyles,\r\n\t\tcss`\r\n\t\t\t:host {\r\n\t\t\t\tdisplay: flex;\r\n\t\t\t\tgap: var(--uui-size-space-5);\r\n\t\t\t\tjustify-content: space-between;\r\n\t\t\t\twidth: 100%;\r\n\t\t\t}\r\n\t\t\t#slot {\r\n\t\t\t\tflex: 1;\r\n\t\t\t}\r\n\t\t`,\r\n\t];\r\n}\r\n\r\ndeclare global {\r\n\tinterface HTMLElementTagNameMap {\r\n\t\t'umb-collection-toolbar': UmbCollectionToolbarElement;\r\n\t}\r\n}\r\n","import { UMB_COLLECTION_CONTEXT } from '../default/index.js';\r\nimport type { ManifestCollectionView } from '../extensions/types.js';\r\nimport type { UmbCollectionLayoutConfiguration } from '../types.js';\r\nimport { css, customElement, html, nothing, query, repeat, state } from '@umbraco-cms/backoffice/external/lit';\r\nimport { observeMultiple } from '@umbraco-cms/backoffice/observable-api';\r\nimport { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';\r\nimport { UmbTextStyles } from '@umbraco-cms/backoffice/style';\r\nimport { UMB_ENTITY_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/workspace';\r\nimport type { UUIPopoverContainerElement } from '@umbraco-cms/backoffice/external/uui';\r\nimport { UMB_ROUTE_CONTEXT } from '@umbraco-cms/backoffice/router';\r\n\r\ninterface UmbCollectionViewLayout {\r\n\talias: string;\r\n\tlabel: string;\r\n\ticon: string;\r\n\tpathName: string;\r\n}\r\n\r\n@customElement('umb-collection-view-bundle')\r\nexport class UmbCollectionViewBundleElement extends UmbLitElement {\r\n\t@state()\r\n\t_views: Array = [];\r\n\r\n\t@state()\r\n\t_currentView?: UmbCollectionViewLayout;\r\n\r\n\t@state()\r\n\tprivate _collectionRootPathName?: string;\r\n\r\n\t@state()\r\n\tprivate _entityUnique?: string;\r\n\r\n\t#collectionContext?: typeof UMB_COLLECTION_CONTEXT.TYPE;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis.consumeContext(UMB_ROUTE_CONTEXT, (context) => {\r\n\t\t\tthis.observe(context.activePath, (activePath) => {\r\n\t\t\t\tthis._collectionRootPathName = activePath;\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tthis.consumeContext(UMB_COLLECTION_CONTEXT, (context) => {\r\n\t\t\tthis.#collectionContext = context;\r\n\t\t\tthis.#observeCollection();\r\n\t\t});\r\n\r\n\t\tthis.consumeContext(UMB_ENTITY_WORKSPACE_CONTEXT, (context) => {\r\n\t\t\tthis._entityUnique = context.getUnique() ?? '';\r\n\t\t});\r\n\t}\r\n\r\n\t#observeCollection() {\r\n\t\tif (!this.#collectionContext) return;\r\n\r\n\t\tthis.observe(\r\n\t\t\tthis.#collectionContext.view.currentView,\r\n\t\t\t(currentView) => {\r\n\t\t\t\tif (!currentView) return;\r\n\t\t\t\tthis._currentView = this._views.find((view) => view.alias === currentView.alias);\r\n\t\t\t},\r\n\t\t\t'umbCurrentCollectionViewObserver',\r\n\t\t);\r\n\r\n\t\tthis.observe(\r\n\t\t\tobserveMultiple([this.#collectionContext.view.views, this.#collectionContext.viewLayouts]),\r\n\t\t\t([manifests, viewLayouts]) => {\r\n\t\t\t\tif (!manifests?.length && !viewLayouts?.length) return;\r\n\t\t\t\tthis._views = this.#mapManifestToViewLayout(manifests, viewLayouts);\r\n\t\t\t},\r\n\t\t\t'umbCollectionViewsAndLayoutsObserver',\r\n\t\t);\r\n\t}\r\n\r\n\t@query('#collection-view-bundle-popover')\r\n\tprivate _popover?: UUIPopoverContainerElement;\r\n\r\n\t#mapManifestToViewLayout(\r\n\t\tmanifests: Array,\r\n\t\tviewLayouts: Array,\r\n\t): typeof this._views {\r\n\t\tif (viewLayouts.length > 0) {\r\n\t\t\tconst layouts: typeof this._views = [];\r\n\r\n\t\t\tviewLayouts.forEach((viewLayout) => {\r\n\t\t\t\tconst viewManifest = manifests.find((manifest) => manifest.alias === viewLayout.collectionView);\r\n\t\t\t\tif (!viewManifest) return;\r\n\t\t\t\tlayouts.push({\r\n\t\t\t\t\talias: viewManifest.alias,\r\n\t\t\t\t\tlabel: viewLayout.name ?? viewManifest.meta.label,\r\n\t\t\t\t\ticon: viewLayout.icon ?? viewManifest.meta.icon,\r\n\t\t\t\t\tpathName: viewManifest.meta.pathName,\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\treturn layouts;\r\n\t\t}\r\n\r\n\t\t// fallback on the 'collectionView' manifests\r\n\t\treturn manifests.map((manifest) => ({\r\n\t\t\talias: manifest.alias,\r\n\t\t\tlabel: manifest.meta.label,\r\n\t\t\ticon: manifest.meta.icon,\r\n\t\t\tpathName: manifest.meta.pathName,\r\n\t\t}));\r\n\t}\r\n\r\n\t#onClick(view: UmbCollectionViewLayout) {\r\n\t\tthis.#collectionContext?.setLastSelectedView(this._entityUnique, view.alias);\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\t// TODO: This ignorer is just neede for JSON SCHEMA TO WORK, As its not updated with latest TS jet.\r\n\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n\t\t\t// @ts-ignore\r\n\t\t\tthis._popover?.hidePopover();\r\n\t\t}, 100);\r\n\t}\r\n\r\n\toverride render() {\r\n\t\tif (!this._currentView) return nothing;\r\n\t\tif (this._views.length <= 1) return nothing;\r\n\r\n\t\treturn html`\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t${repeat(\r\n\t\t\t\t\t\t\tthis._views,\r\n\t\t\t\t\t\t\t(view) => view.alias,\r\n\t\t\t\t\t\t\t(view) => this.#renderItem(view),\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t`;\r\n\t}\r\n\r\n\t#renderItem(view: UmbCollectionViewLayout) {\r\n\t\treturn html`\r\n\t\t\t this.#onClick(view)}\r\n\t\t\t\t?active=${view.alias === this._currentView?.alias}>\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t`;\r\n\t}\r\n\r\n\tstatic override styles = [\r\n\t\tUmbTextStyles,\r\n\t\tcss`\r\n\t\t\t:host {\r\n\t\t\t\t--uui-button-content-align: left;\r\n\t\t\t\t--uui-menu-item-flat-structure: 1;\r\n\t\t\t\tdisplay: contents;\r\n\t\t\t}\r\n\r\n\t\t\t.filter-dropdown {\r\n\t\t\t\tpadding: var(--uui-size-space-3);\r\n\t\t\t}\r\n\t\t`,\r\n\t];\r\n}\r\n\r\ndeclare global {\r\n\tinterface HTMLElementTagNameMap {\r\n\t\t'umb-collection-view-bundle': UmbCollectionViewBundleElement;\r\n\t}\r\n}\r\n","import { UMB_COLLECTION_CONTEXT } from '../../default/index.js';\r\nimport type { UUIPaginationEvent } from '@umbraco-cms/backoffice/external/uui';\r\nimport { UmbTextStyles } from '@umbraco-cms/backoffice/style';\r\nimport { css, html, customElement, nothing, state } from '@umbraco-cms/backoffice/external/lit';\r\nimport type { UmbDefaultCollectionContext } from '@umbraco-cms/backoffice/collection';\r\nimport { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';\r\n\r\n@customElement('umb-collection-pagination')\r\nexport class UmbCollectionPaginationElement extends UmbLitElement {\r\n\t@state()\r\n\t_totalPages = 1;\r\n\r\n\t@state()\r\n\t_currentPage = 1;\r\n\r\n\tprivate _collectionContext?: UmbDefaultCollectionContext;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.consumeContext(UMB_COLLECTION_CONTEXT, (instance) => {\r\n\t\t\tthis._collectionContext = instance;\r\n\t\t\tthis.#observeCurrentPage();\r\n\t\t\tthis.#observerTotalPages();\r\n\t\t});\r\n\t}\r\n\r\n\t#observeCurrentPage() {\r\n\t\tthis.observe(\r\n\t\t\tthis._collectionContext!.pagination.currentPage,\r\n\t\t\t(currentPage) => {\r\n\t\t\t\tthis._currentPage = currentPage;\r\n\t\t\t},\r\n\t\t\t'umbCurrentPageObserver',\r\n\t\t);\r\n\t}\r\n\r\n\t#observerTotalPages() {\r\n\t\tthis.observe(\r\n\t\t\tthis._collectionContext!.pagination.totalPages,\r\n\t\t\t(totalPages) => {\r\n\t\t\t\tthis._totalPages = totalPages;\r\n\t\t\t},\r\n\t\t\t'umbTotalPagesObserver',\r\n\t\t);\r\n\t}\r\n\r\n\t#onChange(event: UUIPaginationEvent) {\r\n\t\tthis._collectionContext?.pagination.setCurrentPageNumber(event.target.current);\r\n\t}\r\n\r\n\toverride render() {\r\n\t\tif (this._totalPages <= 1) {\r\n\t\t\treturn nothing;\r\n\t\t}\r\n\r\n\t\treturn html``;\r\n\t}\r\n\r\n\tstatic override styles = [\r\n\t\tUmbTextStyles,\r\n\t\tcss`\r\n\t\t\t:host {\r\n\t\t\t\tdisplay: contents;\r\n\t\t\t}\r\n\r\n\t\t\tuui-pagination {\r\n\t\t\t\tdisplay: block;\r\n\t\t\t\tmargin-top: var(--uui-size-layout-1);\r\n\t\t\t}\r\n\t\t`,\r\n\t];\r\n}\r\n\r\ndeclare global {\r\n\tinterface HTMLElementTagNameMap {\r\n\t\t'umb-collection-pagination': UmbCollectionPaginationElement;\r\n\t}\r\n}\r\n","import { UmbPickerContext } from '@umbraco-cms/backoffice/picker';\r\nimport type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';\r\n\r\nexport class UmbCollectionItemPickerContext extends UmbPickerContext {\r\n\tconstructor(host: UmbControllerHost) {\r\n\t\tsuper(host);\r\n\t}\r\n}\r\n\r\nexport { UmbCollectionItemPickerContext as api };\r\n","import type { UmbCollectionAction } from './collection-action-base.js';\r\nimport { UmbActionExecutedEvent } from '@umbraco-cms/backoffice/event';\r\nimport { html, customElement, property, state, ifDefined } from '@umbraco-cms/backoffice/external/lit';\r\nimport type { UUIButtonState } from '@umbraco-cms/backoffice/external/uui';\r\nimport { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';\r\nimport { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';\r\nimport type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';\r\nimport type { ManifestCollectionAction } from '@umbraco-cms/backoffice/collection';\r\nimport { createExtensionApi } from '@umbraco-cms/backoffice/extension-api';\r\n\r\nconst manifest: UmbExtensionManifestKind = {\r\n\ttype: 'kind',\r\n\talias: 'Umb.Kind.CollectionAction.Button',\r\n\tmatchKind: 'button',\r\n\tmatchType: 'collectionAction',\r\n\tmanifest: {\r\n\t\ttype: 'collectionAction',\r\n\t\tkind: 'button',\r\n\t\telementName: 'umb-collection-action-button',\r\n\t},\r\n};\r\numbExtensionsRegistry.register(manifest);\r\n\r\n@customElement('umb-collection-action-button')\r\nexport class UmbCollectionActionButtonElement extends UmbLitElement {\r\n\t@state()\r\n\tprivate _buttonState?: UUIButtonState;\r\n\r\n\tprivate _manifest?: ManifestCollectionAction;\r\n\t@property({ type: Object, attribute: false })\r\n\tpublic get manifest() {\r\n\t\treturn this._manifest;\r\n\t}\r\n\tpublic set manifest(value: ManifestCollectionAction | undefined) {\r\n\t\tif (!value) return;\r\n\t\tconst oldValue = this._manifest;\r\n\t\tthis._manifest = value;\r\n\t\tif (oldValue !== this._manifest) {\r\n\t\t\tthis.#createApi();\r\n\t\t\tthis.requestUpdate('manifest', oldValue);\r\n\t\t}\r\n\t}\r\n\r\n\tasync #createApi() {\r\n\t\tif (!this._manifest) throw new Error('No manifest defined');\r\n\t\tif (!this._manifest.api) return;\r\n\t\tthis.#api = (await createExtensionApi(this, this._manifest)) as unknown as UmbCollectionAction;\r\n\t}\r\n\r\n\t#api?: UmbCollectionAction;\r\n\r\n\tprivate async _onClick() {\r\n\t\tif (!this.#api) return;\r\n\r\n\t\tthis._buttonState = 'waiting';\r\n\r\n\t\ttry {\r\n\t\t\tif (!this.#api) throw new Error('No api defined');\r\n\t\t\tawait this.#api.execute();\r\n\t\t\tthis._buttonState = 'success';\r\n\t\t} catch {\r\n\t\t\tthis._buttonState = 'failed';\r\n\t\t}\r\n\r\n\t\tthis.dispatchEvent(new UmbActionExecutedEvent());\r\n\t}\r\n\r\n\toverride render() {\r\n\t\tconst label = this.manifest?.meta.label ? this.localize.string(this.manifest.meta.label) : this.manifest?.name;\r\n\t\treturn html`\r\n\t\t\t\r\n\t\t`;\r\n\t}\r\n}\r\n\r\nexport default UmbCollectionActionButtonElement;\r\n\r\ndeclare global {\r\n\tinterface HTMLElementTagNameMap {\r\n\t\t'umb-collection-action-button': UmbCollectionActionButtonElement;\r\n\t}\r\n}\r\n","import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api';\r\nimport type { UmbApi } from '@umbraco-cms/backoffice/extension-api';\r\n\r\nexport interface UmbCollectionAction extends UmbApi {\r\n\texecute(): Promise;\r\n}\r\n\r\nexport abstract class UmbCollectionActionBase extends UmbControllerBase implements UmbCollectionAction {\r\n\tabstract execute(): Promise;\r\n}\r\n"],"names":["UmbCollectionViewManager","UmbControllerBase","host","#views","UmbArrayState","x","#currentView","UmbObjectState","#routes","#rootPathName","UmbStringState","currentUrl","#defaultViewAlias","config","#observeViews","view","filter","UmbExtensionsManifestInitializer","umbExtensionsRegistry","views","manifests","#createRoutes","routes","fallbackView","createExtensionElement","LOCAL_STORAGE_KEY","UmbDefaultCollectionContext","UmbContextBase","defaultViewAlias","defaultFilter","UMB_COLLECTION_CONTEXT","#config","UmbNumberState","#workspacePathBuilder","UmbBasicState","#userDefinedProperties","#viewLayouts","UmbPaginationManager","UmbSelectionManager","#initialized","resolve","#initResolver","#onPageChange","event","skipFilter","#onReloadStructureRequest","item","#onReloadChildrenRequest","entityContext","UMB_ENTITY_CONTEXT","unique","entityType","#defaultFilter","UmbChangeEvent","#listenToEntityEvents","#actionEventContext","viewElement","UmbModalRouteRegistrationController","UMB_WORKSPACE_MODAL","params","routeBuilder","UMB_ACTION_EVENT_CONTEXT","context","UmbRequestReloadStructureForEntityEvent","UmbRequestReloadChildrenOfEntityEvent","filterValue","viewManagerConfig","aliases","layout","manifest","#checkIfInitialized","#observeRepository","repositoryAlias","UmbExtensionApiInitializer","permitted","ctrl","data","layouts","viewAlias","_collectionContext","_UmbCollectionDefaultElement_instances","observeCollectionRoutes_fn","observeTotalItems_fn","renderContent_fn","renderEmptyState_fn","UmbCollectionDefaultElement","UmbLitElement","__privateAdd","__privateSet","__privateMethod","__privateGet","html","nothing","totalItems","UmbTextStyles","css","__decorateClass","state","customElement","_config","_UmbCollectionElement_instances","setConfig_fn","elementName","UmbCollectionElement","UmbExtensionElementAndApiSlotElementBase","newVal","api","property","UmbBooleanTableColumnViewElement","UmbCollectionActionBundleElement","_debouncedFilter","_UmbCollectionFilterFieldElement_instances","onInput_fn","UmbCollectionFilterFieldElement","debounce","_UmbCollectionSelectionActionsElement_instances","onActionExecuted_fn","apiArgsMethod","UmbCollectionSelectionActionsElement","instance","value","selection","UmbCollectionToolbarElement","_UmbCollectionViewBundleElement_instances","observeCollection_fn","mapManifestToViewLayout_fn","onClick_fn","renderItem_fn","UmbCollectionViewBundleElement","UMB_ROUTE_CONTEXT","activePath","UMB_ENTITY_WORKSPACE_CONTEXT","repeat","currentView","observeMultiple","viewLayouts","viewLayout","viewManifest","query","_UmbCollectionPaginationElement_instances","observeCurrentPage_fn","observerTotalPages_fn","onChange_fn","UmbCollectionPaginationElement","currentPage","totalPages","UmbCollectionItemPickerContext","UmbPickerContext","_UmbCollectionActionButtonElement_instances","createApi_fn","_api","UmbCollectionActionButtonElement","oldValue","UmbActionExecutedEvent","label","ifDefined","createExtensionApi","UmbCollectionActionBase"],"mappings":"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"}