@demos-europe/demosplan-ui 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/LICENSE +21 -0
  2. package/buildTokens.js +59 -0
  3. package/components/DpButton/DpButton.stories.mdx +136 -0
  4. package/components/DpButton/DpButton.vue +118 -0
  5. package/components/DpDetails/DpDetails.stories.mdx +55 -0
  6. package/components/DpDetails/DpDetails.vue +58 -0
  7. package/components/DpIcon/DpIcon.stories.mdx +396 -0
  8. package/components/DpIcon/DpIcon.vue +51 -0
  9. package/components/DpIcon/util/iconVariables.js +148 -0
  10. package/components/DpInput/DpInput.stories.mdx +127 -0
  11. package/components/DpInput/DpInput.vue +284 -0
  12. package/components/DpLabel/DpLabel.stories.mdx +103 -0
  13. package/components/DpLabel/DpLabel.vue +112 -0
  14. package/components/DpLoading/DpLoading.stories.mdx +63 -0
  15. package/components/DpLoading/DpLoading.vue +63 -0
  16. package/components/core/DpAccordion.vue +108 -0
  17. package/components/core/DpAnonymizeText.vue +136 -0
  18. package/components/core/DpAutocomplete.vue +133 -0
  19. package/components/core/DpBulkEditHeader.vue +53 -0
  20. package/components/core/DpButtonIcon.vue +47 -0
  21. package/components/core/DpButtonRow.vue +155 -0
  22. package/components/core/DpCard.vue +54 -0
  23. package/components/core/DpChangeStateAtDate.vue +223 -0
  24. package/components/core/DpCheckboxGroup.vue +93 -0
  25. package/components/core/DpContextualHelp.vue +54 -0
  26. package/components/core/DpCopyPasteButton.vue +47 -0
  27. package/components/core/DpDashboardTaskCard.vue +123 -0
  28. package/components/core/DpDataTable/DataTableSearch.js +44 -0
  29. package/components/core/DpDataTable/DpColumnSelector.vue +133 -0
  30. package/components/core/DpDataTable/DpDataTable.vue +647 -0
  31. package/components/core/DpDataTable/DpDataTableExtended.vue +377 -0
  32. package/components/core/DpDataTable/DpResizeHandle.vue +37 -0
  33. package/components/core/DpDataTable/DpSelectPageItemCount.vue +70 -0
  34. package/components/core/DpDataTable/DpTableHeader.vue +197 -0
  35. package/components/core/DpDataTable/DpTableRow.vue +355 -0
  36. package/components/core/DpDataTable/DpWrapTrigger.vue +48 -0
  37. package/components/core/DpDataTable/lib/ResizableColumns.js +83 -0
  38. package/components/core/DpEditableList.vue +161 -0
  39. package/components/core/DpEditor/DpBoilerPlate.vue +140 -0
  40. package/components/core/DpEditor/DpBoilerPlateModal.vue +166 -0
  41. package/components/core/DpEditor/DpEditor.vue +1281 -0
  42. package/components/core/DpEditor/DpLinkModal.vue +117 -0
  43. package/components/core/DpEditor/DpRecommendationModal/DpInsertableRecommendation.vue +137 -0
  44. package/components/core/DpEditor/DpRecommendationModal.vue +283 -0
  45. package/components/core/DpEditor/DpResizableImage.vue +121 -0
  46. package/components/core/DpEditor/DpUploadModal.vue +121 -0
  47. package/components/core/DpEditor/libs/Decoration.js +66 -0
  48. package/components/core/DpEditor/libs/SegmentRangeChangePlugin.js +35 -0
  49. package/components/core/DpEditor/libs/editorAnonymize.js +66 -0
  50. package/components/core/DpEditor/libs/editorBuildSuggestion.js +269 -0
  51. package/components/core/DpEditor/libs/editorCustomDelete.js +32 -0
  52. package/components/core/DpEditor/libs/editorCustomImage.js +100 -0
  53. package/components/core/DpEditor/libs/editorCustomInsert.js +32 -0
  54. package/components/core/DpEditor/libs/editorCustomLink.js +46 -0
  55. package/components/core/DpEditor/libs/editorCustomMark.js +32 -0
  56. package/components/core/DpEditor/libs/editorInsertAtCursorPos.js +41 -0
  57. package/components/core/DpEditor/libs/editorObscure.js +60 -0
  58. package/components/core/DpEditor/libs/editorUnAnonymize.js +56 -0
  59. package/components/core/DpEditor/libs/handleWordPaste.js +360 -0
  60. package/components/core/DpEditor/libs/preventDrop.js +31 -0
  61. package/components/core/DpEditor/libs/preventKeyboardInput.js +27 -0
  62. package/components/core/DpEditor/libs/preventPaste.js +28 -0
  63. package/components/core/DpFlyout.vue +119 -0
  64. package/components/core/DpInlineNotification.vue +116 -0
  65. package/components/core/DpModal.vue +208 -0
  66. package/components/core/DpObscure.vue +29 -0
  67. package/components/core/DpPager.vue +139 -0
  68. package/components/core/DpProgressBar.vue +67 -0
  69. package/components/core/DpRegisterFlyout.vue +58 -0
  70. package/components/core/DpResettableInput.vue +140 -0
  71. package/components/core/DpSkeletonBox.vue +32 -0
  72. package/components/core/DpSlidebar.vue +86 -0
  73. package/components/core/DpSlidingPagination.vue +45 -0
  74. package/components/core/DpSplitButton.vue +77 -0
  75. package/components/core/DpSwitcher.vue +62 -0
  76. package/components/core/DpTableCardList/DpTableCard.vue +61 -0
  77. package/components/core/DpTableCardList/DpTableCardListHeader.vue +83 -0
  78. package/components/core/DpTabs/DpTab.vue +52 -0
  79. package/components/core/DpTabs/DpTabs.vue +165 -0
  80. package/components/core/DpTextWrapper.vue +65 -0
  81. package/components/core/DpToggleForm.vue +72 -0
  82. package/components/core/DpTooltipIcon.vue +52 -0
  83. package/components/core/DpTransitionExpand.vue +87 -0
  84. package/components/core/DpTreeList/DpTreeList.vue +334 -0
  85. package/components/core/DpTreeList/DpTreeListCheckbox.vue +79 -0
  86. package/components/core/DpTreeList/DpTreeListNode.vue +348 -0
  87. package/components/core/DpTreeList/DpTreeListToggle.vue +71 -0
  88. package/components/core/DpTreeList/utils/constants.js +14 -0
  89. package/components/core/DpUpload/DpUpload.vue +223 -0
  90. package/components/core/DpUpload/DpUploadFiles.vue +269 -0
  91. package/components/core/DpUpload/DpUploadedFile.vue +80 -0
  92. package/components/core/DpUpload/DpUploadedFileList.vue +56 -0
  93. package/components/core/DpUpload/utils/GetFileIdsByHash.js +42 -0
  94. package/components/core/DpUpload/utils/UppyTranslations.js +31 -0
  95. package/components/core/DpVideoPlayer.vue +115 -0
  96. package/components/core/HeightLimit.vue +121 -0
  97. package/components/core/MultistepNav.vue +89 -0
  98. package/components/core/form/DpCheckbox.vue +108 -0
  99. package/components/core/form/DpDateRangePicker.vue +186 -0
  100. package/components/core/form/DpDatepicker.vue +160 -0
  101. package/components/core/form/DpDatetimePicker.vue +194 -0
  102. package/components/core/form/DpFormRow.vue +79 -0
  103. package/components/core/form/DpMultiselect.vue +164 -0
  104. package/components/core/form/DpRadio.vue +128 -0
  105. package/components/core/form/DpSearchField.vue +110 -0
  106. package/components/core/form/DpSelect.vue +149 -0
  107. package/components/core/form/DpTextArea.vue +152 -0
  108. package/components/core/form/DpTimePicker.vue +374 -0
  109. package/components/core/form/DpToggle.vue +78 -0
  110. package/components/core/index.js +132 -0
  111. package/components/core/notify/DpNotifyContainer.vue +122 -0
  112. package/components/core/notify/DpNotifyMessage.vue +95 -0
  113. package/components/core/shared/DpStickyElement.vue +95 -0
  114. package/components/index.js +24 -0
  115. package/components/shared/translations.js +15 -0
  116. package/directives/CleanHtml/CleanHtml.js +50 -0
  117. package/directives/CleanHtml/CleanHtml.stories.mdx +64 -0
  118. package/directives/Tooltip/Tooltip.js +40 -0
  119. package/directives/Tooltip/Tooltip.stories.mdx +42 -0
  120. package/directives/index.js +17 -0
  121. package/lib/index.js +14 -0
  122. package/lib/prefixClass.js +47 -0
  123. package/mixins/index.js +14 -0
  124. package/mixins/prefixClassMixin.js +22 -0
  125. package/package.json +52 -0
  126. package/shared/props.js +86 -0
  127. package/style/index.css +7 -0
  128. package/tailwind.config.js +24 -0
  129. package/tokens/color.json +358 -0
  130. package/tokens/color.stories.mdx +45 -0
  131. package/tokens/fontSize.json +100 -0
  132. package/tokens/space.json +33 -0
  133. package/utils/lengthHint.js +69 -0
