{"version":3,"file":"ColumnFormComponent-DYrIF2uI.chunk.mjs","sources":["../node_modules/vue-material-design-icons/OpenInNew.vue","../src/shared/mixins/copyToClipboard.js","../node_modules/vue-material-design-icons/ContentCopy.vue","../src/shared/components/ncTable/partials/rowTypePartials/TextLineForm.vue","../src/shared/components/ncTable/partials/rowTypePartials/TextLongForm.vue","../node_modules/vue-material-design-icons/ClipboardCheckMultipleOutline.vue","../src/shared/components/ncTable/partials/rowTypePartials/TextLinkForm.vue","../src/shared/components/ncTable/partials/rowTypePartials/NumberForm.vue","../node_modules/vue-material-design-icons/Minus.vue","../src/shared/components/ncTable/partials/rowTypePartials/NumberStarsForm.vue","../src/shared/components/ncTable/partials/rowTypePartials/NumberProgressForm.vue","../src/shared/components/ncTable/partials/rowTypePartials/SelectionCheckForm.vue","../src/shared/components/ncTable/partials/rowTypePartials/SelectionForm.vue","../src/shared/components/ncTable/partials/rowTypePartials/SelectionMultiForm.vue","../src/shared/components/ncTable/partials/rowTypePartials/DatetimeForm.vue","../src/shared/components/ncTable/partials/rowTypePartials/DatetimeDateForm.vue","../src/shared/components/ncTable/partials/rowTypePartials/DatetimeTimeForm.vue","../src/shared/components/ncTable/partials/rowTypePartials/TextRichForm.vue","../src/shared/components/ncTable/partials/rowTypePartials/UsergroupForm.vue","../src/modules/main/partials/ColumnFormComponent.vue"],"sourcesContent":["<template>\n  <span v-bind=\"$attrs\"\n        :aria-hidden=\"title ? null : 'true'\"\n        :aria-label=\"title\"\n        class=\"material-design-icon open-in-new-icon\"\n        role=\"img\"\n        @click=\"$emit('click', $event)\">\n    <svg :fill=\"fillColor\"\n         class=\"material-design-icon__svg\"\n         :width=\"size\"\n         :height=\"size\"\n         viewBox=\"0 0 24 24\">\n      <path d=\"M14,3V5H17.59L7.76,14.83L9.17,16.24L19,6.41V10H21V3M19,19H5V5H12V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z\">\n        <title v-if=\"title\">{{ title }}</title>\n      </path>\n    </svg>\n  </span>\n</template>\n\n<script>\nexport default {\n  name: \"OpenInNewIcon\",\n  emits: ['click'],\n  props: {\n    title: {\n      type: String,\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n}\n</script>","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { showError, showSuccess } from '@nextcloud/dialogs'\n\nexport default {\n\tmethods: {\n\t\tasync copyToClipboard(content, silent = true) {\n\t\t\ttry {\n\t\t\t\tif (navigator?.clipboard) {\n\t\t\t\t\tawait navigator.clipboard.writeText(content)\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error('Clipboard is not available')\n\t\t\t\t}\n\n\t\t\t\tif (!silent) {\n\t\t\t\t\tshowSuccess(t('tables', 'Copied to clipboard.'))\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error('Error copying to clipboard', e)\n\t\t\t\tif (!silent) {\n\t\t\t\t\tshowError(t('tables', 'Clipboard is not available'))\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n}\n","<template>\n  <span v-bind=\"$attrs\"\n        :aria-hidden=\"title ? null : 'true'\"\n        :aria-label=\"title\"\n        class=\"material-design-icon content-copy-icon\"\n        role=\"img\"\n        @click=\"$emit('click', $event)\">\n    <svg :fill=\"fillColor\"\n         class=\"material-design-icon__svg\"\n         :width=\"size\"\n         :height=\"size\"\n         viewBox=\"0 0 24 24\">\n      <path d=\"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z\">\n        <title v-if=\"title\">{{ title }}</title>\n      </path>\n    </svg>\n  </span>\n</template>\n\n<script>\nexport default {\n  name: \"ContentCopyIcon\",\n  emits: ['click'],\n  props: {\n    title: {\n      type: String,\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n}\n</script>","<!--\n  - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n  - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<RowFormWrapper :title=\"column.title\" :mandatory=\"isMandatory(column)\" :length=\"length\" :max-length=\"column.textMaxLength\" :description=\"column.description\">\n\t\t<input v-model=\"localValue\" :maxlength=\"column.textMaxLength\" :readonly=\"column.viewColumnInformation?.readonly\">\n\t</RowFormWrapper>\n</template>\n\n<script>\nimport RowFormWrapper from './RowFormWrapper.vue'\nimport rowHelper from '../../../../components/ncTable/mixins/rowHelper.js'\n\nexport default {\n\tcomponents: {\n\t\tRowFormWrapper,\n\t},\n\tmixins: [rowHelper],\n\tprops: {\n\t\tcolumn: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t}\n\t},\n\tcomputed: {\n\t\tlocalValue: {\n\t\t\tget() {\n\t\t\t\tif (this.value === null) {\n\t\t\t\t\tconst newValue = this.column?.textDefault ? this.column.textDefault : ''\n\t\t\t\t\tthis.$emit('update:value', newValue)\n\t\t\t\t\treturn newValue\n\t\t\t\t}\n\t\t\t\treturn this.value\n\t\t\t},\n\t\t\tset(v) { this.$emit('update:value', v) },\n\t\t},\n\t\tlength() {\n\t\t\treturn (this.localValue) ? this.localValue.length : 0\n\t\t},\n\t},\n}\n</script>\n<style scoped>\n\n.hint-padding-left {\n\tpadding-inline-start: 20px;\n}\n\n@media only screen and (max-width: 641px) {\n\t.hint-padding-left {\n\t\tpadding-inline-start: 0;\n\t}\n}\n\n</style>\n","<!--\n  - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n  - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<RowFormWrapper :title=\"column.title\" :mandatory=\"isMandatory(column)\" :description=\"column.description\">\n\t\t<TiptapMenuBar\n\t\t\t:value.sync=\"localValue\"\n\t\t\t:text-length-limit=\"getTextLimit\"\n\t\t\t:readonly=\"column.viewColumnInformation?.readonly\"\n\t\t\t@input=\"updateText\" />\n\t</RowFormWrapper>\n</template>\n\n<script>\nimport TiptapMenuBar from '../TiptapMenuBar.vue'\nimport RowFormWrapper from './RowFormWrapper.vue'\nimport rowHelper from '../../../../components/ncTable/mixins/rowHelper.js'\nexport default {\n\tcomponents: {\n\t\tTiptapMenuBar,\n\t\tRowFormWrapper,\n\t},\n\tmixins: [rowHelper],\n\tprops: {\n\t\tcolumn: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tcomputed: {\n\t\tlocalValue: {\n\t\t\tget() {\n\t\t\t\treturn (this.value !== null)\n\t\t\t\t\t? this.value\n\t\t\t\t\t: ((this.column.textDefault !== undefined)\n\t\t\t\t\t\t? this.column.textDefault\n\t\t\t\t\t\t: '')\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\tthis.$emit('update:value', v)\n\t\t\t},\n\t\t},\n\t\tgetTextLimit() {\n\t\t\tif (this.column.textMaxLength === -1) {\n\t\t\t\treturn null\n\t\t\t} else {\n\t\t\t\treturn this.column.textMaxLength\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tupdateText(text) {\n\t\t\tthis.localValue = text\n\t\t},\n\t},\n}\n</script>\n","<template>\n  <span v-bind=\"$attrs\"\n        :aria-hidden=\"title ? null : 'true'\"\n        :aria-label=\"title\"\n        class=\"material-design-icon clipboard-check-multiple-outline-icon\"\n        role=\"img\"\n        @click=\"$emit('click', $event)\">\n    <svg :fill=\"fillColor\"\n         class=\"material-design-icon__svg\"\n         :width=\"size\"\n         :height=\"size\"\n         viewBox=\"0 0 24 24\">\n      <path d=\"M4 7V21H18V23H4C2.9 23 2 22.1 2 21V7H4M12.8 15.35L9.5 12.05L10.9 10.65L12.8 12.55L17.1 8.25L18.5 9.65L12.8 15.35M20 3C21.1 3 22 3.9 22 5V17C22 18.1 21.1 19 20 19H8C6.9 19 6 18.1 6 17V5C6 3.9 6.9 3 8 3H11.18C11.6 1.84 12.7 1 14 1C15.3 1 16.4 1.84 16.82 3H20M14 3C13.45 3 13 3.45 13 4C13 4.55 13.45 5 14 5C14.55 5 15 4.55 15 4C15 3.45 14.55 3 14 3M10 7V5H8V17H20V5H18V7H10Z\">\n        <title v-if=\"title\">{{ title }}</title>\n      </path>\n    </svg>\n  </span>\n</template>\n\n<script>\nexport default {\n  name: \"ClipboardCheckMultipleOutlineIcon\",\n  emits: ['click'],\n  props: {\n    title: {\n      type: String,\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n}\n</script>","<!--\n  - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n  - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<RowFormWrapper :title=\"column.title\" :mandatory=\"isMandatory(column)\" :description=\"column.description\" :loading=\"isLoadingResults\">\n\t\t<div class=\"row\">\n\t\t\t<div v-if=\"providers?.length === 0\" class=\"col-4\">\n\t\t\t\t<NcNoteCard type=\"info\">\n\t\t\t\t\t{{ t('tables', 'You can not insert any links in this field. Please configure at least one link provider in the column configuration.') }}\n\t\t\t\t</NcNoteCard>\n\t\t\t</div>\n\t\t\t<div class=\"link-input\">\n\t\t\t\t<NcTextField v-if=\"isPlainUrl\" :value.sync=\"plainLink\" :placeholder=\"t('tables', 'URL')\" />\n\t\t\t\t<NcSelect v-else v-model=\"localValue\"\n\t\t\t\t\t:options=\"results\"\n\t\t\t\t\t:clearable=\"true\"\n\t\t\t\t\tlabel=\"title\"\n\t\t\t\t\t:disabled=\"column.viewColumnInformation?.readonly\"\n\t\t\t\t\t:aria-label-combobox=\"t('tables', 'Link providers')\"\n\t\t\t\t\tstyle=\"width: 100%\"\n\t\t\t\t\t@search=\"v => term = v\">\n\t\t\t\t\t<template #option=\"props\">\n\t\t\t\t\t\t<LinkWidget :thumbnail-url=\"props.thumbnailUrl\" :icon-url=\"props.icon\" :title=\"props.title\" :subline=\"props.subline\" :icon-size=\"40\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t<template #selected-option=\"props\">\n\t\t\t\t\t\t<LinkWidget :thumbnail-url=\"props.thumbnailUrl\" :icon-url=\"props.icon\" :title=\"props.title\" :icon-size=\"24\" />\n\t\t\t\t\t</template>\n\t\t\t\t</NcSelect>\n\t\t\t\t<NcButton type=\"tertiary\" :disabled=\"!localValue\" :title=\"t('tables', 'Copy link')\" @click=\"copyLink\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<ContentCopy v-if=\"!copied\" :size=\"20\" />\n\t\t\t\t\t\t<ClipboardCheckMultipleOutline v-else :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t</NcButton>\n\t\t\t\t<NcButton type=\"tertiary\" :disabled=\"!localValue\" :title=\"t('tables', 'Open link')\" @click=\"openLink\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<OpenInNew :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t</NcButton>\n\t\t\t</div>\n\t\t\t<NcReferenceList :text=\"localValue?.value\" :limit=\"1\" :interactive=\"false\" />\n\t\t</div>\n\t</RowFormWrapper>\n</template>\n\n<script>\nimport ContentCopy from 'vue-material-design-icons/ContentCopy.vue'\nimport ClipboardCheckMultipleOutline from 'vue-material-design-icons/ClipboardCheckMultipleOutline.vue'\nimport OpenInNew from 'vue-material-design-icons/OpenInNew.vue'\nimport { NcReferenceList } from '@nextcloud/vue/dist/Components/NcRichText.js'\nimport RowFormWrapper from './RowFormWrapper.vue'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport displayError from '../../../../utils/displayError.js'\nimport { NcButton, NcTextField, NcNoteCard, NcSelect } from '@nextcloud/vue'\nimport debounce from 'debounce'\nimport generalHelper from '../../../../mixins/generalHelper.js'\nimport copyToClipboard from '../../../../mixins/copyToClipboard.js'\nimport rowHelper from '../../../../components/ncTable/mixins/rowHelper.js'\nimport LinkWidget from '../LinkWidget.vue'\nimport { translate as t } from '@nextcloud/l10n'\n\nexport default {\n\n\tcomponents: {\n\t\tContentCopy,\n\t\tClipboardCheckMultipleOutline,\n\t\tOpenInNew,\n\t\tNcButton,\n\t\tNcNoteCard,\n\t\tNcSelect,\n\t\tNcReferenceList,\n\t\tNcTextField,\n\t\tRowFormWrapper,\n\t\tLinkWidget,\n\t},\n\n\tmixins: [generalHelper, copyToClipboard, rowHelper],\n\n\tprops: {\n\t\tcolumn: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tproviders: null,\n\t\t\tresults: [],\n\t\t\tterm: '',\n\t\t\tproviderLoading: {},\n\t\t\tcopied: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tplainLink: {\n\t\t\tget() {\n\t\t\t\treturn this.localValue?.value ?? ''\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\tthis.$emit('update:value', JSON.stringify({\n\t\t\t\t\ttitle: v,\n\t\t\t\t\tsubline: t('tables', 'URL'),\n\t\t\t\t\tproviderId: 'url',\n\t\t\t\t\tvalue: v,\n\t\t\t\t}))\n\t\t\t},\n\t\t},\n\t\tlocalValue: {\n\t\t\tget() {\n\t\t\t\t// if we got an old value (string not object as json)\n\t\t\t\tif (this.value && !this.hasJsonStructure(this.value)) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttitle: this.value,\n\t\t\t\t\t\tsubline: t('tables', 'URL'),\n\t\t\t\t\t\tproviderId: 'url',\n\t\t\t\t\t\tvalue: this.value,\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn this.value ? JSON.parse(this.value) : null\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\tlet value = null\n\t\t\t\tif (v !== null && v !== '') {\n\t\t\t\t\tvalue = JSON.stringify(v)\n\t\t\t\t}\n\t\t\t\tthis.$emit('update:value', value)\n\t\t\t},\n\t\t},\n\t\tisPlainUrl() {\n\t\t\treturn this.providers?.length === 1 && this.providers[0] === 'url'\n\t\t},\n\t\tisLoadingResults() {\n\t\t\tfor (const [key, value] of Object.entries(this.providerLoading)) {\n\t\t\t\tconsole.debug('is still loading results at least for: ' + key, value)\n\t\t\t\tif (value) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t},\n\n\twatch: {\n\t\tterm() {\n\t\t\tthis.debounceSubmit()\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\tif (this.localValue === null) {\n\t\t\tthis.localValue = this.column.textDefault\n\t\t}\n\n\t\tthis.debounceSubmit = debounce(function() {\n\t\t\tthis.loadResults()\n\t\t}, 500)\n\t},\n\n\tmounted() {\n\t\tif (this.column?.textAllowedPattern) {\n\t\t\tthis.providers = this.column?.textAllowedPattern?.split(',')\n\t\t} else {\n\t\t\tthis.providers = []\n\t\t}\n\t},\n\n\tmethods: {\n\t\tt,\n\t\tsetProviderLoading(providerId, status) {\n\t\t\tthis.providerLoading[providerId] = !!status\n\t\t\tthis.providerLoading = { ...this.providerLoading }\n\t\t},\n\n\t\tloadResults() {\n\t\t\tif (this.term.length >= 3 || this.term === '') {\n\t\t\t\tthis.providers?.forEach(provider => this.loadResultsForProvider(provider, this.term))\n\t\t\t}\n\t\t},\n\n\t\tasync loadResultsForProvider(providerId, term) {\n\t\t\tif (term === null || term === '') {\n\t\t\t\tthis.results = []\n\t\t\t\tthis.providerLoading = {}\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.setProviderLoading(providerId, true)\n\n\t\t\tthis.removeResultsByProviderId(providerId)\n\n\t\t\tif (providerId === 'url') {\n\t\t\t\tif (this.isValidUrl(term)) {\n\t\t\t\t\tthis.addUrlResult(term)\n\t\t\t\t}\n\t\t\t\tthis.setProviderLoading(providerId, false)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tlet res = null\n\t\t\ttry {\n\t\t\t\tres = await axios.get(generateOcsUrl('/search/providers/' + providerId + '/search?term=' + term))\n\t\t\t} catch (e) {\n\t\t\t\tdisplayError(e, t('tables', 'Could not load link provider results.'))\n\t\t\t\treturn\n\t\t\t}\n\t\t\tfor (const item of res.data.ocs.data.entries) {\n\t\t\t\t// remove previews for thumbnail and icons if they can not be fetched from the server\n\t\t\t\t// depending on the server configuration if previews are allowed or not\n\t\t\t\tif (item.thumbnailUrl && !await this.isUrlReachable(item.thumbnailUrl)) {\n\t\t\t\t\tdelete item.thumbnailUrl\n\t\t\t\t}\n\t\t\t\tif (item.icon && !await this.isUrlReachable(item.icon)) {\n\t\t\t\t\tdelete item.icon\n\t\t\t\t}\n\n\t\t\t\t// add needed general data\n\t\t\t\titem.providerId = providerId\n\t\t\t\titem.subline = res.data?.ocs?.data?.name\n\t\t\t\titem.value = item.resourceUrl\n\t\t\t}\n\t\t\tthis.results = this.results.concat(res.data?.ocs?.data?.entries)\n\t\t\tthis.setProviderLoading(providerId, false)\n\t\t},\n\n\t\tisValidUrl(string) {\n\t\t\ttry {\n\t\t\t\treturn new URL(string)\n\t\t\t} catch (err) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t},\n\n\t\taddUrlResult(term) {\n\t\t\tthis.results.push({\n\t\t\t\ttitle: term,\n\t\t\t\tsubline: t('tables', 'Url'),\n\t\t\t\tproviderId: 'url',\n\t\t\t\tvalue: term,\n\t\t\t})\n\t\t},\n\n\t\tremoveResultsByProviderId(providerId) {\n\t\t\tthis.results = this.results.filter(item => item.providerId !== providerId)\n\t\t},\n\n\t\tcopyLink() {\n\t\t\tif (this.localValue) {\n\t\t\t\tif (this.copied !== false) {\n\t\t\t\t\tclearTimeout(this.copied)\n\t\t\t\t}\n\n\t\t\t\tthis.copied = this.copyToClipboard(this.localValue.value)\n\t\t\t\t\t? setTimeout(() => {\n\t\t\t\t\t\tthis.copied = false\n\t\t\t\t\t}, 3000)\n\t\t\t\t\t: false\n\t\t\t}\n\t\t},\n\n\t\topenLink() {\n\t\t\tif (this.localValue) {\n\t\t\t\twindow.open(this.localValue.value, '_blank')\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.link-input {\n\tdisplay: flex;\n\talign-items: center;\n\tmargin-bottom: var(--default-grid-baseline);\n\n\t:deep(.v-select:not(.vs--open) .vs__search) {\n\t\tposition: absolute;\n\t}\n\n\t:deep(.vs__selected) {\n\t\tflex-grow: 1;\n\t\theight: auto !important;\n\t}\n}\n</style>\n","<!--\n  - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n  - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<RowFormWrapper :width=\"2\" :title=\"column.title\" :mandatory=\"isMandatory(column)\" :description=\"column.description\">\n\t\t<div v-if=\"column.numberPrefix\" class=\"prefix\">\n\t\t\t{{ column.numberPrefix }}\n\t\t</div>\n\t\t<input v-model=\"localValue\"\n\t\t\ttype=\"number\"\n\t\t\t:min=\"column.numberMin\"\n\t\t\t:max=\"column.numberMax\"\n\t\t\t:readonly=\"column.viewColumnInformation?.readonly\"\n\t\t\t:step=\"getStep\">\n\t\t<div v-if=\"column.numberSuffix\" class=\"suffix\">\n\t\t\t{{ column.numberSuffix }}\n\t\t</div>\n\t</RowFormWrapper>\n</template>\n\n<script>\nimport RowFormWrapper from './RowFormWrapper.vue'\nimport rowHelper from '../../../../components/ncTable/mixins/rowHelper.js'\nexport default {\n\n\tcomponents: {\n\t\tRowFormWrapper,\n\t},\n\tmixins: [rowHelper],\n\tprops: {\n\t\tcolumn: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tgetStep() {\n\t\t\tif (this.column?.numberDecimals === 0) {\n\t\t\t\treturn '1'\n\t\t\t} else if (this.column?.numberDecimals > 0) {\n\t\t\t\treturn '.' + '0'.repeat(this.column.numberDecimals - 1) + '1'\n\t\t\t} else {\n\t\t\t\treturn 'any'\n\t\t\t}\n\t\t},\n\t\tlocalValue: {\n\t\t\tget() {\n\t\t\t\tif (this.value !== null) {\n\t\t\t\t\treturn this.value\n\t\t\t\t} else {\n\t\t\t\t\tif (this.column.numberDefault !== undefined) {\n\t\t\t\t\t\tthis.$emit('update:value', this.column.numberDefault)\n\t\t\t\t\t\treturn this.column.numberDefault\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn null\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tset(v) { this.$emit('update:value', this.parseValue(v)) },\n\t\t},\n\t},\n\n\twatch: {\n\t\tlocalValue() {\n\t\t\tconst value = this.parseValue(this.localValue)\n\t\t\tthis.localValue = value\n\t\t\tthis.$emit('update:value', value)\n\t\t},\n\t\tvalue() {\n\t\t\tthis.localValue = this.value\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.localValue = this.value\n\t},\n\n\tmethods: {\n\t\tparseValue(inputValue) {\n\t\t\tif (inputValue === null || inputValue === '') {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\tlet parsedValue\n\t\t\tif (typeof inputValue === 'string' || inputValue instanceof String) {\n\t\t\t\tparsedValue = parseFloat(inputValue.replace(',', '.'))\n\t\t\t} else {\n\t\t\t\tparsedValue = inputValue\n\t\t\t}\n\t\t\tconst roundedValue = parsedValue.toFixed(this.column?.numberDecimals)\n\t\t\tlet value = parseFloat(roundedValue)\n\t\t\tif ((this.column?.numberMin !== null && this.column?.numberMin !== undefined) && value < this.column?.numberMin) {\n\t\t\t\tvalue = this.column.numberMin\n\t\t\t}\n\t\t\tif ((this.column?.numberMax !== null && this.column?.numberMax !== undefined) && value > this.column?.numberMax) {\n\t\t\t\tvalue = this.column.numberMax\n\t\t\t}\n\t\t\treturn value\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n\n.prefix {\n\tpadding-inline-end: calc(var(--default-grid-baseline) * 2);\n}\n\n.suffix {\n\tpadding-inline-start: calc(var(--default-grid-baseline) * 2);\n}\n\n</style>\n","<template>\n  <span v-bind=\"$attrs\"\n        :aria-hidden=\"title ? null : 'true'\"\n        :aria-label=\"title\"\n        class=\"material-design-icon minus-icon\"\n        role=\"img\"\n        @click=\"$emit('click', $event)\">\n    <svg :fill=\"fillColor\"\n         class=\"material-design-icon__svg\"\n         :width=\"size\"\n         :height=\"size\"\n         viewBox=\"0 0 24 24\">\n      <path d=\"M19,13H5V11H19V13Z\">\n        <title v-if=\"title\">{{ title }}</title>\n      </path>\n    </svg>\n  </span>\n</template>\n\n<script>\nexport default {\n  name: \"MinusIcon\",\n  emits: ['click'],\n  props: {\n    title: {\n      type: String,\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n}\n</script>","<!--\n  - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n  - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<RowFormWrapper :title=\"column.title\" :mandatory=\"isMandatory(column)\" :description=\"column.description\">\n\t\t<div class=\"align-center\">\n\t\t\t<NcButton type=\"tertiary\" :aria-label=\"t('tables', 'Reduce stars')\" :disabled=\"column.viewColumnInformation?.readonly || localValue <= 0\" @click=\"less\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Minus :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t\t<div class=\"stars\" :class=\"{ 'readonly': column.viewColumnInformation?.readonly }\">\n\t\t\t\t{{ getStars }}\n\t\t\t</div>\n\t\t\t<NcButton type=\"tertiary\" :aria-label=\"t('tables', 'Increase stars')\" :disabled=\"column.viewColumnInformation?.readonly || localValue >= 5\" @click=\"more\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Plus :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t</div>\n\t</RowFormWrapper>\n</template>\n\n<script>\nimport { NcButton } from '@nextcloud/vue'\nimport RowFormWrapper from './RowFormWrapper.vue'\nimport Plus from 'vue-material-design-icons/Plus.vue'\nimport Minus from 'vue-material-design-icons/Minus.vue'\nimport { translate as t } from '@nextcloud/l10n'\nimport rowHelper from '../../../../components/ncTable/mixins/rowHelper.js'\nexport default {\n\tcomponents: {\n\t\tRowFormWrapper,\n\t\tNcButton,\n\t\tPlus,\n\t\tMinus,\n\t},\n\tmixins: [rowHelper],\n\tprops: {\n\t\tcolumn: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t}\n\t},\n\tcomputed: {\n\t\tlocalValue: {\n\t\t\tget() {\n\t\t\t\tif (this.value !== null) {\n\t\t\t\t\treturn this.value\n\t\t\t\t} else {\n\t\t\t\t\tif (this.column.numberDefault !== undefined) {\n\t\t\t\t\t\tthis.$emit('update:value', this.column.numberDefault)\n\t\t\t\t\t\treturn this.column.numberDefault\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn null\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tset(v) { this.$emit('update:value', v) },\n\t\t},\n\t\tgetStars() {\n\t\t\treturn '★'.repeat(this.localValue) + '☆'.repeat(5 - this.localValue)\n\t\t},\n\t},\n\tmethods: {\n\t\tt,\n\t\tmore() {\n\t\t\tif (this.localValue < 5) {\n\t\t\t\tthis.localValue++\n\t\t\t}\n\t\t},\n\t\tless() {\n\t\t\tif (this.localValue > 0) {\n\t\t\t\tthis.localValue--\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n\n.align-center {\n\talign-items: center;\n\tdisplay: inline-flex;\n}\n\n.stars {\n\tfont-size: 1.4em;\n\tpadding: 7px;\n}\n\n.stars.readonly {\n\topacity: 0.6;\n}\n\n</style>\n","<!--\n  - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n  - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<RowFormWrapper :title=\"column.title\" :mandatory=\"isMandatory(column)\" :description=\"column.description\" :width=\"2\">\n\t\t<input v-model=\"localValue\"\n\t\t\ttype=\"number\"\n\t\t\tmin=\"0\"\n\t\t\tmax=\"100\"\n\t\t\t:readonly=\"column.viewColumnInformation?.readonly\"\n\t\t\t@input=\"enforceBounds\">\n\t</RowFormWrapper>\n</template>\n\n<script>\nimport RowFormWrapper from './RowFormWrapper.vue'\nimport rowHelper from '../../../../components/ncTable/mixins/rowHelper.js'\n\nexport default {\n\tcomponents: {\n\t\tRowFormWrapper,\n\t},\n\tmixins: [rowHelper],\n\tprops: {\n\t\tcolumn: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t}\n\t},\n\tcomputed: {\n\t\tlocalValue: {\n\t\t\tget() {\n\t\t\t\tif (this.value !== null) {\n\t\t\t\t\treturn this.value\n\t\t\t\t} else {\n\t\t\t\t\tif (this.column.numberDefault !== undefined) {\n\t\t\t\t\t\tthis.$emit('update:value', this.column.numberDefault)\n\t\t\t\t\t\treturn this.column.numberDefault\n\t\t\t\t\t}\n\t\t\t\t\treturn null\n\t\t\t\t}\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\tconst parsedValue = parseInt(v)\n\t\t\t\tconst clampedValue = Math.min(Math.max(0, v), 100)\n\t\t\t\tthis.$emit('update:value', isNaN(parsedValue) ? null : parseInt(clampedValue))\n\t\t\t},\n\t\t},\n\t},\n\tmethods: {\n\t\tenforceBounds(event) {\n\t\t\tconst value = parseInt(event.target.value)\n\t\t\tif (isNaN(value)) {\n\t\t\t\tthis.$emit('update:value', null)\n\t\t\t\tevent.target.value = null\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst clampedValue = Math.min(Math.max(0, value), 100)\n\t\t\tthis.$emit('update:value', clampedValue)\n\t\t\tevent.target.value = clampedValue\n\t\t},\n\t},\n}\n</script>\n<style scoped>\n\n.hint-padding-left {\n\tpadding-inline-start: 20px;\n}\n\n@media only screen and (max-width: 641px) {\n\t.hint-padding-left {\n\t\tpadding-inline-start: 0;\n\t}\n}\n\n</style>\n","<!--\n  - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n  - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<RowFormWrapper :title=\"column.title\" :mandatory=\"isMandatory(column)\" :description=\"column.description\">\n\t\t<NcCheckboxRadioSwitch\n\t\t\ttype=\"switch\"\n\t\t\t:checked.sync=\"localValue\"\n\t\t\t:disabled=\"column.viewColumnInformation?.readonly\"\n\t\t\tdata-cy=\"selectionCheckFormSwitch\" />\n\t</RowFormWrapper>\n</template>\n\n<script>\nimport { NcCheckboxRadioSwitch } from '@nextcloud/vue'\nimport RowFormWrapper from './RowFormWrapper.vue'\nimport rowHelper from '../../../../components/ncTable/mixins/rowHelper.js'\n\nexport default {\n\tcomponents: {\n\t\tNcCheckboxRadioSwitch,\n\t\tRowFormWrapper,\n\t},\n\tmixins: [rowHelper],\n\tprops: {\n\t\tcolumn: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t}\n\t},\n\tcomputed: {\n\t\tlocalValue: {\n\t\t\tget() {\n\t\t\t\tif (this.value) {\n\t\t\t\t\treturn this.value === 'true'\n\t\t\t\t} else {\n\t\t\t\t\tconst defaultValueBool = this.column.selectionDefault === 'true'\n\t\t\t\t\tthis.$emit('update:value', '' + defaultValueBool)\n\t\t\t\t\treturn defaultValueBool\n\t\t\t\t}\n\t\t\t},\n\t\t\tset(v) { this.$emit('update:value', '' + v) },\n\t\t},\n\t},\n}\n</script>\n<style scoped>\n\n.hint-padding-left {\n\tpadding-inline-start: 20px;\n}\n\n@media only screen and (max-width: 641px) {\n\t.hint-padding-left {\n\t\tpadding-inline-start: 0;\n\t}\n}\n\n</style>\n","<!--\n  - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n  - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<RowFormWrapper :title=\"column.title\" :mandatory=\"isMandatory(column)\" :description=\"column.description\">\n\t\t<NcSelect\n\t\t\tv-model=\"localValue\"\n\t\t\t:options=\"getAllNonDeletedOptions\"\n\t\t\t:disabled=\"column.viewColumnInformation?.readonly\"\n\t\t\t:aria-label-combobox=\"t('tables', 'Options')\" />\n\t</RowFormWrapper>\n</template>\n\n<script>\nimport { NcSelect } from '@nextcloud/vue'\nimport RowFormWrapper from './RowFormWrapper.vue'\nimport rowHelper from '../../../../components/ncTable/mixins/rowHelper.js'\nexport default {\n\tname: 'SelectionForm',\n\tcomponents: {\n\t\tNcSelect,\n\t\tRowFormWrapper,\n\t},\n\tmixins: [rowHelper],\n\tprops: {\n\t\tcolumn: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tcomputed: {\n\t\tlocalValue: {\n\t\t\tget() {\n\t\t\t\tif (this.value !== null) {\n\t\t\t\t\treturn this.getOptionObject(parseInt(this.value))\n\t\t\t\t} else {\n\t\t\t\t\tthis.$emit('update:value', this.getDefaultId)\n\t\t\t\t\treturn this.getDefaultOptionObject\n\t\t\t\t}\n\t\t\t},\n\t\t\tset(v) { this.$emit('update:value', v?.id) },\n\t\t},\n\t\tgetOptions() {\n\t\t\treturn this.column?.selectionOptions || null\n\t\t},\n\t\tgetDefaultId() {\n\t\t\treturn !isNaN(this.column.selectionDefault) ? parseInt(this.column.selectionDefault) : null\n\t\t},\n\t\tgetDefaultOptionObject() {\n\t\t\treturn this.getOptionObject(this.getDefaultId) || null\n\t\t},\n\t\tgetAllNonDeletedOptions() {\n\t\t\treturn this.getOptions.filter(item => {\n\t\t\t\treturn !item.deleted\n\t\t\t})\n\t\t},\n\t},\n\tmethods: {\n\t\tgetOptionObject(id) {\n\t\t\treturn this.getOptions.find(e => e.id === id) || null\n\t\t},\n\t},\n}\n</script>\n<style scoped>\n\n.hint-padding-left {\n\tpadding-inline-start: 20px;\n}\n\n@media only screen and (max-width: 641px) {\n\t.hint-padding-left {\n\t\tpadding-inline-start: 0;\n\t}\n}\n\n</style>\n","<!--\n  - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n  - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<RowFormWrapper :title=\"column.title\" :mandatory=\"isMandatory(column)\" :description=\"column.description\">\n\t\t<NcSelect\n\t\t\tv-model=\"localValues\"\n\t\t\t:tag-width=\"80\"\n\t\t\t:options=\"getAllNonDeletedOrSelectedOptions\"\n\t\t\t:disabled=\"column.viewColumnInformation?.readonly\"\n\t\t\t:multiple=\"true\"\n\t\t\t:aria-label-combobox=\"t('tables', 'Options')\" />\n\t</RowFormWrapper>\n</template>\n\n<script>\nimport { NcSelect } from '@nextcloud/vue'\nimport RowFormWrapper from './RowFormWrapper.vue'\nimport rowHelper from '../../../../components/ncTable/mixins/rowHelper.js'\nexport default {\n\tname: 'SelectionMultiForm',\n\tcomponents: {\n\t\tNcSelect,\n\t\tRowFormWrapper,\n\t},\n\tmixins: [rowHelper],\n\tprops: {\n\t\tcolumn: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: Array,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tcomputed: {\n\t\tlocalValues: {\n\t\t\tget() {\n\t\t\t\tif (this.value !== null) {\n\t\t\t\t\treturn this.column.getObjects(this.value)\n\t\t\t\t} else {\n\t\t\t\t\tthis.$emit('update:value', this.column.default())\n\t\t\t\t\treturn this.column.getDefaultObjects()\n\t\t\t\t}\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\tthis.$emit('update:value', this.getIdArrayFromObjects(v))\n\t\t\t},\n\t\t},\n\t\tgetOptions() {\n\t\t\treturn this.column.selectionOptions || null\n\t\t},\n\t\tgetAllNonDeletedOrSelectedOptions() {\n\t\t\tconst options = this.getOptions?.filter(item => {\n\t\t\t\treturn !item.deleted || this.optionIdIsSelected(item.id)\n\t\t\t}) || []\n\n\t\t\toptions.forEach(opt => {\n\t\t\t\tif (opt.deleted) {\n\t\t\t\t\topt.label += ' ⚠️'\n\t\t\t\t}\n\t\t\t})\n\t\t\treturn options\n\t\t},\n\t},\n\tmethods: {\n\t\toptionIdIsSelected(id) {\n\t\t\t// check if the given id is selected (in the value array)\n\t\t\treturn this.values.includes(id)\n\t\t},\n\t\tgetIdArrayFromObjects(objects) {\n\t\t\tconst ids = []\n\t\t\tobjects.forEach(o => {\n\t\t\t\tids.push(o.id)\n\t\t\t})\n\t\t\treturn ids\n\t\t},\n\t},\n}\n</script>\n<style scoped>\n\n.hint-padding-left {\n\tpadding-inline-start: 20px;\n}\n\n@media only screen and (max-width: 641px) {\n\t.hint-padding-left {\n\t\tpadding-inline-start: 0;\n\t}\n}\n\n.multiselect {\n\twidth: 100%;\n}\n\n</style>\n","<!--\n  - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n  - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<RowFormWrapper :title=\"column.title\" :mandatory=\"isMandatoryField\" :description=\"column.description\" :width=\"2\">\n\t\t<NcDateTimePickerNative id=\"datetime-picker\" v-model=\"localValue\" :readonly=\"column.viewColumnInformation?.readonly\"\n\t\t\ttype=\"datetime-local\" />\n\t\t<div v-if=\"canBeCleared\" class=\"icon-close make-empty\" @click=\"emptyValue\" />\n\t</RowFormWrapper>\n</template>\n\n<script>\nimport { NcDateTimePickerNative } from '@nextcloud/vue'\nimport Moment from '@nextcloud/moment'\nimport RowFormWrapper from './RowFormWrapper.vue'\nimport rowHelper from '../../mixins/rowHelper'\n\nexport default {\n\tcomponents: {\n\t\tNcDateTimePickerNative,\n\t\tRowFormWrapper,\n\t},\n\tmixins: [rowHelper],\n\tprops: {\n\t\tcolumn: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tcomputed: {\n\t\tisMandatoryField() {\n\t\t\treturn this.isMandatory(this.column)\n\t\t},\n\t\tcanBeCleared() {\n\t\t\treturn !this.column.viewColumnInformation?.readonly && !this.isMandatoryField\n\t\t},\n\t\tlocalValue: {\n\t\t\tget() {\n\t\t\t\tif (this.value !== null && this.value !== 'none') {\n\t\t\t\t\treturn Moment(this.value, 'YYYY-MM-DD HH:mm').toDate()\n\t\t\t\t} else if (this.value === null && this.column.datetimeDefault === 'now') {\n\t\t\t\t\tconst dt = Moment()\n\t\t\t\t\tthis.$emit('update:value', dt.format('YYYY-MM-DD HH:mm'))\n\t\t\t\t\treturn dt.toDate()\n\t\t\t\t} else {\n\t\t\t\t\treturn null\n\t\t\t\t}\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\t// For datetime fields: emit `null` for mandatory fields because they must have a valid value.\n\t\t\t\t// Optional datetime fields can use `\"none\"` to indicate the value has been cleared.\n\t\t\t\tif (v === 'none') {\n\t\t\t\t\tthis.$emit('update:value', this.isMandatoryField ? null : 'none')\n\t\t\t\t} else if (!v) {\n\t\t\t\t\tthis.$emit('update:value', this.isMandatoryField ? null : 'none')\n\t\t\t\t} else {\n\t\t\t\t\tthis.$emit('update:value', Moment(v).format('YYYY-MM-DD HH:mm'))\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\tmethods: {\n\t\temptyValue() {\n\t\t\tthis.localValue = this.isMandatoryField ? null : 'none'\n\t\t},\n\t},\n}\n</script>\n<style scoped>\n\n.mx-datepicker {\n\twidth: 100%;\n}\n\n.make-empty {\n\tpadding-inline-start: 15px;\n}\n\n.make-empty:hover {\n\tcursor: pointer;\n}\n\n.hint-padding-left {\n\tpadding-inline-start: 20px;\n}\n\n@media only screen and (max-width: 641px) {\n\t.hint-padding-left {\n\t\tpadding-inline-start: 0;\n\t}\n}\n\n</style>\n","<!--\n  - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n  - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<RowFormWrapper :title=\"column.title\" :mandatory=\"isMandatoryField\" :description=\"column.description\" :width=\"2\">\n\t\t<NcDateTimePickerNative id=\"datetime-date-picker\" v-model=\"localValue\" :readonly=\"column.viewColumnInformation?.readonly\"\n\t\t\ttype=\"date\" />\n\t\t<div v-if=\"canBeCleared\" class=\"icon-close make-empty\" @click=\"emptyValue\" />\n\t</RowFormWrapper>\n</template>\n\n<script>\nimport { NcDateTimePickerNative } from '@nextcloud/vue'\nimport Moment from '@nextcloud/moment'\nimport RowFormWrapper from './RowFormWrapper.vue'\nimport rowHelper from '../../mixins/rowHelper'\n\nexport default {\n\tcomponents: {\n\t\tNcDateTimePickerNative,\n\t\tRowFormWrapper,\n\t},\n\tmixins: [rowHelper],\n\tprops: {\n\t\tcolumn: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t}\n\t},\n\tcomputed: {\n\t\tisMandatoryField() {\n\t\t\treturn this.isMandatory(this.column)\n\t\t},\n\t\tcanBeCleared() {\n\t\t\treturn !this.column.viewColumnInformation?.readonly && !this.isMandatoryField\n\t\t},\n\t\tlocalValue: {\n\t\t\tget() {\n\t\t\t\tif (this.value !== null && this.value !== 'none') {\n\t\t\t\t\treturn Moment(this.value, 'YYYY-MM-DD').toDate()\n\t\t\t\t} else if (this.value === null && this.column.datetimeDefault === 'today') {\n\t\t\t\t\tconst dt = Moment()\n\t\t\t\t\tthis.$emit('update:value', dt.format('YYYY-MM-DD'))\n\t\t\t\t\treturn dt.toDate()\n\t\t\t\t} else {\n\t\t\t\t\treturn null\n\t\t\t\t}\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\t// For datetime fields: emit `null` for mandatory fields because they must have a valid value.\n\t\t\t\t// Optional datetime fields can use `\"none\"` to indicate the value has been cleared.\n\t\t\t\tif (v === 'none') {\n\t\t\t\t\tthis.$emit('update:value', this.isMandatoryField ? null : 'none')\n\t\t\t\t} else if (!v) {\n\t\t\t\t\tthis.$emit('update:value', this.isMandatoryField ? null : 'none')\n\t\t\t\t} else {\n\t\t\t\t\tthis.$emit('update:value', Moment(v).format('YYYY-MM-DD'))\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\tmethods: {\n\t\temptyValue() {\n\t\t\tthis.localValue = this.isMandatoryField ? null : 'none'\n\t\t},\n\t},\n}\n</script>\n<style scoped>\n\n.mx-datepicker {\n\twidth: 100%;\n}\n\n.make-empty {\n\tpadding-inline-start: 15px;\n}\n\n.make-empty:hover {\n\tcursor: pointer;\n}\n\n</style>\n","<!--\n  - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n  - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<RowFormWrapper :title=\"column.title\" :mandatory=\"isMandatoryField\" :description=\"column.description\" :width=\"2\">\n\t\t<NcDateTimePickerNative\n\t\t\tid=\"datetime-time-picker\"\n\t\t\tv-model=\"localValue\"\n\t\t\t:label=\"t('tables', 'Please select a new time')\"\n\t\t\t:readonly=\"column.viewColumnInformation?.readonly\"\n\t\t\ttype=\"time\" />\n\t\t<div v-if=\"canBeCleared\" class=\"icon-close make-empty\" @click=\"emptyValue\" />\n\t</RowFormWrapper>\n</template>\n\n<script>\nimport { NcDateTimePickerNative } from '@nextcloud/vue'\nimport Moment from '@nextcloud/moment'\nimport RowFormWrapper from './RowFormWrapper.vue'\nimport rowHelper from '../../mixins/rowHelper'\n\nexport default {\n\tcomponents: {\n\t\tNcDateTimePickerNative,\n\t\tRowFormWrapper,\n\t},\n\tmixins: [rowHelper],\n\tprops: {\n\t\tcolumn: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t}\n\t},\n\tcomputed: {\n\t\tisMandatoryField() {\n\t\t\treturn this.isMandatory(this.column)\n\t\t},\n\t\tcanBeCleared() {\n\t\t\treturn !this.column.viewColumnInformation?.readonly && !this.isMandatoryField\n\t\t},\n\t\tlocalValue: {\n\t\t\tget() {\n\t\t\t\tif (this.value !== null && this.value !== 'none') {\n\t\t\t\t\treturn Moment(this.value, 'HH:mm').toDate()\n\t\t\t\t} else if (this.value === null && this.column.datetimeDefault === 'now') {\n\t\t\t\t\tconst dt = Moment()\n\t\t\t\t\tthis.$emit('update:value', dt.format('HH:mm'))\n\t\t\t\t\treturn dt.toDate()\n\t\t\t\t} else {\n\t\t\t\t\treturn new Date()\n\t\t\t\t}\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\tif (v === 'none') {\n\t\t\t\t\tthis.$emit('update:value', v)\n\t\t\t\t} else if (v) {\n\t\t\t\t\tthis.$emit('update:value', Moment(v).format('HH:mm'))\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\tmethods: {\n\t\temptyValue() {\n\t\t\tthis.localValue = 'none'\n\t\t},\n\t},\n}\n</script>\n<style scoped>\n\n.mx-datepicker {\n\twidth: 100%;\n}\n\n.make-empty {\n\tpadding-inline-start: 15px;\n}\n\n.make-empty:hover {\n\tcursor: pointer;\n}\n\n.hint-padding-left {\n\tpadding-inline-start: 20px;\n}\n\n@media only screen and (max-width: 641px) {\n\t.hint-padding-left {\n\t\tpadding-inline-start: 0;\n\t}\n}\n\n</style>\n","<!--\n  - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n  - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<RowFormWrapper :title=\"column.title\" :mandatory=\"isMandatory(column)\" :description=\"column.description\">\n\t\t<div class=\"row\">\n\t\t\t<div class=\"fix-col-4\">\n\t\t\t\t<NcEditor v-if=\"!showBigEditorModal\" :can-edit=\"!column.viewColumnInformation?.readonly\" :text.sync=\"localValue\" height=\"small\" />\n\t\t\t</div>\n\t\t</div>\n\t\t<template #head>\n\t\t\t<NcButton :aria-label=\"t('tables', 'Show fullscreen')\" type=\"tertiary\" @click=\"showBigEditorModal = true\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Fullscreen :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t\t<NcModal v-if=\"showBigEditorModal\" :close-button-contained=\"false\" size=\"full\" :title=\"column.title\" @close=\"showBigEditorModal = false\">\n\t\t\t\t<div class=\"row\">\n\t\t\t\t\t<div class=\"fix-col-4\">\n\t\t\t\t\t\t<NcEditor :text.sync=\"localValue\" :can-edit=\"!column.viewColumnInformation?.readonly\" :show-border=\"false\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"closeModalButton\">\n\t\t\t\t\t<NcButton :aria-label=\"t('tables', 'Close editor')\" @click=\"showBigEditorModal = false\">\n\t\t\t\t\t\t{{ t('tables', 'Close editor') }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t</div>\n\t\t\t</NcModal>\n\t\t</template>\n\t</RowFormWrapper>\n</template>\n\n<script>\nimport RowFormWrapper from './RowFormWrapper.vue'\nimport NcEditor from '../../../ncEditor/NcEditor.vue'\nimport { NcButton, NcModal } from '@nextcloud/vue'\nimport Fullscreen from 'vue-material-design-icons/Fullscreen.vue'\nimport { translate as t } from '@nextcloud/l10n'\nimport rowHelper from '../../../../components/ncTable/mixins/rowHelper.js'\n\nexport default {\n\tcomponents: {\n\t\tFullscreen,\n\t\tRowFormWrapper,\n\t\tNcEditor,\n\t\tNcButton,\n\t\tNcModal,\n\t},\n\n\tmixins: [rowHelper],\n\n\tprops: {\n\t\tcolumn: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tshowBigEditorModal: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tlocalValue: {\n\t\t\tget() {\n\t\t\t\tif (this.value !== null) return this.value\n\t\t\t\tconst newValue = this.column?.textDefault ? this.column.textDefault : ''\n\t\t\t\tthis.$emit('update:value', newValue)\n\t\t\t\treturn newValue\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\tthis.$emit('update:value', v)\n\t\t\t},\n\t\t},\n\t},\n\tmethods: {\n\t\tt,\n\t},\n\n}\n</script>\n<style lang=\"scss\" scoped>\n\n\t.closeModalButton {\n\t\tposition: fixed;\n\t\tbottom: calc(var(--default-grid-baseline) * 2);\n\t\tinset-inline-end: calc(var(--default-grid-baseline) * 2);\n\t}\n\n</style>\n","<!--\n  - SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n  - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<RowFormWrapper :title=\"column.title\" :mandatory=\"isMandatory(column)\" :description=\"column.description\" :width=\"2\">\n\t\t<NcSelect v-model=\"localValue\" style=\"width: 100%;\" :loading=\"loading\" :options=\"options\"\n\t\t\t:placeholder=\"getPlaceholder()\" :searchable=\"true\" :get-option-key=\"(option) => option.key\"\n\t\t\tlabel=\"displayName\" :aria-label-combobox=\"getPlaceholder()\"\n\t\t\t:user-select=\"true\"\n\t\t\t:disabled=\"column.viewColumnInformation?.readonly\"\n\t\t\t:close-on-select=\"false\" :multiple=\"column.usergroupMultipleItems\" data-cy=\"usergroupRowSelect\"\n\t\t\t@search=\"asyncFind\" @input=\"addItem\">\n\t\t\t<template #noResult>\n\t\t\t\t{{ noResultText }}\n\t\t\t</template>\n\t\t</NcSelect>\n\t</RowFormWrapper>\n</template>\n\n<script>\nimport { NcSelect } from '@nextcloud/vue'\nimport RowFormWrapper from './RowFormWrapper.vue'\nimport searchUserGroup from '../../../../mixins/searchUserGroup.js'\nimport ShareTypes from '../../../../mixins/shareTypesMixin.js'\nimport rowHelper from '../../../../components/ncTable/mixins/rowHelper.js'\nexport default {\n\tcomponents: {\n\t\tRowFormWrapper,\n\t\tNcSelect,\n\t},\n\tmixins: [ShareTypes, searchUserGroup, rowHelper],\n\tprops: {\n\t\tcolumn: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => ([]),\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tselectUsers: this.column.usergroupSelectUsers,\n\t\t\tselectGroups: this.column.usergroupSelectGroups,\n\t\t\tinternalLocalValue: [],\n\t\t}\n\t},\n\tcomputed: {\n\t\tlocalValue: {\n\t\t\tget() {\n\t\t\t\treturn this.internalLocalValue\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\tlet formattedValue = null\n\t\t\t\tif (Array.isArray(v)) {\n\t\t\t\t\tformattedValue = v\n\t\t\t\t} else {\n\t\t\t\t\tformattedValue = [v]\n\t\t\t\t}\n\t\t\t\tthis.internalLocalValue = formattedValue\n\t\t\t\tthis.$emit('update:value', formattedValue)\n\t\t\t},\n\t\t},\n\t},\n\tcreated() {\n\t\t// Update the circles-related data once the component is created\n\t\t// Doing this in data() doesn't work due to timing issues,\n\t\t// since the data() function runs before the capabilities are fully initialized\n\t\tthis.selectCircles = this.isCirclesEnabled ? this.column.usergroupSelectTeams : false\n\n\t\tlet initialValue = this.value\n\t\tif (!initialValue || (Array.isArray(initialValue) && initialValue.length === 0)) {\n\t\t\tinitialValue = this.column.usergroupDefault || []\n\t\t}\n\n\t\tconst formatted = (Array.isArray(initialValue) ? initialValue : []).map(item => ({\n\t\t\t...(item ?? {}),\n\t\t\t// Adding a unique key such that removing items works correctly\n\t\t\tkey: this.getKeyPrefix(item?.type) + (item?.id ?? ''),\n\t\t}))\n\t\tthis.internalLocalValue = formatted\n\n\t\tif (formatted.length > 0) {\n\t\t\tthis.$emit('update:value', formatted)\n\t\t}\n\t},\n\tmethods: {\n\t\taddItem(selectedItem) {\n\t\t\tif (selectedItem) {\n\t\t\t\tthis.localValue = selectedItem\n\t\t\t} else {\n\t\t\t\tthis.localValue = []\n\t\t\t}\n\t\t},\n\n\t\tgetKeyPrefix(type) {\n\t\t\tswitch (type) {\n\t\t\tcase 0: return 'users-'\n\t\t\tcase 1: return 'groups-'\n\t\t\tcase 2: return 'circles-'\n\t\t\tdefault: return 'unknown-'\n\t\t\t}\n\t\t},\n\n\t\tfilterOutUnwantedItems(list) {\n\t\t\treturn list\n\t\t},\n\n\t\tformatResult(autocompleteResult) {\n\t\t\treturn {\n\t\t\t\tid: autocompleteResult.id,\n\t\t\t\ttype: this.getType(autocompleteResult.source),\n\t\t\t\tkey: autocompleteResult.source + '-' + autocompleteResult.id,\n\t\t\t\tdisplayName: autocompleteResult.label,\n\t\t\t}\n\t\t},\n\n\t},\n}\n</script>\n","<!--\n  - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n  - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<component :is=\"getFormComponent\" :column=\"column\"\n\t\t:value.sync=\"value_data\" />\n</template>\n\n<script>\nimport TextLineForm from '../../../shared/components/ncTable/partials/rowTypePartials/TextLineForm.vue'\nimport TextLongForm from '../../../shared/components/ncTable/partials/rowTypePartials/TextLongForm.vue'\nimport TextLinkForm from '../../../shared/components/ncTable/partials/rowTypePartials/TextLinkForm.vue'\nimport NumberForm from '../../../shared/components/ncTable/partials/rowTypePartials/NumberForm.vue'\nimport NumberStarsForm from '../../../shared/components/ncTable/partials/rowTypePartials/NumberStarsForm.vue'\nimport NumberProgressForm from '../../../shared/components/ncTable/partials/rowTypePartials/NumberProgressForm.vue'\nimport SelectionCheckForm from '../../../shared/components/ncTable/partials/rowTypePartials/SelectionCheckForm.vue'\nimport SelectionForm from '../../../shared/components/ncTable/partials/rowTypePartials/SelectionForm.vue'\nimport SelectionMultiForm from '../../../shared/components/ncTable/partials/rowTypePartials/SelectionMultiForm.vue'\nimport DatetimeForm from '../../../shared/components/ncTable/partials/rowTypePartials/DatetimeForm.vue'\nimport DatetimeDateForm from '../../../shared/components/ncTable/partials/rowTypePartials/DatetimeDateForm.vue'\nimport DatetimeTimeForm from '../../../shared/components/ncTable/partials/rowTypePartials/DatetimeTimeForm.vue'\nimport TextRichForm from '../../../shared/components/ncTable/partials/rowTypePartials/TextRichForm.vue'\nimport UsergroupForm from '../../../shared/components/ncTable/partials/rowTypePartials/UsergroupForm.vue'\n\nexport default {\n\tname: 'ColumnFormComponent',\n\tcomponents: {\n\t\tSelectionCheckForm,\n\t\tSelectionForm,\n\t\tSelectionMultiForm,\n\t\tTextLineForm,\n\t\tTextLongForm,\n\t\tTextLinkForm,\n\t\tTextRichForm,\n\t\tNumberForm,\n\t\tNumberStarsForm,\n\t\tNumberProgressForm,\n\t\tDatetimeForm,\n\t\tDatetimeDateForm,\n\t\tDatetimeTimeForm,\n\t\tUsergroupForm,\n\t},\n\tprops: {\n\t\tcolumn: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: undefined,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tvalue_data: this.value,\n\t\t}\n\t},\n\tcomputed: {\n\t\tgetFormComponent() {\n\t\t\tconst columnType = this.column.type\n\t\t\tconst columnSubType = this.column.subtype ?? ''\n\t\t\tconst form = this.snakeToCamel(columnType) + this.snakeToCamel(columnSubType) + 'Form'\n\n\t\t\tif (this.$options.components && this.$options.components[form]) {\n\t\t\t\treturn form\n\t\t\t} else {\n\t\t\t\tthrow Error('Form ' + form + ' does not exist')\n\t\t\t}\n\t\t},\n\t},\n\twatch: {\n\t\tvalue_data() {\n\t\t\tthis.$emit('update:value', this.value_data)\n\t\t},\n\t\tvalue() {\n\t\t\tthis.value_data = this.value\n\t\t},\n\t},\n\tmethods: {\n\t\tsnakeToCamel(str) {\n\t\t\tstr = str.toLowerCase().replace(/([-_][a-z])/g, group =>\n\t\t\t\tgroup\n\t\t\t\t\t.toUpperCase()\n\t\t\t\t\t.replace('_', '')\n\t\t\t\t\t.replace('-', ''),\n\t\t\t)\n\t\t\treturn str.charAt(0).toUpperCase() + str.slice(1)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n:deep(input[readonly]) {\n\topacity: 0.6;\n}\n</style>\n"],"names":["_sfc_main","copyToClipboard","content","silent","showSuccess","e","showError","RowFormWrapper","rowHelper","newValue","v","TiptapMenuBar","text","ContentCopy","ClipboardCheckMultipleOutline","OpenInNew","NcButton","NcNoteCard","NcSelect","NcReferenceList","NcTextField","LinkWidget","generalHelper","t","value","key","debounce","providerId","status","provider","term","res","axios","generateOcsUrl","displayError","item","string","inputValue","parsedValue","roundedValue","Plus","Minus","clampedValue","event","NcCheckboxRadioSwitch","defaultValueBool","id","options","opt","objects","ids","o","NcDateTimePickerNative","Moment","dt","Fullscreen","NcEditor","NcModal","ShareTypes","searchUserGroup","formattedValue","initialValue","formatted","selectedItem","type","list","autocompleteResult","SelectionCheckForm","SelectionForm","SelectionMultiForm","TextLineForm","TextLongForm","TextLinkForm","TextRichForm","NumberForm","NumberStarsForm","NumberProgressForm","DatetimeForm","DatetimeDateForm","DatetimeTimeForm","UsergroupForm","columnType","columnSubType","form","str","group"],"mappings":"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","x_google_ignoreList":[0,2,5,8]}