@demos-europe/demosplan-ui 0.4.2 → 0.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.idea/php.xml +1 -0
- package/.idea/shelf/Uncommitted_changes_before_Checkout_at_10_12_2024_13_09_[Changes]/shelved.patch +165 -0
- package/.idea/shelf/Uncommitted_changes_before_Checkout_at_10_12_2024_13_09__Changes_.xml +4 -0
- package/.idea/shelf/Uncommitted_changes_before_Checkout_at_12_11_2024_09_34_[Changes]/shelved.patch +19 -0
- package/.idea/shelf/Uncommitted_changes_before_Checkout_at_12_11_2024_09_34_[Changes]1/shelved.patch +0 -0
- package/.idea/shelf/Uncommitted_changes_before_Checkout_at_12_11_2024_09_34__Changes_.xml +4 -0
- package/.idea/shelf/Uncommitted_changes_before_Checkout_at_21_02_2025_09_50_[Changes]/shelved.patch +35 -0
- package/.idea/shelf/Uncommitted_changes_before_Update_at_04_12_2024_08_13_[Changes]/shelved.patch +41 -0
- package/.idea/shelf/Uncommitted_changes_before_Update_at_04_12_2024_08_13__Changes_.xml +4 -0
- package/.idea/workspace.xml +367 -284
- package/.yarn/install-state.gz +0 -0
- package/CHANGELOG.md +118 -0
- package/dist/demosplan-ui.umd.js +1 -1
- package/docker-compose.local.yml +1 -1
- package/package.json +8 -7
- package/src/components/DpButton/DpButton.vue +9 -7
- package/src/components/DpButtonRow/DpButtonRow.vue +17 -3
- package/src/components/DpContextualHelp/DpContextualHelp.vue +30 -3
- package/src/components/DpDataTable/DpDataTable.vue +1 -1
- package/src/components/DpDataTable/DpResizableColumn.vue +1 -1
- package/src/components/DpDataTable/DpTableHeader.vue +3 -1
- package/src/components/DpDataTable/DpTableRow.vue +4 -6
- package/src/components/DpEditableList/DpEditableList.vue +37 -36
- package/src/components/DpEditor/DpEditor.vue +22 -9
- package/src/components/DpEditor/DpUploadModal.vue +5 -3
- package/src/components/DpEditor/MentionList.vue +3 -0
- package/src/components/DpEditor/libs/customExtensions.js +0 -2
- package/src/components/DpEditor/libs/editorBuildSuggestion.js +1 -5
- package/src/components/DpEditor/libs/editorMention.js +0 -15
- package/src/components/DpEditor/libs/tiptapExtensions.js +4 -0
- package/src/components/DpFlyout/DpFlyout.vue +19 -4
- package/src/components/DpIcon/DpIcon.stories.mdx +12 -0
- package/src/components/DpIcon/util/iconConfig.ts +6 -0
- package/src/components/DpInput/DpInput.vue +40 -39
- package/src/components/DpLabel/DpLabel.vue +20 -20
- package/src/components/DpResettableInput/DpResettableInput.vue +12 -7
- package/src/components/DpSearchField/DpSearchField.vue +19 -14
- package/src/components/DpSelect/DpSelect.vue +2 -1
- package/src/components/DpTextArea/DpTextArea.vue +6 -3
- package/src/components/DpTreeList/DpTreeListToggle.vue +1 -0
- package/src/components/DpUploadFiles/DpUploadFiles.stories.mdx +1 -1
- package/src/components/DpUploadFiles/DpUploadFiles.stories.tsx +1 -1
- package/src/components/DpUploadFiles/index.ts +2 -2
- package/src/components/index.js +5 -1
- package/storybook-static/favicon.svg +7 -0
- package/storybook-static/index.html +123 -0
- package/storybook-static/index.json +1 -0
- package/storybook-static/project.json +1 -0
- package/storybook-static/sb-addons/essentials-actions-2/manager-bundle.js +3 -0
- package/storybook-static/sb-addons/essentials-actions-2/manager-bundle.js.LEGAL.txt +0 -0
- package/storybook-static/sb-addons/essentials-backgrounds-3/manager-bundle.js +12 -0
- package/storybook-static/sb-addons/essentials-backgrounds-3/manager-bundle.js.LEGAL.txt +0 -0
- package/storybook-static/sb-addons/essentials-controls-1/manager-bundle.js +76 -0
- package/storybook-static/sb-addons/essentials-controls-1/manager-bundle.js.LEGAL.txt +18 -0
- package/storybook-static/sb-addons/essentials-measure-6/manager-bundle.js +3 -0
- package/storybook-static/sb-addons/essentials-measure-6/manager-bundle.js.LEGAL.txt +0 -0
- package/storybook-static/sb-addons/essentials-outline-7/manager-bundle.js +3 -0
- package/storybook-static/sb-addons/essentials-outline-7/manager-bundle.js.LEGAL.txt +0 -0
- package/storybook-static/sb-addons/essentials-toolbars-5/manager-bundle.js +3 -0
- package/storybook-static/sb-addons/essentials-toolbars-5/manager-bundle.js.LEGAL.txt +0 -0
- package/storybook-static/sb-addons/essentials-viewport-4/manager-bundle.js +3 -0
- package/storybook-static/sb-addons/essentials-viewport-4/manager-bundle.js.LEGAL.txt +0 -0
- package/storybook-static/sb-addons/links-0/manager-bundle.js +3 -0
- package/storybook-static/sb-addons/links-0/manager-bundle.js.LEGAL.txt +0 -0
- package/storybook-static/sb-common-assets/fonts.css +31 -0
- package/storybook-static/sb-common-assets/nunito-sans-bold-italic.woff2 +0 -0
- package/storybook-static/sb-common-assets/nunito-sans-bold.woff2 +0 -0
- package/storybook-static/sb-common-assets/nunito-sans-italic.woff2 +0 -0
- package/storybook-static/sb-common-assets/nunito-sans-regular.woff2 +0 -0
- package/storybook-static/sb-manager/WithTooltip-V3YHNWJZ-TRLNWEGW.js +1 -0
- package/storybook-static/sb-manager/chunk-4IYAVH3S.js +348 -0
- package/storybook-static/sb-manager/chunk-CXYKRFSY.js +9 -0
- package/storybook-static/sb-manager/chunk-LVLAH4SI.js +7 -0
- package/storybook-static/sb-manager/chunk-VFHDXWEA.js +406 -0
- package/storybook-static/sb-manager/chunk-ZEU7PDD3.js +1 -0
- package/storybook-static/sb-manager/formatter-SWP5E3XI-7BGIK6BL.js +156 -0
- package/storybook-static/sb-manager/globals-module-info.js +1 -0
- package/storybook-static/sb-manager/globals.js +1 -0
- package/storybook-static/sb-manager/index.js +1 -0
- package/storybook-static/sb-manager/runtime.js +1 -0
- package/storybook-static/sb-manager/syntaxhighlighter-B5GMVT5T-EA5ASEYD.js +1 -0
- package/storybook-static/stories.json +1 -0
- package/tokens/dist/js/boxShadow.js +1 -1
- package/tokens/dist/js/breakpoints.js +1 -1
- package/tokens/dist/js/color.brand.js +1 -1
- package/tokens/dist/js/color.data.js +1 -1
- package/tokens/dist/js/color.palette.js +1 -1
- package/tokens/dist/js/color.ui.js +1 -1
- package/tokens/dist/js/fontSize.js +1 -1
- package/tokens/dist/js/rounded.js +1 -1
- package/tokens/dist/js/space.js +1 -1
- package/tokens/dist/js/zIndex.js +1 -1
- package/tokens/dist/scss/_boxShadow.scss +1 -1
- package/tokens/dist/scss/_breakpoints.scss +1 -1
- package/tokens/dist/scss/_color.brand.scss +1 -1
- package/tokens/dist/scss/_color.data.scss +1 -1
- package/tokens/dist/scss/_color.palette.scss +1 -1
- package/tokens/dist/scss/_color.ui.scss +1 -1
- package/tokens/dist/scss/_fontSize.scss +1 -1
- package/tokens/dist/scss/_rounded.scss +1 -1
- package/tokens/dist/scss/_space.scss +1 -1
- package/tokens/dist/scss/_zIndex.scss +1 -1
- package/tokens/dist/tailwind/color.brand.js +2 -2
- package/types/icons.ts +3 -0
package/.idea/php.xml
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
<option name="highlightLevel" value="WARNING" />
|
|
11
11
|
<option name="transferred" value="true" />
|
|
12
12
|
</component>
|
|
13
|
+
<component name="PhpProjectSharedConfiguration" php_language_level="8.2" />
|
|
13
14
|
<component name="PhpStanOptionsConfiguration">
|
|
14
15
|
<option name="transferred" value="true" />
|
|
15
16
|
</component>
|
package/.idea/shelf/Uncommitted_changes_before_Checkout_at_10_12_2024_13_09_[Changes]/shelved.patch
ADDED
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
Index: src/components/DpContextualHelp/DpContextualHelp.vue
|
|
2
|
+
IDEA additional info:
|
|
3
|
+
Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
|
|
4
|
+
<+><template>\n <dp-icon\n :aria-label=\"ariaLabel\"\n :icon=\"icon\"\n :size=\"size\"\n class=\"inline-block\"\n v-tooltip=\"tooltip\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted, PropType } from 'vue'\nimport { IconName, IconSize } from '../../../types'\nimport { de } from '~/components/shared/translations'\nimport DpIcon from '~/components/DpIcon'\nimport { SIZES as ICON_SIZES } from '~/components/DpIcon/util/iconConfig'\nimport { Tooltip } from '~/directives'\n\nconst vTooltip = Tooltip\n\nconst props = defineProps({\n /**\n * The icon displayed as trigger for the tooltip.\n */\n icon: {\n type: String as PropType<IconName>,\n required: false,\n default: 'question'\n },\n\n /**\n * The icon size. May be small, medium, or large.\n */\n size: {\n type: String as PropType<IconSize>,\n required: false,\n default: 'medium',\n validator: (prop: IconSize) => Object.keys(ICON_SIZES).includes(prop)\n },\n\n /**\n * A string representing the actual tooltip content. May include html.\n * If you want to pass additional options, use the 'tooltipOptions' prop instead\n * ('tooltipOptions.content' for text)\n */\n text: {\n type: String,\n required: false,\n default: ''\n },\n /**\n * For available options check https://floating-vue.starpad.dev/api/#directive-options\n * When using, pass text via the 'content' property instead of using the 'text' prop above\n */\n tooltipOptions: {\n type: Object,\n required: false,\n default: () => ({})\n }\n})\n\nconst ariaLabel = de.contextualHelp\n\n/**\n * @return {string|object} Returns either text only or text and other options\n */\nconst tooltip = computed(() => {\n return Object.keys(props.tooltipOptions).length > 0\n ? props.tooltipOptions\n : props.text\n})\n\nonMounted(() => {\n if (!props.text && !props.tooltipOptions.content) {\n console.error('DpContextualHelp: No tooltip content provided. Add the \"tooltipOptions.content\" prop.')\n }\n})\n</script>\n
|
|
5
|
+
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|
6
|
+
<+>UTF-8
|
|
7
|
+
===================================================================
|
|
8
|
+
diff --git a/src/components/DpContextualHelp/DpContextualHelp.vue b/src/components/DpContextualHelp/DpContextualHelp.vue
|
|
9
|
+
--- a/src/components/DpContextualHelp/DpContextualHelp.vue (revision 7651d4b01fd464128356ac61f061892498940478)
|
|
10
|
+
+++ b/src/components/DpContextualHelp/DpContextualHelp.vue (date 1733828919400)
|
|
11
|
+
@@ -12,7 +12,7 @@
|
|
12
|
+
import { IconName, IconSize } from '../../../types'
|
|
13
|
+
import { de } from '~/components/shared/translations'
|
|
14
|
+
import DpIcon from '~/components/DpIcon'
|
|
15
|
+
-import { SIZES as ICON_SIZES } from '~/components/DpIcon/util/iconConfig'
|
|
16
|
+
+// import { SIZES as ICON_SIZES } from '~/components/DpIcon/util/iconConfig'
|
|
17
|
+
import { Tooltip } from '~/directives'
|
|
18
|
+
|
|
19
|
+
const vTooltip = Tooltip
|
|
20
|
+
@@ -33,8 +33,7 @@
|
|
21
|
+
size: {
|
|
22
|
+
type: String as PropType<IconSize>,
|
|
23
|
+
required: false,
|
|
24
|
+
- default: 'medium',
|
|
25
|
+
- validator: (prop: IconSize) => Object.keys(ICON_SIZES).includes(prop)
|
|
26
|
+
+ default: 'medium'
|
|
27
|
+
},
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
Index: yarn.lock
|
|
31
|
+
IDEA additional info:
|
|
32
|
+
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|
33
|
+
<+>UTF-8
|
|
34
|
+
===================================================================
|
|
35
|
+
diff --git a/yarn.lock b/yarn.lock
|
|
36
|
+
--- a/yarn.lock (revision 7651d4b01fd464128356ac61f061892498940478)
|
|
37
|
+
+++ b/yarn.lock (date 1733829898575)
|
|
38
|
+
@@ -2218,6 +2218,7 @@
|
|
39
|
+
jest: "npm:^29.7.0"
|
|
40
|
+
jest-environment-jsdom: "npm:^29.7.0"
|
|
41
|
+
jest-junit: "npm:^16.0.0"
|
|
42
|
+
+ jest-resolve: "npm:^29.7.0"
|
|
43
|
+
jest-transform-stub: "npm:^2.0.0"
|
|
44
|
+
js-beautify: "npm:^1.14.7"
|
|
45
|
+
lscache: "npm:^1.3.2"
|
|
46
|
+
Index: webpack.config.js
|
|
47
|
+
IDEA additional info:
|
|
48
|
+
Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
|
|
49
|
+
<+>const path = require('path');\nconst MiniCssExtractPlugin = require('mini-css-extract-plugin');\nconst { VueLoaderPlugin } = require('vue-loader');\nconst BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin\n\nconst bundleAnalyzer = new BundleAnalyzerPlugin({\n analyzerMode: 'static',\n reportFilename: resolve(`./bundle_analysis.html`)\n})\n\nconst isProduction = process.env.NODE_ENV === 'production';\n\nconst stylesHandler = MiniCssExtractPlugin.loader;\n\nfunction resolve (dir) {\n return path.join(__dirname, dir)\n}\n\nconst config = {\n entry: resolve('./src/index.js'),\n output: {\n path: resolve('dist'),\n publicPath: '',\n filename: 'demosplan-ui.umd.js',\n library: {\n name: '__demos_europe_demosplan_ui',\n type: 'var'\n },\n libraryExport: 'default',\n libraryTarget: 'umd',\n clean: true\n },\n externalsType: 'commonjs',\n externals: [\n '@braintree/sanitize-url',\n /^@uppy\\/.+$/,\n 'dayjs',\n 'dompurify',\n 'lscache',\n 'plyr',\n 'tippy.js',\n 'uuid',\n 'v-tooltip',\n 'vue',\n 'vue-multiselect',\n 'vuedraggable'\n ],\n resolve: {\n alias: {\n '~': path.resolve(__dirname, 'src')\n },\n extensions: ['.ts', '.js', '.vue'],\n symlinks: false\n },\n plugins: [\n new MiniCssExtractPlugin(),\n new VueLoaderPlugin(),\n ],\n module: {\n rules: [\n {\n test: /\\.(js|jsx)$/i,\n exclude: /node_modules/,\n loader: 'babel-loader'\n },\n {\n test: /\\.ts$/,\n loader: 'ts-loader',\n options: {\n appendTsSuffixTo: [/\\.vue$/]\n }\n },\n {\n test: /\\.css$/i,\n use: [\n stylesHandler,\n 'css-loader',\n 'postcss-loader'\n ],\n },\n {\n test: /\\.(eot|svg|ttf|woff|woff2|png|jpg|gif)$/i,\n type: 'asset',\n },\n {\n test: /\\.vue$/,\n loader: 'vue-loader',\n options: {\n compilerOptions: {\n compatConfig: {\n MODE: 2\n }\n }\n }\n }\n ],\n },\n};\n\nmodule.exports = () => {\n if (isProduction) {\n config.mode = 'production';\n } else {\n config.mode = 'development';\n }\n\n if (process.argv.includes('--analyze')) {\n config.plugins.unshift(bundleAnalyzer)\n }\n\n return config;\n};\n
|
|
50
|
+
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|
51
|
+
<+>UTF-8
|
|
52
|
+
===================================================================
|
|
53
|
+
diff --git a/webpack.config.js b/webpack.config.js
|
|
54
|
+
--- a/webpack.config.js (revision 7651d4b01fd464128356ac61f061892498940478)
|
|
55
|
+
+++ b/webpack.config.js (date 1733751682176)
|
|
56
|
+
@@ -49,7 +49,7 @@
|
|
57
|
+
alias: {
|
|
58
|
+
'~': path.resolve(__dirname, 'src')
|
|
59
|
+
},
|
|
60
|
+
- extensions: ['.ts', '.js', '.vue'],
|
|
61
|
+
+ extensions: ['.ts', '.js', '.mjs', '.vue'],
|
|
62
|
+
symlinks: false
|
|
63
|
+
},
|
|
64
|
+
plugins: [
|
|
65
|
+
@@ -59,7 +59,11 @@
|
|
66
|
+
module: {
|
|
67
|
+
rules: [
|
|
68
|
+
{
|
|
69
|
+
- test: /\.(js|jsx)$/i,
|
|
70
|
+
+ test: /\.(mjs)$/i,
|
|
71
|
+
+ loader: 'babel-loader'
|
|
72
|
+
+ },
|
|
73
|
+
+ {
|
|
74
|
+
+ test: /\.(js|jsx|mjs)$/i,
|
|
75
|
+
exclude: /node_modules/,
|
|
76
|
+
loader: 'babel-loader'
|
|
77
|
+
},
|
|
78
|
+
Index: mjsResolver.js
|
|
79
|
+
===================================================================
|
|
80
|
+
diff --git a/mjsResolver.js b/mjsResolver.js
|
|
81
|
+
new file mode 100644
|
|
82
|
+
--- /dev/null (date 1733830235238)
|
|
83
|
+
+++ b/mjsResolver.js (date 1733830235238)
|
|
84
|
+
@@ -0,0 +1,16 @@
|
|
85
|
+
+const mjsResolver = (path, options) => {
|
|
86
|
+
+ const mjsExtRegex = /\.mjs$/i
|
|
87
|
+
+ const resolver = options.defaultResolver
|
|
88
|
+
+ if (mjsExtRegex.test(path)) {
|
|
89
|
+
+ try {
|
|
90
|
+
+ return resolver(path.replace(mjsExtRegex, '.mts'), options)
|
|
91
|
+
+ } catch {
|
|
92
|
+
+ // use default resolver
|
|
93
|
+
+ }
|
|
94
|
+
+ }
|
|
95
|
+
+
|
|
96
|
+
+ return resolver(path, options)
|
|
97
|
+
+}
|
|
98
|
+
+
|
|
99
|
+
+
|
|
100
|
+
+module.exports = mjsResolver
|
|
101
|
+
Index: src/components/DpIcon/util/iconConfig.ts
|
|
102
|
+
IDEA additional info:
|
|
103
|
+
Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
|
|
104
|
+
<+>import {\n PhArrowDown,\n PhArrowLeft,\n PhArrowRight,\n PhArrowsClockwise,\n PhArrowUp,\n PhCaretDown,\n PhCaretLeft,\n PhCaretRight,\n PhCaretUp,\n PhCaretDoubleDown,\n PhCaretDoubleUp,\n PhCheck,\n PhCheckCircle,\n PhCircleNotch,\n PhClock,\n PhCopy,\n PhCornersIn,\n PhCornersOut,\n PhClockCounterClockwise,\n PhDownloadSimple,\n PhDotsSixVertical,\n PhEnvelopeSimple,\n PhFile,\n PhGearSix,\n PhHighlighter,\n PhHourglass,\n PhInfo,\n PhLockSimple,\n PhLockSimpleOpen,\n PhMagnifyingGlass,\n PhPencilSimple,\n PhPhone,\n PhPlus,\n PhRobot,\n PhQuestion,\n PhSignOut,\n PhTag,\n PhTrash,\n PhUser,\n PhUsersThree,\n PhWarning,\n PhWarningDiamond,\n PhX,\n PhXCircle\n} from '@phosphor-icons/vue'\nimport {\n AliasedPhosphorIconName,\n IconAlias,\n IconName,\n IconProportion,\n IconSize,\n PhosphorIconName} from '../../../../types'\nimport type { Component } from 'vue'\n\n// ICONS\n\n// icon names that are used and already correspond to the phosphor icon name\nconst mappedIcons: Record<PhosphorIconName | AliasedPhosphorIconName, Component> = {\n 'arrow-down': PhArrowDown,\n 'arrow-left': PhArrowLeft,\n 'arrow-right': PhArrowRight,\n 'arrow-up': PhArrowUp,\n 'caret-down': PhCaretDown,\n 'caret-left': PhCaretLeft,\n 'caret-right': PhCaretRight,\n 'caret-up': PhCaretUp,\n 'caret-double-down': PhCaretDoubleDown,\n 'caret-double-up': PhCaretDoubleUp,\n 'check': PhCheck,\n 'check-circle': PhCheckCircle,\n 'clock': PhClock,\n 'copy': PhCopy,\n 'file': PhFile,\n 'highlighter': PhHighlighter,\n 'hourglass': PhHourglass,\n 'info': PhInfo,\n 'plus': PhPlus,\n 'phone': PhPhone,\n 'question': PhQuestion,\n 'sign-out': PhSignOut,\n 'tag': PhTag,\n 'user': PhUser,\n 'users-three': PhUsersThree,\n 'warning': PhWarning,\n 'x': PhX,\n 'x-circle': PhXCircle,\n 'arrows-clockwise': PhArrowsClockwise, // alias: refresh\n 'circle-notch': PhCircleNotch, // alias: spinner\n 'clock-counter-clockwise': PhClockCounterClockwise, // alias: history\n 'corners-in': PhCornersIn, // alias: compress\n 'corners-out': PhCornersOut, // alias: expand\n 'dots-six-vertical': PhDotsSixVertical, // alias: drag-handle\n 'download-simple': PhDownloadSimple, // alias: download\n 'envelope-simple': PhEnvelopeSimple, // alias: mail\n 'gear-six': PhGearSix, // alias: settings\n 'lock-simple': PhLockSimple, // alias: lock\n 'lock-simple-open': PhLockSimpleOpen, // alias: unlock\n 'magnifying-glass': PhMagnifyingGlass, // alias: search\n 'pencil-simple': PhPencilSimple, // alias: edit\n 'robot': PhRobot, // alias: ai\n 'warning-diamond': PhWarningDiamond, // alias: severe\n}\n\n// icon names that are used as aliases - the phosphor icon has a different name\nconst mappedIconAliases: Record<IconAlias, Component> = {\n 'ai': PhRobot,\n 'cancel': PhX,\n 'chevron-down': PhArrowDown,\n 'chevron-left': PhArrowLeft,\n 'chevron-right': PhArrowRight,\n 'chevron-up': PhArrowUp,\n 'close': PhX,\n 'compress': PhCornersIn,\n 'delete': PhTrash,\n 'download': PhDownloadSimple,\n 'drag-handle': PhDotsSixVertical,\n 'edit': PhPencilSimple,\n 'expand': PhCornersOut,\n 'history': PhClockCounterClockwise,\n 'lock': PhLockSimple,\n 'mail': PhEnvelopeSimple,\n 'refresh': PhArrowsClockwise,\n 'remove': PhX,\n 'search': PhMagnifyingGlass,\n 'settings': PhGearSix,\n 'severe': PhWarningDiamond,\n 'spinner': PhCircleNotch,\n 'success': PhCheck,\n 'unlock': PhLockSimpleOpen,\n 'userSolid': PhUser,\n 'xmark': PhX\n}\n\n// ICON PROPORTIONS\n\nconst iconsProportions: Record<string, IconProportion> = {\n 'arrow-down': 'portrait',\n 'arrow-left': 'landscape',\n 'arrow-right': 'landscape',\n 'arrow-up': 'portrait',\n 'caret-down': 'landscape',\n 'caret-left': 'portrait',\n 'caret-right': 'portrait',\n 'caret-up': 'landscape',\n 'caret-double-down': 'portrait',\n 'caret-double-up': 'portrait',\n 'check': 'landscape',\n 'dots-six-vertical': 'portrait',\n 'envelope-simple': 'landscape'\n}\n\nconst aliasedIconsProportions: Record<string, IconProportion> = {\n 'chevron-down': 'landscape', // alias for caret-down\n 'chevron-left': 'portrait', // alias for caret-left\n 'chevron-right': 'portrait', // alias for caret-right\n 'chevron-up': 'landscape', // alias for caret-up\n 'drag-handle': 'portrait', // alias for dots-six-vertical\n 'mail': 'landscape', // alias for envelope-simple\n}\n\n// EXPORTS\n\nexport const iconComponents: Record<IconName, Component> = {\n ...mappedIcons,\n ...mappedIconAliases\n}\n\nexport const proportions: Record<string, IconProportion> = {\n ...iconsProportions,\n ...aliasedIconsProportions\n}\n\nexport const SIZES: Record<IconSize, number> = {\n 'small': 16,\n 'medium': 20,\n 'large': 24,\n 'xlarge': 32,\n}\n
|
|
105
|
+
===================================================================
|
|
106
|
+
diff --git a/src/components/DpIcon/util/iconConfig.ts b/src/components/DpIcon/util/iconConfig.ts
|
|
107
|
+
--- a/src/components/DpIcon/util/iconConfig.ts (revision 7651d4b01fd464128356ac61f061892498940478)
|
|
108
|
+
+++ b/src/components/DpIcon/util/iconConfig.ts (date 1733830263898)
|
|
109
|
+
@@ -56,7 +56,7 @@
|
|
110
|
+
// ICONS
|
|
111
|
+
|
|
112
|
+
// icon names that are used and already correspond to the phosphor icon name
|
|
113
|
+
-const mappedIcons: Record<PhosphorIconName | AliasedPhosphorIconName, Component> = {
|
|
114
|
+
+const mappedIcons = {
|
|
115
|
+
'arrow-down': PhArrowDown,
|
|
116
|
+
'arrow-left': PhArrowLeft,
|
|
117
|
+
'arrow-right': PhArrowRight,
|
|
118
|
+
@@ -103,7 +103,7 @@
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// icon names that are used as aliases - the phosphor icon has a different name
|
|
122
|
+
-const mappedIconAliases: Record<IconAlias, Component> = {
|
|
123
|
+
+const mappedIconAliases = {
|
|
124
|
+
'ai': PhRobot,
|
|
125
|
+
'cancel': PhX,
|
|
126
|
+
'chevron-down': PhArrowDown,
|
|
127
|
+
@@ -134,7 +134,7 @@
|
|
128
|
+
|
|
129
|
+
// ICON PROPORTIONS
|
|
130
|
+
|
|
131
|
+
-const iconsProportions: Record<string, IconProportion> = {
|
|
132
|
+
+const iconsProportions = {
|
|
133
|
+
'arrow-down': 'portrait',
|
|
134
|
+
'arrow-left': 'landscape',
|
|
135
|
+
'arrow-right': 'landscape',
|
|
136
|
+
@@ -150,7 +150,7 @@
|
|
137
|
+
'envelope-simple': 'landscape'
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
-const aliasedIconsProportions: Record<string, IconProportion> = {
|
|
141
|
+
+const aliasedIconsProportions = {
|
|
142
|
+
'chevron-down': 'landscape', // alias for caret-down
|
|
143
|
+
'chevron-left': 'portrait', // alias for caret-left
|
|
144
|
+
'chevron-right': 'portrait', // alias for caret-right
|
|
145
|
+
@@ -161,17 +161,17 @@
|
|
146
|
+
|
|
147
|
+
// EXPORTS
|
|
148
|
+
|
|
149
|
+
-export const iconComponents: Record<IconName, Component> = {
|
|
150
|
+
+export const iconComponents = {
|
|
151
|
+
...mappedIcons,
|
|
152
|
+
...mappedIconAliases
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
-export const proportions: Record<string, IconProportion> = {
|
|
156
|
+
+export const proportions = {
|
|
157
|
+
...iconsProportions,
|
|
158
|
+
...aliasedIconsProportions
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
-export const SIZES: Record<IconSize, number> = {
|
|
162
|
+
+export const SIZES = {
|
|
163
|
+
'small': 16,
|
|
164
|
+
'medium': 20,
|
|
165
|
+
'large': 24,
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<changelist name="Uncommitted_changes_before_Checkout_at_10_12_2024_13_09_[Changes]" date="1733832586761" recycled="false" toDelete="true">
|
|
2
|
+
<option name="PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Checkout_at_10_12_2024_13_09_[Changes]/shelved.patch" />
|
|
3
|
+
<option name="DESCRIPTION" value="Uncommitted changes before Checkout at 10 12 2024 13:09 [Changes]" />
|
|
4
|
+
</changelist>
|
package/.idea/shelf/Uncommitted_changes_before_Checkout_at_12_11_2024_09_34_[Changes]/shelved.patch
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
Index: src/components/DpButton/DpButton.vue
|
|
2
|
+
IDEA additional info:
|
|
3
|
+
Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
|
|
4
|
+
<+><!--suppress GrazieInspection -->\n<template>\n <component\n :is=\"element\"\n :type=\"isButtonElement ? type : null\"\n :href=\"!isButtonElement ? sanitizedHref : null\"\n :class=\"classes\"\n :disabled=\"disabled\"\n :aria-hidden=\"busy\"\n v-tooltip=\"iconOnly ? text : null\"\n @click=\"emit('click', $event)\">\n <dp-icon\n v-if=\"icon\"\n aria-hidden=\"true\"\n :icon=\"icon\"\n :size=\"iconSize\" />\n <span\n :class=\"{'sr-only': hideText}\"\n v-text=\"text\" />\n <dp-icon\n v-if=\"iconAfter\"\n aria-hidden=\"true\"\n :icon=\"iconAfter\"\n :size=\"iconSize\" />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted, PropType } from 'vue'\nimport { IconName, IconSize } from '../../../types'\nimport DpIcon from '~/components/DpIcon/DpIcon.vue'\nimport { sanitizeUrl } from '@braintree/sanitize-url'\nimport { proportions as ICON_PROPORTIONS, SIZES as ICON_SIZES } from '~/components/DpIcon/util/iconConfig'\nimport { Tooltip } from '~/directives'\n\ntype ButtonColor = 'primary' | 'secondary' | 'warning'\ntype ButtonType = 'button' | 'submit'\ntype ButtonVariant = 'solid' | 'outline' | 'subtle'\n\nconst props = defineProps({\n /**\n * While waiting for a network response, the visual state of the button can be changed via the `busy` property.\n */\n busy: {\n type: [Boolean, null],\n required: false,\n default: null\n },\n\n /**\n * The color of the button may be `primary`, `secondary`, or `warning`.\n */\n color: {\n type: String as PropType<ButtonColor>,\n required: false,\n default: 'primary',\n validator: (prop: ButtonColor) => ['primary', 'secondary', 'warning'].includes(prop)\n },\n\n disabled: {\n type: [Boolean, null],\n required: false,\n default: null\n },\n\n /**\n * This may be set to true to render icon-only buttons.\n * The `text` prop will be visually hidden in this case, keeping the button accessible.\n */\n hideText: {\n type: Boolean,\n required: false,\n default: false\n },\n\n /**\n * When passing an href, a link is rendered instead of a button element.\n * The value of its `href` attribute is sanitized, defaulting to `'about:blank'` for unsafe values.\n */\n href: {\n type: String,\n required: false,\n default: '#'\n },\n\n /**\n * Icon that will be placed before button text.\n */\n icon: {\n type: String as PropType<IconName>,\n required: false,\n default: ''\n },\n\n /**\n * Define the size of the button icons.\n */\n iconSize: {\n type: String as PropType<IconSize>,\n required: false,\n default: 'small',\n validator: (prop: IconSize) => Object.keys(ICON_SIZES).includes(prop)\n },\n\n /**\n * Icon that will be placed after button text.\n */\n iconAfter: {\n type: String as PropType<IconName>,\n required: false,\n default: ''\n },\n\n /**\n * Renders the button with a pill-like appearance when set to true.\n */\n rounded: {\n type: Boolean,\n required: false,\n default: false\n },\n\n /**\n * Text content of the button element.\n */\n text: {\n type: String,\n required: false,\n default: 'save'\n },\n\n /**\n * The type attribute can be set to a value of `submit` manually, if the button is used to post a form.\n */\n type: {\n type: String as PropType<ButtonType>,\n required: false,\n default: 'button',\n validator: (prop: ButtonType): boolean => ['button', 'submit'].includes(prop)\n },\n\n /**\n * The button may have a variant of `solid`, `outline`, or `subtle`.\n * When not specified, the `solid` variant (white on colored background) is applied.\n */\n variant: {\n type: String as PropType<ButtonVariant>,\n required: false,\n default: 'solid',\n validator: (prop: ButtonVariant) => ['solid', 'outline', 'subtle'].includes(prop)\n }\n})\n\nconst emit = defineEmits(['click'])\n\nconst iconOnly = computed(() => (props.icon || props.iconAfter) && props.hideText)\n\nconst classes = computed(() => [\n 'inline-flex items-center leading-3 text-button select-none',\n ...colorClasses.value,\n ...spacingClasses.value,\n props.busy && 'bg-busy animate-busy pointer-events-none',\n props.disabled && 'opacity-40 pointer-events-none',\n props.rounded ? 'rounded-full' : 'rounded-button'\n])\n\nconst colorClasses = computed(() => {\n const colors = allColorClasses[props.color]\n const renderedColors = [colors.solidOutlineSubtle]\n\n switch (props.variant) {\n case 'solid':\n renderedColors.push(colors.solidOutline, colors.solid)\n break\n case 'outline':\n renderedColors.push(colors.solidOutline, colors.outlineSubtle)\n break\n case 'subtle':\n renderedColors.push(colors.outlineSubtle, colors.subtle)\n break\n default:\n break\n }\n\n return renderedColors\n})\n\n// Visually compensate button padding for icons with portrait proportions\nconst iconPortrait = computed(() => !props.hideText && ICON_PROPORTIONS[props.icon] === 'portrait')\nconst iconAfterPortrait = computed(() => !props.hideText && ICON_PROPORTIONS[props.iconAfter] === 'portrait')\n\nconst spacingClasses = computed(() => {\n // Default padding for text buttons, resulting in a 30px height that matches input fields.\n let padding = `${iconPortrait.value ? 'pl-1' : 'pl-2'} py-1 ${iconAfterPortrait.value ? 'pr-1' : 'pr-2'}`\n\n // The small and large iconOnly buttons create a scale alongside the medium iconOnly button which shares its 30px height with input fields.\n if (iconOnly.value) {\n switch (props.iconSize) {\n case 'large':\n padding = 'p-1.5'\n break\n case 'small':\n padding = 'p-0.5'\n break\n case 'medium':\n padding = 'p-[5px]'\n break\n default:\n break\n }\n }\n return [\n 'space-x-1',\n padding\n ]\n})\n\nconst element = computed(() => isButtonElement.value ? 'button' : 'a')\nconst isButtonElement = computed(() => props.href === '#')\nconst sanitizedHref = computed(() => sanitizeUrl(props.href))\n\nconst vTooltip = Tooltip\n\nonMounted(() => {\n if (!(props.icon || props.iconAfter) && props.hideText) {\n console.error(`A DpButton instance is used without icon or visible text. Consider showing something to users.`)\n }\n})\n\nconst allColorClasses = {\n primary: {\n /**\n * solidOutlineSubtle: classes that apply to all button color variants.\n *\n * Instead of hardcoding #005eb1 here, focus-visible:outline-interactive-hover/50 could be used.\n * However, for this to work, token css variables would have to be rendered within @layer base with modern rbg\n * syntax, to be able to utilize the \"<alpha-value>\" placeholder to support opacity on css variables.\n * See\n * - https://tailwindcss.com/docs/customizing-colors#using-css-variables\n * - https://www.natestephens.dev/opacity-with-css-variable-color\n */\n solidOutlineSubtle: `\n outline outline-4 outline-offset-0 outline-transparent\n focus-visible:outline-[#005eb1]/50 focus-visible:z-above-zero`,\n /**\n * solidOutline: classes that apply to \"solid\" and \"outline\" button color variants.\n *\n * Solid buttons have a 1px border with the same color as the bg color, to be the same overall size as outline buttons.\n * The same border is applied to outline buttons.\n */\n solidOutline: `\n border border-interactive\n hover:border-interactive-hover\n focus:border-interactive-hover\n focus-visible:border-interactive-hover\n active:border-interactive-active `,\n // outlineSubtle: classes that apply to \"outline\" and \"subtle\" button color variants.\n outlineSubtle: `\n bg-surface text-interactive\n hover:bg-interactive-subtle-hover hover:text-interactive-hover\n focus:bg-interactive-subtle-hover focus:text-interactive-hover\n focus-visible:bg-interactive-subtle-hover focus-visible:text-interactive-hover\n active:bg-interactive-subtle-active active:text-interactive-active `,\n // solid: classes that only apply to \"solid\" button color variant.\n solid: `\n bg-interactive text-on-dark\n hover:text-on-dark hover:no-underline hover:bg-interactive-hover\n focus:bg-interactive-hover\n focus-visible:bg-interactive-hover\n active:bg-interactive-active `,\n // subtle: classes that only apply to \"subtle\" button color variant.\n subtle: `\n border border-on-dark\n hover:border-interactive-subtle-hover\n focus:border-interactive-subtle-hover\n focus-visible:border-interactive-subtle-hover\n active:border-interactive-subtle-active `\n },\n secondary: {\n solidOutlineSubtle: ' outline outline-4 outline-offset-0 outline-transparent focus-visible:outline-[#595959]/50 ',\n solidOutline: `\n border border-interactive-secondary\n hover:border-interactive-secondary-hover\n focus:border-interactive-secondary-hover\n focus-visible:border-interactive-secondary-hover\n active:border-interactive-secondary-active `,\n outlineSubtle: `\n bg-surface text-interactive-secondary\n hover:bg-interactive-secondary-subtle-hover hover:text-interactive-secondary-hover\n focus:bg-interactive-secondary-subtle-hover focus:text-interactive-secondary-hover\n focus-visible:bg-interactive-secondary-subtle-hover focus-visible:text-interactive-secondary-hover\n active:bg-interactive-secondary-subtle-active active:text-interactive-secondary-active `,\n solid: `\n bg-interactive-secondary text-on-dark\n hover:text-on-dark hover:no-underline hover:bg-interactive-secondary-hover\n focus:bg-interactive-secondary-hover\n focus-visible:bg-interactive-secondary-hover\n active:bg-interactive-secondary-active `,\n subtle: `\n border border-on-dark\n hover:border-interactive-secondary-subtle-hover\n focus:border-interactive-secondary-subtle-hover\n focus-visible:border-interactive-secondary-subtle-hover\n active:border-interactive-secondary-subtle-active `\n },\n warning: {\n solidOutlineSubtle: ' outline outline-4 outline-offset-0 outline-transparent focus-visible:outline-[#B20000]/50 ',\n solidOutline: `\n border border-interactive-warning\n hover:border-interactive-warning-hover\n focus:border-interactive-warning-hover\n focus-visible:border-interactive-warning-hover\n active:border-interactive-warning-active `,\n outlineSubtle: `\n bg-surface text-interactive-warning\n hover:bg-interactive-warning-subtle-hover hover:text-interactive-warning-hover\n focus:bg-interactive-warning-subtle-hover focus:text-interactive-warning-hover\n focus-visible:bg-interactive-warning-subtle-hover focus-visible:text-interactive-warning-hover\n active:bg-interactive-warning-subtle-active active:text-interactive-warning-active `,\n solid: `\n bg-interactive-warning text-on-dark\n hover:text-on-dark hover:no-underline hover:bg-interactive-warning-hover\n focus:bg-interactive-warning-hover\n focus-visible:bg-interactive-warning-hover\n active:bg-interactive-warning-active `,\n subtle: `\n border border-on-dark\n hover:border-interactive-warning-subtle-hover\n focus:border-interactive-warning-subtle-hover\n focus-visible:border-interactive-warning-subtle-hover\n active:border-interactive-warning-subtle-active `\n }\n}\n</script>\n
|
|
5
|
+
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|
6
|
+
<+>UTF-8
|
|
7
|
+
===================================================================
|
|
8
|
+
diff --git a/src/components/DpButton/DpButton.vue b/src/components/DpButton/DpButton.vue
|
|
9
|
+
--- a/src/components/DpButton/DpButton.vue
|
|
10
|
+
+++ b/src/components/DpButton/DpButton.vue
|
|
11
|
+
@@ -136,7 +136,7 @@
|
|
12
|
+
type: String as PropType<ButtonType>,
|
|
13
|
+
required: false,
|
|
14
|
+
default: 'button',
|
|
15
|
+
- validator: (prop: ButtonType): boolean => ['button', 'submit'].includes(prop)
|
|
16
|
+
+ validator: (prop: ButtonType): boolean => ['button', 'submit', 'reset'].includes(prop)
|
|
17
|
+
},
|
|
18
|
+
|
|
19
|
+
/**
|
package/.idea/shelf/Uncommitted_changes_before_Checkout_at_12_11_2024_09_34_[Changes]1/shelved.patch
ADDED
|
File without changes
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<changelist name="Uncommitted_changes_before_Checkout_at_12_11_2024_09_34_[Changes]" date="1731400484673" recycled="false" toDelete="true">
|
|
2
|
+
<option name="PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Checkout_at_12_11_2024_09_34_[Changes]/shelved.patch" />
|
|
3
|
+
<option name="DESCRIPTION" value="Uncommitted changes before Checkout at 12 11 2024 09:34 [Changes]" />
|
|
4
|
+
</changelist>
|
package/.idea/shelf/Uncommitted_changes_before_Checkout_at_21_02_2025_09_50_[Changes]/shelved.patch
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
Index: src/components/DpPager/DpPager.vue
|
|
2
|
+
IDEA additional info:
|
|
3
|
+
Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
|
|
4
|
+
<+><template>\n <div class=\"c-pager__dropdown\">\n <label\n class=\"c-pager__dropdown-label u-m-0 u-p-0 weight--normal inline-block\"\n :aria-label=\"Translator.trans('pager.amount.multiple.label', { results: totalItems, items: Translator.trans('pager.amount.multiple.items') })\">\n <dp-sliding-pagination\n v-if=\"totalItems > Math.min(...limits)\"\n class=\"inline-block\"\n :current=\"currentPage\"\n :nonSlidingSize=\"3\"\n :slidingEndingSize=\"1\"\n :slidingWindowSize=\"1\"\n :total=\"totalPages || 1\"\n @page-change=\"handlePageChange\" />\n <div\n class=\"inline-block\"\n v-if=\"totalItems > Math.min(...limits)\">\n <dp-multiselect\n v-model=\"itemsPerPage\"\n class=\"inline-block\"\n :options=\"filteredLimits\"\n :searchable=\"false\"\n selected-label=\"\"\n @select=\"handleSizeChange\"/>\n </div>\n <span v-else>{{ totalItems }}</span>\n <span aria-hidden=\"true\">\n {{ Translator.trans('pager.amount.multiple.of') }}\n <span data-cy=\"totalItems\">{{ totalItems }}</span>\n {{ Translator.trans('pager.amount.multiple.items') }}\n </span>\n </label>\n </div>\n</template>\n\n<script>\nimport DpMultiselect from '~/components/DpMultiselect'\nimport DpSlidingPagination from '~/components/DpSlidingPagination'\n\nexport default {\n name: 'DpPager',\n\n components: {\n DpSlidingPagination,\n DpMultiselect\n },\n\n props: {\n currentPage: {\n required: false,\n type: Number,\n default: 1\n },\n\n totalItems: {\n required: false,\n type: Number,\n default: 1\n },\n\n totalPages: {\n required: false,\n type: Number,\n default: 1\n },\n\n perPage: {\n required: false,\n type: Number,\n default: 1\n },\n\n limits: {\n required: false,\n type: Array,\n default: () => []\n }\n },\n\n data () {\n return {\n itemsPerPage: this.perPage <= this.totalItems ? this.perPage : this.totalItems\n }\n },\n\n computed: {\n filteredLimits () {\n const filtered = this.limits.filter(limit => limit <= this.totalItems)\n\n if (filtered.length < this.limits.length && this.totalItems > filtered[filtered.length - 1]) {\n filtered.push(this.totalItems)\n }\n\n if (filtered.includes(this.itemsPerPage) === false) {\n filtered.push(this.itemsPerPage)\n }\n filtered.sort((a, b) => a - b)\n\n return filtered\n }\n },\n\n methods: {\n handlePageChange (newPage) {\n this.$emit('page-change', newPage)\n },\n\n handleSizeChange (selectedOption) {\n this.$emit('size-change', parseInt(selectedOption))\n }\n }\n}\n</script>\n
|
|
5
|
+
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|
6
|
+
<+>UTF-8
|
|
7
|
+
===================================================================
|
|
8
|
+
diff --git a/src/components/DpPager/DpPager.vue b/src/components/DpPager/DpPager.vue
|
|
9
|
+
--- a/src/components/DpPager/DpPager.vue (revision 87a9fc0e85dcab37e6e71800508e0c10a8338768)
|
|
10
|
+
+++ b/src/components/DpPager/DpPager.vue (date 1738594041991)
|
|
11
|
+
@@ -3,15 +3,15 @@
|
|
12
|
+
<label
|
|
13
|
+
class="c-pager__dropdown-label u-m-0 u-p-0 weight--normal inline-block"
|
|
14
|
+
:aria-label="Translator.trans('pager.amount.multiple.label', { results: totalItems, items: Translator.trans('pager.amount.multiple.items') })">
|
|
15
|
+
- <dp-sliding-pagination
|
|
16
|
+
- v-if="totalItems > Math.min(...limits)"
|
|
17
|
+
- class="inline-block"
|
|
18
|
+
- :current="currentPage"
|
|
19
|
+
- :nonSlidingSize="3"
|
|
20
|
+
- :slidingEndingSize="1"
|
|
21
|
+
- :slidingWindowSize="1"
|
|
22
|
+
- :total="totalPages || 1"
|
|
23
|
+
- @page-change="handlePageChange" />
|
|
24
|
+
+ <dp-sliding-pagination
|
|
25
|
+
+ v-if="totalItems > Math.min(...limits)"
|
|
26
|
+
+ class="inline-block"
|
|
27
|
+
+ :current="currentPage"
|
|
28
|
+
+ :nonSlidingSize="3"
|
|
29
|
+
+ :slidingEndingSize="1"
|
|
30
|
+
+ :slidingWindowSize="1"
|
|
31
|
+
+ :total="totalPages || 1"
|
|
32
|
+
+ @page-change="handlePageChange" />
|
|
33
|
+
<div
|
|
34
|
+
class="inline-block"
|
|
35
|
+
v-if="totalItems > Math.min(...limits)">
|
package/.idea/shelf/Uncommitted_changes_before_Update_at_04_12_2024_08_13_[Changes]/shelved.patch
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
Index: src/utils/prefixClass.js
|
|
2
|
+
IDEA additional info:
|
|
3
|
+
Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
|
|
4
|
+
<+>/**\n * Prefix css classes with a parameter given from the project settings\n *\n * @param {String} classList or querySelector\n *\n * @return {String} prefixed classList\n */\nexport default function prefixClass (classList = '') {\n let prefix = ''\n if (typeof dplan !== 'undefined' && dplan.settings && dplan.settings.publicCSSClassPrefix) {\n prefix = dplan.settings.publicCSSClassPrefix\n }\n\n let prefixed = ''\n\n // Don't try to do something if the result should not change\n if (prefix === '') {\n return classList\n }\n\n // Throw error if the type is wrong\n if (typeof classList !== 'string') {\n throw new Error('classList is an' + typeof classList + '. should be String.', classList)\n }\n\n /*\n * Assuming that a querySelector is passed when classList contains a dot, only the class selector parts are prefixed.\n * In the unlikely case that classes contain dots as part of their names, they will not be prefixed.\n */\n const checkClassList = /[.#[]/gi\n if (checkClassList.test(classList)) {\n prefixed = classList.replace(/(\\.)(\\S+)/gi, (cl, m1, m2) => `.${prefix}${m2}`)\n } else {\n prefixed = classList.replace(/(\\S+)/gi, cl => `${prefix}${cl}`)\n }\n\n return prefixed\n}\n
|
|
5
|
+
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|
6
|
+
<+>UTF-8
|
|
7
|
+
===================================================================
|
|
8
|
+
diff --git a/src/utils/prefixClass.js b/src/utils/prefixClass.js
|
|
9
|
+
--- a/src/utils/prefixClass.js (revision 7c37a9a7e1b33327b834347c85796e2acce6591a)
|
|
10
|
+
+++ b/src/utils/prefixClass.js (date 1733213132330)
|
|
11
|
+
@@ -29,9 +29,9 @@
|
|
12
|
+
*/
|
|
13
|
+
const checkClassList = /[.#[]/gi
|
|
14
|
+
if (checkClassList.test(classList)) {
|
|
15
|
+
- prefixed = classList.replace(/(\.)(\S+)/gi, (cl, m1, m2) => `.${prefix}${m2}`)
|
|
16
|
+
+ prefixed = classList.replaceAll(/(\.)(\S+)/gi, (cl, m1, m2) => `.${prefix}${m2}`)
|
|
17
|
+
} else {
|
|
18
|
+
- prefixed = classList.replace(/(\S+)/gi, cl => `${prefix}${cl}`)
|
|
19
|
+
+ prefixed = classList.replaceAll(/(\S+)/gi, cl => `${prefix}${cl}`)
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return prefixed
|
|
23
|
+
Index: src/components/DpFormRow/DpFormRow.vue
|
|
24
|
+
IDEA additional info:
|
|
25
|
+
Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
|
|
26
|
+
<+><template>\n <div>\n <!-- insert form fields here -->\n <slot />\n </div>\n</template>\n\n<script>\nexport default {\n name: 'DpFormRow',\n\n data () {\n return {\n // Number of elements in the form row\n elementCount: 0,\n // True if the form elements fill the entire row\n isFullRow: true\n }\n },\n\n computed: {\n /**\n * Array containing the widths of the form elements\n * @return {Array}\n */\n elementsWidths () {\n return this.$children.map(child => child.$props.width || 'u-1-of-1') || []\n }\n },\n\n methods: {\n /**\n * Determine if the given form elements fill the entire row; if not, add padding-right\n */\n determineRowWidth () {\n if (this.elementsWidths.length > 0) {\n // U-firstWidthValue-of-y\n const firstWidthValues = this.elementsWidths.map(width => parseInt(width.match(/\\d+/)))\n // Add firstWidthValues together\n const combinedWidth = firstWidthValues.reduce((acc, curr) => {\n return acc + parseInt(curr)\n })\n // U-x-of-completeWidth\n const completeWidth = parseInt(this.elementsWidths[0].match(/\\d+$/)[0])\n this.isFullRow = completeWidth === combinedWidth\n }\n },\n\n /**\n * Add padding-right to the form element if\n * - it is not the last element in the row or\n * - it is the last element in the row, but the elements don't fill the row\n */\n setPadding () {\n this.$children.forEach(child => {\n const idx = this.$children.indexOf(child)\n if (idx < this.elementCount - 1 || (idx === this.elementCount - 1 && this.isFullRow === false)) {\n child.$el.classList.add('u-pr')\n }\n })\n }\n },\n\n mounted () {\n this.elementCount = this.$children.length\n this.determineRowWidth()\n this.setPadding()\n }\n}\n</script>\n
|
|
27
|
+
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|
28
|
+
<+>UTF-8
|
|
29
|
+
===================================================================
|
|
30
|
+
diff --git a/src/components/DpFormRow/DpFormRow.vue b/src/components/DpFormRow/DpFormRow.vue
|
|
31
|
+
--- a/src/components/DpFormRow/DpFormRow.vue (revision 7c37a9a7e1b33327b834347c85796e2acce6591a)
|
|
32
|
+
+++ b/src/components/DpFormRow/DpFormRow.vue (date 1733213132338)
|
|
33
|
+
@@ -33,7 +33,7 @@
|
|
34
|
+
* Determine if the given form elements fill the entire row; if not, add padding-right
|
|
35
|
+
*/
|
|
36
|
+
determineRowWidth () {
|
|
37
|
+
- if (this.elementsWidths.length > 0) {
|
|
38
|
+
+ if (this.elementsWidths.length > 0 && this.elementsWidths[0] !== 'w-full') {
|
|
39
|
+
// U-firstWidthValue-of-y
|
|
40
|
+
const firstWidthValues = this.elementsWidths.map(width => parseInt(width.match(/\d+/)))
|
|
41
|
+
// Add firstWidthValues together
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<changelist name="Uncommitted_changes_before_Update_at_04_12_2024_08_13_[Changes]" date="1733296408408" recycled="false" toDelete="true">
|
|
2
|
+
<option name="PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_04_12_2024_08_13_[Changes]/shelved.patch" />
|
|
3
|
+
<option name="DESCRIPTION" value="Uncommitted changes before Update at 04 12 2024 08:13 [Changes]" />
|
|
4
|
+
</changelist>
|