@@ -0,0 +1,140 @@
1
+ <license>
2
+ (c) 2010-present DEMOS E-Partizipation GmbH.
3
+
4
+ This file is part of the package @demos-europe/demosplan-ui,
5
+ for more information see the license file.
6
+
7
+ All rights reserved
8
+ </license>
9
+
10
+ <documentation>
11
+ <!--This component contains a multiselect to insert a boilerplate into a textarea
12
+ It receives the boilerplates as a prop.
13
+ -->
14
+ </documentation>
15
+
16
+ <template>
17
+ <div>
18
+ <!-- Select boilerplate -->
19
+ <div class="u-pb-0_25">
20
+ <label class="u-mb-0_5">
21
+ <i
22
+ class="fa fa-question-circle float--right u-mt-0_125"
23
+ :aria-label="Translator.trans('contextual.help')"
24
+ v-tooltip="tooltipContent" />
25
+ {{ title }}
26
+ </label>
27
+ <dp-multiselect
28
+ class="display--inline-block"
29
+ :options="boilerPlates"
30
+ @input="addToTextArea"
31
+ v-model="selectedBoilerPlate"
32
+ label="title"
33
+ track-by="id"
34
+ :group-values="groupValues"
35
+ :group-label="groupLabel"
36
+ :group-select="groupSelect">
37
+ <template v-slot:option="{ option }">
38
+ {{ option.title }}
39
+ <span v-if="option.$isLabel">
40
+ {{ option.$groupLabel }}
41
+ </span>
42
+ </template>
43
+ </dp-multiselect>
44
+ </div>
45
+ <!-- Preview of boilerplate text -->
46
+ <div>
47
+ <label
48
+ for="previewField"
49
+ class="u-mb-0_25 u-mt-0_5">
50
+ Vorschau:
51
+ </label>
52
+ <div
53
+ class="u-p-0_5 border border-radius-large min-height-250"
54
+ id="previewField"
55
+ v-cleanhtml="previewValue" />
56
+ </div>
57
+ </div>
58
+ </template>
59
+
60
+ <script>
61
+ import { CleanHtml } from 'demosplan-ui/directives'
62
+ import DpMultiselect from '../form/DpMultiselect'
63
+
64
+ export default {
65
+ name: 'DpBoilerPlate',
66
+ components: {
67
+ DpMultiselect
68
+ },
69
+
70
+ directives: {
71
+ cleanhtml: CleanHtml
72
+ },
73
+
74
+ props: {
75
+ boilerPlates: {
76
+ required: false,
77
+ type: Array,
78
+ default: () => []
79
+ },
80
+
81
+ groupValues: {
82
+ required: false,
83
+ type: String,
84
+ default: ''
85
+ },
86
+
87
+ groupLabel: {
88
+ required: false,
89
+ type: String,
90
+ default: ''
91
+ },
92
+
93
+ groupSelect: {
94
+ required: false,
95
+ type: Boolean,
96
+ default: false
97
+ },
98
+
99
+ isGroupSelect: {
100
+ required: false,
101
+ type: Boolean,
102
+ default: false
103
+ },
104
+
105
+ title: {
106
+ required: false,
107
+ type: String,
108
+ default: Translator.trans('boilerplate')
109
+ }
110
+ },
111
+
112
+ data () {
113
+ return {
114
+ selectedBoilerPlate: '',
115
+ previewValue: ''
116
+ }
117
+ },
118
+
119
+ computed: {
120
+ tooltipContent () {
121
+ return {
122
+ content: Translator.trans('boilerplates.categories.explanation'),
123
+ classes: 'u-z-modal-window'
124
+ }
125
+ }
126
+ },
127
+
128
+ methods: {
129
+ addToTextArea (data) {
130
+ this.previewValue = data.text
131
+ this.$emit('boilerplate-text-added', this.previewValue)
132
+ },
133
+
134
+ resetBoilerPlateMultiSelect () {
135
+ this.selectedBoilerPlate = ''
136
+ this.previewValue = ''
137
+ }
138
+ }
139
+ }
140
+ </script>
@@ -0,0 +1,166 @@
1
+ <license>
2
+ (c) 2010-present DEMOS E-Partizipation GmbH.
3
+
4
+ This file is part of the package @demos-europe/demosplan-ui,
5
+ for more information see the license file.
6
+
7
+ All rights reserved
8
+ </license>
9
+
10
+ <documentation>
11
+ <!-- This component contains the UI for inserting boilerplates into a textarea
12
+
13
+ If used in combination with DpEditor.vue and its wrapper TipTapEditText.vue (as is currently the case), the
14
+ button to open the modal is located in TipTapEditText.vue; otherwise, you need to define it.
15
+
16
+ -->
17
+ </documentation>
18
+
19
+ <template>
20
+ <dp-modal
21
+ ref="boilerPlateModal"
22
+ content-classes="u-1-of-2">
23
+ <template>
24
+ <h3>{{ Translator.trans('boilerplate.insert') }}</h3>
25
+ <dp-boiler-plate
26
+ :title="Translator.trans('boilerplates.category', { category: Translator.trans(boilerPlateType) })"
27
+ :boiler-plates="displayedBoilerplates"
28
+ ref="boilerplateDropdown"
29
+ group-values="boilerplates"
30
+ group-label="groupName"
31
+ :group-select="false"
32
+ @boilerplate-text-added="addBoilerplateText" />
33
+ <div class="flex flex-items-center u-mt">
34
+ <a
35
+ class="weight--bold font-size-small"
36
+ :href="Routing.generate('DemosPlan_procedure_boilerplate_list', { procedure: procedureId })">
37
+ {{ Translator.trans('boilerplates.edit') }} ({{ Translator.trans('view.leave.hint') }})
38
+ </a>
39
+ <dp-button-row
40
+ class="flex-item-end"
41
+ primary
42
+ :primary-text="Translator.trans('insert')"
43
+ secondary
44
+ @primary-action="insertBoilerPlate"
45
+ @secondary-action="resetAndClose" />
46
+ </div>
47
+ </template>
48
+ </dp-modal>
49
+ </template>
50
+
51
+ <script>
52
+ import { mapActions, mapGetters, mapState } from 'vuex'
53
+ import BoilerplatesStore from '@DpJs/store/procedure/Boilerplates'
54
+ import DpBoilerPlate from './DpBoilerPlate'
55
+ import DpButtonRow from '../DpButtonRow'
56
+ import DpModal from '../DpModal'
57
+ import { hasOwnProp } from 'demosplan-utils'
58
+
59
+ export default {
60
+ name: 'DpBoilerPlateModal',
61
+
62
+ components: {
63
+ DpBoilerPlate,
64
+ DpButtonRow,
65
+ DpModal
66
+ },
67
+
68
+ props: {
69
+ // Needed to get boilerplates from BE via store
70
+ procedureId: {
71
+ required: true,
72
+ type: String
73
+ },
74
+
75
+ boilerPlateType: {
76
+ required: false,
77
+ type: String,
78
+ default: ''
79
+ },
80
+
81
+ editorId: {
82
+ required: false,
83
+ type: String,
84
+ default: ''
85
+ }
86
+ },
87
+
88
+ data () {
89
+ return {
90
+ // Needed to make sure boilerplates are loaded from the BE before <dp-boiler-plate> component is mounted
91
+ boilerPlatesLoaded: false,
92
+ // The boilerplate text emitted from dp-boiler-plate, then emitted to TipTapTextEditor.vue on click of 'insert' button
93
+ textToBeAdded: ''
94
+ }
95
+ },
96
+
97
+ computed: {
98
+ ...mapState('boilerplates', ['getBoilerplatesRequestFired', 'moduleRegistered']),
99
+ ...mapGetters('boilerplates', ['getGroupedBoilerplates']),
100
+
101
+ displayedBoilerplates () {
102
+ const displayed = JSON.parse(JSON.stringify(this.getGroupedBoilerplates))
103
+ displayed.forEach(group => {
104
+ if (this.boilerPlateType !== '') {
105
+ if (typeof this.boilerPlateType === 'string') {
106
+ group.boilerplates = group.boilerplates.filter(bp => bp.category.includes(this.boilerPlateType))
107
+ } else if (Array.isArray(this.boilerPlateType)) {
108
+ group.boilerplates = group.boilerplates.filter(bp => this.boilerPlateType.some(el => bp.category.includes(el)))
109
+ }
110
+ }
111
+ })
112
+
113
+ return displayed
114
+ },
115
+
116
+ displayedBoilerplateType () {
117
+ let boilerplateString = ''
118
+ if (typeof this.boilerPlateType === 'string') {
119
+ boilerplateString = Translator.trans(this.boilerPlateType)
120
+ } else if (Array.isArray(this.boilerPlateType)) {
121
+ boilerplateString = this.boilerPlateType.map(bp => Translator.trans(bp)).join(', ')
122
+ }
123
+ return boilerplateString
124
+ }
125
+ },
126
+
127
+ methods: {
128
+ ...mapActions('boilerplates', ['getBoilerPlates']),
129
+
130
+ addBoilerplateText (textFromTextArea) {
131
+ this.textToBeAdded = textFromTextArea
132
+ },
133
+
134
+ insertBoilerPlate () {
135
+ this.$emit('insertBoilerPlate', this.textToBeAdded)
136
+ this.resetAndClose()
137
+ },
138
+
139
+ resetAndClose () {
140
+ this.$refs.boilerplateDropdown.resetBoilerPlateMultiSelect()
141
+ this.toggleModal()
142
+ },
143
+
144
+ toggleModal () {
145
+ this.$refs.boilerPlateModal.toggle()
146
+ }
147
+ },
148
+
149
+ created () {
150
+ const isRegistered = this.$store && hasOwnProp(this.$store.state, 'boilerplates')
151
+
152
+ if (isRegistered === false) {
153
+ this.$store.registerModule('boilerplates', BoilerplatesStore)
154
+ }
155
+
156
+ if (this.getBoilerplatesRequestFired === false) {
157
+ this.getBoilerPlates(this.procedureId)
158
+ }
159
+ },
160
+
161
+ beforeDestroy () {
162
+ this.$store.unregisterModule('boilerplates')
163
+ }
164
+
165
+ }
166
+ </script>