{"version":3,"file":"document-variant-language-picker.element-CL35qfUM.js","sources":["../../../src/packages/documents/documents/modals/shared/document-variant-language-picker.element.ts"],"sourcesContent":["import { UmbDocumentVariantState, type UmbDocumentVariantOptionModel } from '../../types.js';\r\nimport type { UUIBooleanInputElement } from '@umbraco-cms/backoffice/external/uui';\r\nimport {\r\n\tcss,\r\n\tcustomElement,\r\n\thtml,\r\n\tnothing,\r\n\tproperty,\r\n\trepeat,\r\n\tstate,\r\n\ttype PropertyValues,\r\n} 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 type { UmbSelectionManager } from '@umbraco-cms/backoffice/utils';\r\n\r\n@customElement('umb-document-variant-language-picker')\r\nexport class UmbDocumentVariantLanguagePickerElement extends UmbLitElement {\r\n\t#selectionManager!: UmbSelectionManager;\r\n\r\n\t@property({ type: Array, attribute: false })\r\n\tvariantLanguageOptions: Array = [];\r\n\r\n\t@property({ attribute: false })\r\n\tset selectionManager(value: UmbSelectionManager) {\r\n\t\tthis.#selectionManager = value;\r\n\t\tthis.observe(\r\n\t\t\tthis.selectionManager.selection,\r\n\t\t\t(selection) => {\r\n\t\t\t\tthis._selection = selection;\r\n\t\t\t\tthis._isAllSelected = this.#isAllSelected();\r\n\t\t\t},\r\n\t\t\t'_selectionManager',\r\n\t\t);\r\n\t}\r\n\tget selectionManager() {\r\n\t\treturn this.#selectionManager;\r\n\t}\r\n\r\n\t@state()\r\n\t_selection: Array = [];\r\n\r\n\t@state()\r\n\t_isAllSelected?: boolean;\r\n\r\n\t/**\r\n\t * A filter function that determines if an item is pickableFilter or not.\r\n\t * @memberof UmbDocumentVariantLanguagePickerElement\r\n\t * @returns {boolean} - True if the item is pickableFilter, false otherwise.\r\n\t */\r\n\t@property({ attribute: false })\r\n\tpublic pickableFilter?: (item: UmbDocumentVariantOptionModel) => boolean;\r\n\r\n\t/**\r\n\t * A filter function that determines if an item should be highlighted as a must select.\r\n\t * @memberof UmbDocumentVariantLanguagePickerElement\r\n\t * @returns {boolean} - True if the item is pickableFilter, false otherwise.\r\n\t */\r\n\t@property({ attribute: false })\r\n\tpublic requiredFilter?: (item: UmbDocumentVariantOptionModel) => boolean;\r\n\r\n\tprotected override updated(_changedProperties: PropertyValues): void {\r\n\t\tsuper.updated(_changedProperties);\r\n\r\n\t\tif (this.selectionManager && this.pickableFilter) {\r\n\t\t\tthis.#selectionManager.setAllowLimitation((unique) => {\r\n\t\t\t\tconst option = this.variantLanguageOptions.find((o) => o.unique === unique);\r\n\t\t\t\treturn option ? this.pickableFilter!(option) : true;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t#onSelectAllChange(event: Event) {\r\n\t\tconst allUniques = this.variantLanguageOptions.map((o) => o.unique);\r\n\t\tconst filter = this.selectionManager.getAllowLimitation();\r\n\t\tconst allowedUniques = allUniques.filter((unique) => filter(unique));\r\n\r\n\t\tif ((event.target as UUIBooleanInputElement).checked) {\r\n\t\t\tthis.selectionManager.setSelection(allowedUniques);\r\n\t\t} else {\r\n\t\t\tthis.selectionManager.setSelection([]);\r\n\t\t}\r\n\t}\r\n\r\n\t#isAllSelected() {\r\n\t\tconst allUniques = this.variantLanguageOptions.map((o) => o.unique);\r\n\t\tconst filter = this.selectionManager.getAllowLimitation();\r\n\t\tconst allowedUniques = allUniques.filter((unique) => filter(unique));\r\n\t\treturn this._selection.length === allowedUniques.length;\r\n\t}\r\n\r\n\toverride render() {\r\n\t\tif (this.variantLanguageOptions.length === 0) {\r\n\t\t\treturn html`\r\n\t\t\t\tThere are no available variants\r\n\t\t\t`;\r\n\t\t}\r\n\r\n\t\treturn html`\r\n\t\t\t\r\n\t\t\t${repeat(\r\n\t\t\t\tthis.variantLanguageOptions,\r\n\t\t\t\t(option) => option.unique,\r\n\t\t\t\t(option) => html` ${this.#renderItem(option)} `,\r\n\t\t\t)}\r\n\t\t`;\r\n\t}\r\n\r\n\t#renderItem(option: UmbDocumentVariantOptionModel) {\r\n\t\tconst pickable = this.pickableFilter ? this.pickableFilter(option) : () => true;\r\n\t\tconst selected = this._selection.includes(option.unique);\r\n\t\tconst mustSelect = (!selected && this.requiredFilter?.(option)) ?? false;\r\n\t\treturn html`\r\n\t\t\t this.selectionManager.select(option.unique)}\r\n\t\t\t\t@deselected=${() => this.selectionManager.deselect(option.unique)}\r\n\t\t\t\t?selected=${selected}>\r\n\t\t\t\t\r\n\t\t\t\t${UmbDocumentVariantLanguagePickerElement.renderLabel(option, mustSelect)}\r\n\t\t\t\r\n\t\t`;\r\n\t}\r\n\r\n\tstatic renderLabel(option: UmbDocumentVariantOptionModel, mustSelect?: boolean) {\r\n\t\treturn html`
\r\n\t\t\t ${option.language.name} \r\n\t\t\t
${UmbDocumentVariantLanguagePickerElement.renderVariantStatus(option)}
\r\n\t\t\t${option.language.isMandatory && mustSelect\r\n\t\t\t\t? html`
\r\n\t\t\t\t\t\tMandatory language\r\n\t\t\t\t\t
`\r\n\t\t\t\t: nothing}\r\n\t\t
`;\r\n\t}\r\n\r\n\tstatic renderVariantStatus(option: UmbDocumentVariantOptionModel) {\r\n\t\tswitch (option.variant?.state) {\r\n\t\t\tcase UmbDocumentVariantState.PUBLISHED:\r\n\t\t\t\treturn html`Published`;\r\n\t\t\tcase UmbDocumentVariantState.PUBLISHED_PENDING_CHANGES:\r\n\t\t\t\treturn html`Published with pending changes`;\r\n\t\t\tcase UmbDocumentVariantState.DRAFT:\r\n\t\t\t\treturn html`Draft`;\r\n\t\t\tcase UmbDocumentVariantState.NOT_CREATED:\r\n\t\t\tdefault:\r\n\t\t\t\treturn html`Not created`;\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.required {\r\n\t\t\t\tcolor: var(--uui-color-danger);\r\n\t\t\t\t--uui-menu-item-color-hover: var(--uui-color-danger-emphasis);\r\n\t\t\t}\r\n\t\t\t.label {\r\n\t\t\t\tpadding: 0.5rem 0;\r\n\t\t\t}\r\n\t\t\t.label-status {\r\n\t\t\t\tfont-size: 0.8rem;\r\n\t\t\t}\r\n\r\n\t\t\tuui-menu-item {\r\n\t\t\t\t--uui-menu-item-flat-structure: 1;\r\n\t\t\t}\r\n\r\n\t\t\tuui-checkbox {\r\n\t\t\t\tmargin-bottom: var(--uui-size-space-3);\r\n\t\t\t}\r\n\t\t`,\r\n\t];\r\n}\r\n\r\nexport default UmbDocumentVariantLanguagePickerElement;\r\n\r\ndeclare global {\r\n\tinterface HTMLElementTagNameMap {\r\n\t\t'umb-document-variant-language-picker': UmbDocumentVariantLanguagePickerElement;\r\n\t}\r\n}\r\n"],"names":["_selectionManager","_UmbDocumentVariantLanguagePickerElement_instances","onSelectAllChange_fn","isAllSelected_fn","renderItem_fn","UmbDocumentVariantLanguagePickerElement","UmbLitElement","__privateAdd","value","__privateSet","selection","__privateMethod","__privateGet","_changedProperties","unique","option","o","html","repeat","mustSelect","nothing","UmbDocumentVariantState","event","allUniques","filter","allowedUniques","pickable","selected","UmbTextStyles","css","__decorateClass","property","state","customElement"],"mappings":"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"}