@itfin/components 1.5.1 → 1.5.3
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/dist/ITFComponents.common.js +87 -0
- package/dist/ITFComponents.common.js.map +1 -0
- package/dist/ITFComponents.umd.js +98 -0
- package/dist/ITFComponents.umd.js.map +1 -0
- package/dist/ITFComponents.umd.min.js +2 -0
- package/dist/ITFComponents.umd.min.js.map +1 -0
- package/dist/demo.html +1 -0
- package/package.json +12 -1
- package/src/ITFSettings.js +0 -6
- package/src/components/alert/AlertBanner.vue +70 -14
- package/src/components/button/Button.vue +1 -3
- package/src/components/button/NativeButton.js +0 -4
- package/src/components/button/index.stories.js +2 -2
- package/src/components/checkbox/NestedCheckboxGroup.vue +109 -0
- package/src/components/customize/PropertiesList.vue +2 -0
- package/src/components/customize/PropertiesPopupMenu.vue +1 -1
- package/src/components/customize/PropertyItem.vue +24 -6
- package/src/components/datepicker/DatePicker.vue +1 -1
- package/src/components/datepicker/MonthPicker.vue +21 -1
- package/src/components/dropdown/Dropdown.vue +1 -1
- package/src/components/dropdown/DropdownMenu.vue +1 -1
- package/src/components/editable/EditButton.vue +1 -1
- package/src/components/filter/FilterBadge.vue +4 -3
- package/src/components/filter/FilterFacetsList.vue +16 -9
- package/src/components/filter/FilterPanel.vue +20 -6
- package/src/components/icon/components/nomi-.DS_Store +0 -0
- package/src/components/icon/components/nomi-approval-chain.vue +5 -0
- package/src/components/icon/components/nomi-calendar-view.vue +4 -0
- package/src/components/icon/components/nomi-close-alt.vue +5 -0
- package/src/components/icon/components/nomi-cog-lightning.vue +5 -0
- package/src/components/icon/components/nomi-comment-add.vue +5 -0
- package/src/components/icon/components/nomi-comment.vue +4 -0
- package/src/components/icon/components/nomi-comments.vue +5 -0
- package/src/components/icon/components/nomi-copy.vue +5 -0
- package/src/components/icon/components/nomi-dollar.vue +4 -0
- package/src/components/icon/components/nomi-expense-requests.vue +5 -0
- package/src/components/icon/components/nomi-file-doc.vue +7 -0
- package/src/components/icon/components/nomi-file-excel.vue +9 -0
- package/src/components/icon/components/nomi-file-image.vue +6 -0
- package/src/components/icon/components/nomi-file-pdf.vue +5 -0
- package/src/components/icon/components/nomi-help.vue +3 -2
- package/src/components/icon/components/nomi-kanban-view.vue +6 -0
- package/src/components/icon/components/nomi-light-bulb.vue +4 -0
- package/src/components/icon/components/nomi-list-view.vue +7 -0
- package/src/components/icon/components/nomi-lock.vue +1 -1
- package/src/components/icon/components/nomi-money-alt.vue +4 -0
- package/src/components/icon/components/nomi-money-requests.vue +12 -0
- package/src/components/icon/components/nomi-pending.vue +4 -0
- package/src/components/icon/components/nomi-plus.vue +5 -0
- package/src/components/icon/components/nomi-project.vue +2 -2
- package/src/components/icon/components/nomi-scissors.vue +1 -1
- package/src/components/icon/components/nomi-secure.vue +4 -0
- package/src/components/icon/components/nomi-stop.vue +4 -0
- package/src/components/icon/components/nomi-table-config.vue +9 -0
- package/src/components/icon/components/nomi-table-view.vue +4 -1
- package/src/components/icon/components/nomi-thumbs-down.vue +4 -0
- package/src/components/icon/components/nomi-thumbs-up.vue +4 -0
- package/src/components/icon/components/nomi-undo.vue +4 -0
- package/src/components/icon/components/nomi-user-settings.vue +5 -0
- package/src/components/icon/components/nomi-user.vue +3 -3
- package/src/components/icon/convert-icons.js +0 -3
- package/src/components/icon/icons.js +403 -372
- package/src/components/icon/new-icons/approval-chain.svg +4 -0
- package/src/components/icon/new-icons/budget.svg +3 -0
- package/src/components/icon/new-icons/calendar-view.svg +3 -0
- package/src/components/icon/new-icons/close-alt.svg +4 -0
- package/src/components/icon/new-icons/cog-lightning.svg +4 -0
- package/src/components/icon/new-icons/comment-add.svg +4 -0
- package/src/components/icon/new-icons/comment.svg +3 -0
- package/src/components/icon/new-icons/comments.svg +4 -0
- package/src/components/icon/new-icons/copy.svg +4 -0
- package/src/components/icon/new-icons/dollar.svg +3 -0
- package/src/components/icon/new-icons/expense-requests.svg +4 -0
- package/src/components/icon/new-icons/file-doc.svg +6 -0
- package/src/components/icon/new-icons/file-excel.svg +8 -0
- package/src/components/icon/new-icons/file-image.svg +5 -0
- package/src/components/icon/new-icons/file-pdf.svg +4 -0
- package/src/components/icon/new-icons/help.svg +3 -2
- package/src/components/icon/new-icons/kanban-view.svg +5 -0
- package/src/components/icon/new-icons/light-bulb.svg +3 -0
- package/src/components/icon/new-icons/list-view.svg +6 -0
- package/src/components/icon/new-icons/lock.svg +1 -1
- package/src/components/icon/new-icons/money-alt.svg +3 -0
- package/src/components/icon/new-icons/money-requests.svg +11 -0
- package/src/components/icon/new-icons/pending.svg +3 -0
- package/src/components/icon/new-icons/plus.svg +4 -0
- package/src/components/icon/new-icons/project.svg +2 -2
- package/src/components/icon/new-icons/scissors.svg +1 -1
- package/src/components/icon/new-icons/secure.svg +3 -0
- package/src/components/icon/new-icons/stop.svg +3 -0
- package/src/components/icon/new-icons/table-config.svg +8 -0
- package/src/components/icon/new-icons/table-view.svg +4 -1
- package/src/components/icon/new-icons/thumbs-down.svg +3 -0
- package/src/components/icon/new-icons/thumbs-up.svg +3 -0
- package/src/components/icon/new-icons/undo.svg +3 -0
- package/src/components/icon/new-icons/user-settings.svg +4 -0
- package/src/components/icon/new-icons/user.svg +3 -3
- package/src/components/kanban/BoardCard.vue +1 -1
- package/src/components/kanban/BoardCardTimer.vue +1 -1
- package/src/components/modal/Modal.vue +6 -1
- package/src/components/overlay/SensitiveOverlay.vue +4 -2
- package/src/components/pagination/Pagination2.vue +4 -3
- package/src/components/panels/Panel.vue +23 -1
- package/src/components/panels/PanelItemEdit.vue +91 -10
- package/src/components/panels/PanelList.vue +19 -6
- package/src/components/table/Table2.vue +65 -60
- package/src/components/table/TableBody.vue +6 -0
- package/src/components/table/TableGroup.vue +13 -4
- package/src/components/table/TableHeader.vue +77 -76
- package/src/components/table/TableRowToggle.vue +9 -1
- package/src/components/table/TableRows.vue +54 -30
- package/src/components/table/table2.scss +15 -34
- package/src/components/text-field/TextField.vue +8 -0
- package/src/components/tree/TreeEditor.vue +2 -3
- package/src/components/view/View.vue +217 -56
- package/src/helpers/validators.js +35 -9
- package/src/helpers/validators.spec.js +48 -11
- package/src/locales/en.js +8 -2
- package/src/locales/pl.js +2 -1
- package/src/locales/uk.js +7 -6
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/******/ (function() { // webpackBootstrap
|
|
2
|
+
/******/ "use strict";
|
|
3
|
+
/******/ // The require scope
|
|
4
|
+
/******/ var __webpack_require__ = {};
|
|
5
|
+
/******/
|
|
6
|
+
/************************************************************************/
|
|
7
|
+
/******/ /* webpack/runtime/define property getters */
|
|
8
|
+
/******/ !function() {
|
|
9
|
+
/******/ // define getter functions for harmony exports
|
|
10
|
+
/******/ __webpack_require__.d = function(exports, definition) {
|
|
11
|
+
/******/ for(var key in definition) {
|
|
12
|
+
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|
13
|
+
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
14
|
+
/******/ }
|
|
15
|
+
/******/ }
|
|
16
|
+
/******/ };
|
|
17
|
+
/******/ }();
|
|
18
|
+
/******/
|
|
19
|
+
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
|
20
|
+
/******/ !function() {
|
|
21
|
+
/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
|
|
22
|
+
/******/ }();
|
|
23
|
+
/******/
|
|
24
|
+
/******/ /* webpack/runtime/make namespace object */
|
|
25
|
+
/******/ !function() {
|
|
26
|
+
/******/ // define __esModule on exports
|
|
27
|
+
/******/ __webpack_require__.r = function(exports) {
|
|
28
|
+
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
|
29
|
+
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
30
|
+
/******/ }
|
|
31
|
+
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
|
32
|
+
/******/ };
|
|
33
|
+
/******/ }();
|
|
34
|
+
/******/
|
|
35
|
+
/******/ /* webpack/runtime/publicPath */
|
|
36
|
+
/******/ !function() {
|
|
37
|
+
/******/ __webpack_require__.p = "";
|
|
38
|
+
/******/ }();
|
|
39
|
+
/******/
|
|
40
|
+
/************************************************************************/
|
|
41
|
+
var __webpack_exports__ = {};
|
|
42
|
+
// ESM COMPAT FLAG
|
|
43
|
+
__webpack_require__.r(__webpack_exports__);
|
|
44
|
+
|
|
45
|
+
// EXPORTS
|
|
46
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
47
|
+
"default": function() { return /* binding */ entry_lib; }
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
;// ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js
|
|
51
|
+
/* eslint-disable no-var */
|
|
52
|
+
// This file is imported into lib/wc client bundles.
|
|
53
|
+
|
|
54
|
+
if (typeof window !== 'undefined') {
|
|
55
|
+
var currentScript = window.document.currentScript
|
|
56
|
+
if (false) // removed by dead control flow
|
|
57
|
+
{ var getCurrentScript; }
|
|
58
|
+
|
|
59
|
+
var src = currentScript && currentScript.src.match(/(.+\/)[^/]+\.js(\?.*)?$/)
|
|
60
|
+
if (src) {
|
|
61
|
+
__webpack_require__.p = src[1] // eslint-disable-line
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Indicate to webpack that this file can be concatenated
|
|
66
|
+
/* harmony default export */ var setPublicPath = (null);
|
|
67
|
+
|
|
68
|
+
;// ./src/main.js
|
|
69
|
+
function install(Vue) {}
|
|
70
|
+
install.version = '__VERSION__';
|
|
71
|
+
if (typeof window !== 'undefined') {
|
|
72
|
+
window.Vue && window.Vue.use(install);
|
|
73
|
+
window['ITFComponents'] = install;
|
|
74
|
+
if (install.installed) {
|
|
75
|
+
install.installed = false;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
;// ./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
/* harmony default export */ var entry_lib = (install);
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
module.exports = __webpack_exports__;
|
|
85
|
+
/******/ })()
|
|
86
|
+
;
|
|
87
|
+
//# sourceMappingURL=ITFComponents.common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITFComponents.common.js","mappings":";;UAAA;UACA;;;;;WCDA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA,E;;;;;WCPA,8CAA8C,yD;;;;;WCA9C;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D,E;;;;;WCNA,2B;;;;;;;;;;;;;;ACAA;AACA;;AAEA;AACA;AACA,MAAM,KAAuC,EAAE;AAAA,yBAQ5C;;AAEH;AACA;AACA,IAAI,qBAAuB;AAC3B;AACA;;AAEA;AACA,kDAAe,IAAI;;;ACtBJ,SAASA,OAAOA,CAACC,GAAG,EAAE,CACrC;AACAD,OAAO,CAACE,OAAO,GAAG,aAAa;AAE/B,IAAI,OAAOC,MAAM,KAAK,WAAW,EAAE;EACjCA,MAAM,CAACF,GAAG,IAAIE,MAAM,CAACF,GAAG,CAACG,GAAG,CAACJ,OAAO,CAAC;EACrCG,MAAM,CAAC,eAAe,CAAC,GAAGH,OAAO;EAEjC,IAAIA,OAAO,CAACK,SAAS,EAAE;IACrBL,OAAO,CAACK,SAAS,GAAG,KAAK;EAC3B;AACF,C;;ACXwB;AACA;AACxB,8CAAe,OAAG;AACI","sources":["webpack://@itfin/components/webpack/bootstrap","webpack://@itfin/components/webpack/runtime/define property getters","webpack://@itfin/components/webpack/runtime/hasOwnProperty shorthand","webpack://@itfin/components/webpack/runtime/make namespace object","webpack://@itfin/components/webpack/runtime/publicPath","webpack://@itfin/components/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://@itfin/components/./src/main.js","webpack://@itfin/components/./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"\";","/* eslint-disable no-var */\n// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n var currentScript = window.document.currentScript\n if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n var getCurrentScript = require('@soda/get-current-script')\n currentScript = getCurrentScript()\n\n // for backward compatibility, because previously we directly included the polyfill\n if (!('currentScript' in document)) {\n Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n }\n }\n\n var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n if (src) {\n __webpack_public_path__ = src[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\nexport default null\n","export default function install(Vue) {\n}\ninstall.version = '__VERSION__';\n\nif (typeof window !== 'undefined') {\n window.Vue && window.Vue.use(install);\n window['ITFComponents'] = install;\n\n if (install.installed) {\n install.installed = false;\n }\n}\n","import './setPublicPath'\nimport mod from '~entry'\nexport default mod\nexport * from '~entry'\n"],"names":["install","Vue","version","window","use","installed"],"sourceRoot":""}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
(function webpackUniversalModuleDefinition(root, factory) {
|
|
2
|
+
if(typeof exports === 'object' && typeof module === 'object')
|
|
3
|
+
module.exports = factory();
|
|
4
|
+
else if(typeof define === 'function' && define.amd)
|
|
5
|
+
define([], factory);
|
|
6
|
+
else if(typeof exports === 'object')
|
|
7
|
+
exports["ITFComponents"] = factory();
|
|
8
|
+
else
|
|
9
|
+
root["ITFComponents"] = factory();
|
|
10
|
+
})((typeof self !== 'undefined' ? self : this), function() {
|
|
11
|
+
return /******/ (function() { // webpackBootstrap
|
|
12
|
+
/******/ "use strict";
|
|
13
|
+
/******/ // The require scope
|
|
14
|
+
/******/ var __webpack_require__ = {};
|
|
15
|
+
/******/
|
|
16
|
+
/************************************************************************/
|
|
17
|
+
/******/ /* webpack/runtime/define property getters */
|
|
18
|
+
/******/ !function() {
|
|
19
|
+
/******/ // define getter functions for harmony exports
|
|
20
|
+
/******/ __webpack_require__.d = function(exports, definition) {
|
|
21
|
+
/******/ for(var key in definition) {
|
|
22
|
+
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|
23
|
+
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
24
|
+
/******/ }
|
|
25
|
+
/******/ }
|
|
26
|
+
/******/ };
|
|
27
|
+
/******/ }();
|
|
28
|
+
/******/
|
|
29
|
+
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
|
30
|
+
/******/ !function() {
|
|
31
|
+
/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
|
|
32
|
+
/******/ }();
|
|
33
|
+
/******/
|
|
34
|
+
/******/ /* webpack/runtime/make namespace object */
|
|
35
|
+
/******/ !function() {
|
|
36
|
+
/******/ // define __esModule on exports
|
|
37
|
+
/******/ __webpack_require__.r = function(exports) {
|
|
38
|
+
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
|
39
|
+
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
40
|
+
/******/ }
|
|
41
|
+
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
|
42
|
+
/******/ };
|
|
43
|
+
/******/ }();
|
|
44
|
+
/******/
|
|
45
|
+
/******/ /* webpack/runtime/publicPath */
|
|
46
|
+
/******/ !function() {
|
|
47
|
+
/******/ __webpack_require__.p = "";
|
|
48
|
+
/******/ }();
|
|
49
|
+
/******/
|
|
50
|
+
/************************************************************************/
|
|
51
|
+
var __webpack_exports__ = {};
|
|
52
|
+
// ESM COMPAT FLAG
|
|
53
|
+
__webpack_require__.r(__webpack_exports__);
|
|
54
|
+
|
|
55
|
+
// EXPORTS
|
|
56
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
57
|
+
"default": function() { return /* binding */ entry_lib; }
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
;// ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js
|
|
61
|
+
/* eslint-disable no-var */
|
|
62
|
+
// This file is imported into lib/wc client bundles.
|
|
63
|
+
|
|
64
|
+
if (typeof window !== 'undefined') {
|
|
65
|
+
var currentScript = window.document.currentScript
|
|
66
|
+
if (false) // removed by dead control flow
|
|
67
|
+
{ var getCurrentScript; }
|
|
68
|
+
|
|
69
|
+
var src = currentScript && currentScript.src.match(/(.+\/)[^/]+\.js(\?.*)?$/)
|
|
70
|
+
if (src) {
|
|
71
|
+
__webpack_require__.p = src[1] // eslint-disable-line
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Indicate to webpack that this file can be concatenated
|
|
76
|
+
/* harmony default export */ var setPublicPath = (null);
|
|
77
|
+
|
|
78
|
+
;// ./src/main.js
|
|
79
|
+
function install(Vue) {}
|
|
80
|
+
install.version = '__VERSION__';
|
|
81
|
+
if (typeof window !== 'undefined') {
|
|
82
|
+
window.Vue && window.Vue.use(install);
|
|
83
|
+
window['ITFComponents'] = install;
|
|
84
|
+
if (install.installed) {
|
|
85
|
+
install.installed = false;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
;// ./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
/* harmony default export */ var entry_lib = (install);
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
/******/ return __webpack_exports__;
|
|
95
|
+
/******/ })()
|
|
96
|
+
;
|
|
97
|
+
});
|
|
98
|
+
//# sourceMappingURL=ITFComponents.umd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITFComponents.umd.js","mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;UCVA;UACA;;;;;WCDA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA,E;;;;;WCPA,8CAA8C,yD;;;;;WCA9C;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D,E;;;;;WCNA,2B;;;;;;;;;;;;;;ACAA;AACA;;AAEA;AACA;AACA,MAAM,KAAuC,EAAE;AAAA,yBAQ5C;;AAEH;AACA;AACA,IAAI,qBAAuB;AAC3B;AACA;;AAEA;AACA,kDAAe,IAAI;;;ACtBJ,SAASA,OAAOA,CAACC,GAAG,EAAE,CACrC;AACAD,OAAO,CAACE,OAAO,GAAG,aAAa;AAE/B,IAAI,OAAOC,MAAM,KAAK,WAAW,EAAE;EACjCA,MAAM,CAACF,GAAG,IAAIE,MAAM,CAACF,GAAG,CAACG,GAAG,CAACJ,OAAO,CAAC;EACrCG,MAAM,CAAC,eAAe,CAAC,GAAGH,OAAO;EAEjC,IAAIA,OAAO,CAACK,SAAS,EAAE;IACrBL,OAAO,CAACK,SAAS,GAAG,KAAK;EAC3B;AACF,C;;ACXwB;AACA;AACxB,8CAAe,OAAG;AACI","sources":["webpack://ITFComponents/webpack/universalModuleDefinition","webpack://ITFComponents/webpack/bootstrap","webpack://ITFComponents/webpack/runtime/define property getters","webpack://ITFComponents/webpack/runtime/hasOwnProperty shorthand","webpack://ITFComponents/webpack/runtime/make namespace object","webpack://ITFComponents/webpack/runtime/publicPath","webpack://ITFComponents/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://ITFComponents/./src/main.js","webpack://ITFComponents/./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ITFComponents\"] = factory();\n\telse\n\t\troot[\"ITFComponents\"] = factory();\n})((typeof self !== 'undefined' ? self : this), function() {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"\";","/* eslint-disable no-var */\n// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n var currentScript = window.document.currentScript\n if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n var getCurrentScript = require('@soda/get-current-script')\n currentScript = getCurrentScript()\n\n // for backward compatibility, because previously we directly included the polyfill\n if (!('currentScript' in document)) {\n Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n }\n }\n\n var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n if (src) {\n __webpack_public_path__ = src[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\nexport default null\n","export default function install(Vue) {\n}\ninstall.version = '__VERSION__';\n\nif (typeof window !== 'undefined') {\n window.Vue && window.Vue.use(install);\n window['ITFComponents'] = install;\n\n if (install.installed) {\n install.installed = false;\n }\n}\n","import './setPublicPath'\nimport mod from '~entry'\nexport default mod\nexport * from '~entry'\n"],"names":["install","Vue","version","window","use","installed"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(function(e,n){"object"===typeof exports&&"object"===typeof module?module.exports=n():"function"===typeof define&&define.amd?define([],n):"object"===typeof exports?exports["ITFComponents"]=n():e["ITFComponents"]=n()})("undefined"!==typeof self?self:this,function(){return function(){"use strict";var e={};!function(){e.d=function(n,o){for(var t in o)e.o(o,t)&&!e.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:o[t]})}}(),function(){e.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)}}(),function(){e.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}}(),function(){e.p=""}();var n={};if(e.r(n),e.d(n,{default:function(){return r}}),"undefined"!==typeof window){var o=window.document.currentScript,t=o&&o.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);t&&(e.p=t[1])}function i(e){}i.version="__VERSION__","undefined"!==typeof window&&(window.Vue&&window.Vue.use(i),window["ITFComponents"]=i,i.installed&&(i.installed=!1));var r=i;return n}()});
|
|
2
|
+
//# sourceMappingURL=ITFComponents.umd.min.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITFComponents.umd.min.js","mappings":"CAAA,SAA2CA,EAAMC,GAC1B,kBAAZC,SAA0C,kBAAXC,OACxCA,OAAOD,QAAUD,IACQ,oBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,kBAAZC,QACdA,QAAQ,iBAAmBD,IAE3BD,EAAK,iBAAmBC,GACzB,EATD,CASoB,qBAATK,KAAuBA,KAAOC,KAAO,WAChD,O,wBCTA,IAAIC,EAAsB,CAAC,G,WCA3BA,EAAoBC,EAAI,SAASP,EAASQ,GACzC,IAAI,IAAIC,KAAOD,EACXF,EAAoBI,EAAEF,EAAYC,KAASH,EAAoBI,EAAEV,EAASS,IAC5EE,OAAOC,eAAeZ,EAASS,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,IAG3E,C,eCPAH,EAAoBI,EAAI,SAASK,EAAKC,GAAQ,OAAOL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,EAAO,C,eCCtGV,EAAoBc,EAAI,SAASpB,GACX,qBAAXqB,QAA0BA,OAAOC,aAC1CX,OAAOC,eAAeZ,EAASqB,OAAOC,YAAa,CAAEC,MAAO,WAE7DZ,OAAOC,eAAeZ,EAAS,aAAc,CAAEuB,OAAO,GACvD,C,eCNAjB,EAAoBkB,EAAI,E,aCGxB,G,6CAAsB,qBAAXC,OAAwB,CACjC,IAAIC,EAAgBD,OAAOE,SAASD,cAWhCE,EAAMF,GAAiBA,EAAcE,IAAIC,MAAM,2BAC/CD,IACF,IAA0BA,EAAI,GAElC,CCnBe,SAASE,EAAQC,GAChC,CACAD,EAAQE,QAAU,cAEI,qBAAXP,SACTA,OAAOM,KAAON,OAAOM,IAAIE,IAAIH,GAC7BL,OAAO,iBAAmBK,EAEtBA,EAAQI,YACVJ,EAAQI,WAAY,ICPxB,Q","sources":["webpack://ITFComponents/webpack/universalModuleDefinition","webpack://ITFComponents/webpack/bootstrap","webpack://ITFComponents/webpack/runtime/define property getters","webpack://ITFComponents/webpack/runtime/hasOwnProperty shorthand","webpack://ITFComponents/webpack/runtime/make namespace object","webpack://ITFComponents/webpack/runtime/publicPath","webpack://ITFComponents/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://ITFComponents/./src/main.js","webpack://ITFComponents/./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ITFComponents\"] = factory();\n\telse\n\t\troot[\"ITFComponents\"] = factory();\n})((typeof self !== 'undefined' ? self : this), function() {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"\";","/* eslint-disable no-var */\n// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n var currentScript = window.document.currentScript\n if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n var getCurrentScript = require('@soda/get-current-script')\n currentScript = getCurrentScript()\n\n // for backward compatibility, because previously we directly included the polyfill\n if (!('currentScript' in document)) {\n Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n }\n }\n\n var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n if (src) {\n __webpack_public_path__ = src[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\nexport default null\n","export default function install(Vue) {\n}\ninstall.version = '__VERSION__';\n\nif (typeof window !== 'undefined') {\n window.Vue && window.Vue.use(install);\n window['ITFComponents'] = install;\n\n if (install.installed) {\n install.installed = false;\n }\n}\n","import './setPublicPath'\nimport mod from '~entry'\nexport default mod\nexport * from '~entry'\n"],"names":["root","factory","exports","module","define","amd","self","this","__webpack_require__","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","p","window","currentScript","document","src","match","install","Vue","version","use","installed"],"sourceRoot":""}
|
package/dist/demo.html
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<!doctype html><meta charset="utf-8"><title>ITFComponents demo</title><script src="./ITFComponents.umd.js"></script><link rel="stylesheet" href="./ITFComponents.css"><script>console.log(ITFComponents)</script>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@itfin/components",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.3",
|
|
4
4
|
"author": "Vitalii Savchuk <esvit666@gmail.com>",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"serve": "vue-cli-service serve",
|
|
@@ -59,7 +59,11 @@
|
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
61
|
"@babel/eslint-parser": "^7.19.1",
|
|
62
|
+
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
|
63
|
+
"@babel/plugin-proposal-decorators": "^7.29.0",
|
|
62
64
|
"@babel/plugin-proposal-numeric-separator": "^7.18.6",
|
|
65
|
+
"@babel/plugin-proposal-optional-chaining": "^7.21.0",
|
|
66
|
+
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
|
|
63
67
|
"@babel/plugin-syntax-numeric-separator": "^7.10.4",
|
|
64
68
|
"@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4",
|
|
65
69
|
"@vue/cli-plugin-babel": "^5.0.8",
|
|
@@ -81,6 +85,7 @@
|
|
|
81
85
|
"vue-class-component": "^7.2.6",
|
|
82
86
|
"vue-eslint-parser": "^9.1.0",
|
|
83
87
|
"vue-jest": "^3.0.7",
|
|
88
|
+
"vue-loader": "^15.11.1",
|
|
84
89
|
"vue-template-compiler": "=2.6.14"
|
|
85
90
|
},
|
|
86
91
|
"eslintConfig": {
|
|
@@ -130,5 +135,11 @@
|
|
|
130
135
|
"lcov"
|
|
131
136
|
]
|
|
132
137
|
},
|
|
138
|
+
"overrides": {
|
|
139
|
+
"@vue/vue-loader-v15": {
|
|
140
|
+
".": "npm:vue-loader@^15.11.1",
|
|
141
|
+
"webpack": "^5.88.0"
|
|
142
|
+
}
|
|
143
|
+
},
|
|
133
144
|
"license": "ISC"
|
|
134
145
|
}
|
package/src/ITFSettings.js
CHANGED
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="itf-alert-banner">
|
|
2
|
+
<div class="itf-alert-banner" :class="styleVariant">
|
|
3
3
|
<div v-if="count" class="itf-alert-banner__counter px-2 bg-danger text-white fw-bold text-smaller text-decoration-none d-block rounded-pill">
|
|
4
4
|
{{ count > 99 ? '99+' : count }}
|
|
5
5
|
</div>
|
|
6
|
-
<div v-if="
|
|
7
|
-
|
|
6
|
+
<div v-if="$listeners.close" class="itf-alert-banner__close position-absolute text-muted cursor-pointer" @click="$emit('close')">
|
|
7
|
+
<itf-icon new name="close-alt" :size="20" />
|
|
8
|
+
</div>
|
|
9
|
+
<div v-if="multiple" class="itf-alert-banner__panel itf-alert-banner__multiple h-100 position-absolute rounded-3 border bg-muted-2"></div>
|
|
10
|
+
<div class="itf-alert-banner__panel h-100 rounded-3 border bg-muted-2 d-flex gap-2 gap-md-3 align-items-start align-items-md-center">
|
|
8
11
|
<slot name="icon">
|
|
9
12
|
<div v-if="icon" class="itf-alert-banner__icon rounded-2 bg-danger flex-shrink-0 d-flex align-items-center justify-content-center">
|
|
10
13
|
<itf-icon new :name="icon" :size="24" class="text-white" />
|
|
11
14
|
</div>
|
|
12
15
|
</slot>
|
|
13
|
-
<div class="flex-grow-1">
|
|
16
|
+
<div class="itf-alert-banner__content flex-grow-1 d-flex flex-column">
|
|
14
17
|
<div class="fw-bold"><slot name="title">{{title}}</slot></div>
|
|
15
18
|
<div class="small text-muted"><slot></slot></div>
|
|
16
19
|
</div>
|
|
@@ -24,33 +27,85 @@
|
|
|
24
27
|
max-width: 420px;
|
|
25
28
|
|
|
26
29
|
&__counter {
|
|
27
|
-
top:
|
|
28
|
-
right: -
|
|
30
|
+
top: -12px;
|
|
31
|
+
right: -12px;
|
|
29
32
|
position: absolute;
|
|
30
|
-
z-index:
|
|
31
|
-
padding-top:
|
|
32
|
-
padding-bottom:
|
|
33
|
-
min-width:
|
|
33
|
+
z-index: 4;
|
|
34
|
+
padding-top: 3px;
|
|
35
|
+
padding-bottom: 3px;
|
|
36
|
+
min-width: 24px;
|
|
34
37
|
text-align: center;
|
|
38
|
+
@media (max-width: 768px) {
|
|
39
|
+
right: 0;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
&__close {
|
|
43
|
+
top: 8px;
|
|
44
|
+
right: 8px;
|
|
45
|
+
z-index: 3;
|
|
46
|
+
@media (max-width: 768px) {
|
|
47
|
+
top: 12px;
|
|
48
|
+
right: 12px;
|
|
49
|
+
}
|
|
35
50
|
}
|
|
36
51
|
&__panel {
|
|
37
52
|
position: relative;
|
|
38
53
|
padding-top: 0.75rem;
|
|
39
54
|
padding-bottom: 0.75rem;
|
|
40
|
-
|
|
55
|
+
padding-left: 1rem;
|
|
56
|
+
padding-right: 1rem;
|
|
41
57
|
z-index: 2;
|
|
58
|
+
@media (max-width: 768px) {
|
|
59
|
+
flex-direction: column;
|
|
60
|
+
padding-left: 0.75rem;
|
|
61
|
+
padding-right: 0.75rem;
|
|
62
|
+
}
|
|
42
63
|
}
|
|
43
64
|
&__icon {
|
|
44
65
|
width: 48px;
|
|
45
66
|
height: 48px;
|
|
67
|
+
@media (max-width: 768px) {
|
|
68
|
+
width: 32px;
|
|
69
|
+
height: 32px;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
::v-deep .itf-icon {
|
|
73
|
+
|
|
74
|
+
svg {
|
|
75
|
+
@media (max-width: 768px) {
|
|
76
|
+
width: 16px!important;
|
|
77
|
+
height: 16px!important;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
&__content {
|
|
83
|
+
@media (max-width: 768px) {
|
|
84
|
+
gap: 0.25rem;
|
|
85
|
+
}
|
|
46
86
|
}
|
|
47
87
|
&__multiple {
|
|
48
|
-
|
|
49
|
-
top: 0;
|
|
88
|
+
top: -4px;
|
|
50
89
|
right: -4px;
|
|
51
90
|
z-index: 1;
|
|
52
|
-
height: 100%;
|
|
53
91
|
width: 100%;
|
|
92
|
+
@media (max-width: 768px) {
|
|
93
|
+
width: calc(100% - 8px);
|
|
94
|
+
right: 4px;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
&.mobile-content-row {
|
|
99
|
+
|
|
100
|
+
@media (max-width: 768px) {
|
|
101
|
+
.itf-alert-banner__panel {
|
|
102
|
+
flex-direction: row;
|
|
103
|
+
padding-right: 2.5rem;
|
|
104
|
+
}
|
|
105
|
+
.itf-alert-banner__content {
|
|
106
|
+
gap: 0;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
54
109
|
}
|
|
55
110
|
}
|
|
56
111
|
</style>
|
|
@@ -71,5 +126,6 @@ class AlertBanner extends Vue {
|
|
|
71
126
|
@Prop(String) icon;
|
|
72
127
|
@Prop() count;
|
|
73
128
|
@Prop(Boolean) multiple;
|
|
129
|
+
@Prop({ type: String, default: '' }) styleVariant;
|
|
74
130
|
}
|
|
75
131
|
</script>
|
|
@@ -17,7 +17,6 @@ class itfButton extends Vue {
|
|
|
17
17
|
@Prop(Boolean) large;
|
|
18
18
|
@Prop(Boolean) icon;
|
|
19
19
|
@Prop(Boolean) block;
|
|
20
|
-
@Prop(Boolean) squircle;
|
|
21
20
|
@Prop(String) loadingText;
|
|
22
21
|
@Prop(String) color;
|
|
23
22
|
@Prop(Boolean) disabled;
|
|
@@ -28,7 +27,7 @@ class itfButton extends Vue {
|
|
|
28
27
|
|
|
29
28
|
render (createElement, { data, slots, children, props }) {
|
|
30
29
|
const {
|
|
31
|
-
to, href, target, disabled, color, block, loading, labeled, secondary, primary, small, large, icon, loadingText,
|
|
30
|
+
to, href, target, disabled, color, block, loading, labeled, secondary, primary, small, large, icon, loadingText, default: defaultStyle,
|
|
32
31
|
class: classNames
|
|
33
32
|
} = props;
|
|
34
33
|
const component = to ? 'nuxt-link' : (props.href ? 'a' : 'button');
|
|
@@ -48,7 +47,6 @@ class itfButton extends Vue {
|
|
|
48
47
|
'btn-default': defaultStyle,
|
|
49
48
|
'btn-basic': !primary && !secondary && !color && !defaultStyle,
|
|
50
49
|
'btn-secondary': secondary,
|
|
51
|
-
// 'btn-squircle': squircle,
|
|
52
50
|
'btn-sm': small,
|
|
53
51
|
'btn-lg': large,
|
|
54
52
|
// 'px-3': small && !icon,
|
|
@@ -7,7 +7,6 @@ const CSS_CLASSES = {
|
|
|
7
7
|
small: ['btn-sm'],
|
|
8
8
|
block: ['itf-button__block'],
|
|
9
9
|
labeled: ['labeled'],
|
|
10
|
-
squircle: ['btn-squircle'],
|
|
11
10
|
icon: ['btn-icon'],
|
|
12
11
|
loading: ['loading'],
|
|
13
12
|
spinner: ['itf-spinner'],
|
|
@@ -36,9 +35,6 @@ class Button extends HTMLElement {
|
|
|
36
35
|
if (this.hasAttribute('labeled')) {
|
|
37
36
|
styles.push(CSS_CLASSES.labeled);
|
|
38
37
|
}
|
|
39
|
-
if (this.hasAttribute('squircle')) {
|
|
40
|
-
styles.push(CSS_CLASSES.squircle);
|
|
41
|
-
}
|
|
42
38
|
if (this.hasAttribute('icon')) {
|
|
43
39
|
styles.push(CSS_CLASSES.icon);
|
|
44
40
|
}
|
|
@@ -66,7 +66,7 @@ storiesOf('Common', module)
|
|
|
66
66
|
|
|
67
67
|
<h3>Standart button</h3>
|
|
68
68
|
|
|
69
|
-
<itf-button
|
|
69
|
+
<itf-button primary>Primary button</itf-button>
|
|
70
70
|
<itf-button secondary>Secondary button</itf-button>
|
|
71
71
|
<itf-button>Basic button</itf-button>
|
|
72
72
|
<itf-button icon>
|
|
@@ -92,7 +92,7 @@ storiesOf('Common', module)
|
|
|
92
92
|
|
|
93
93
|
<h3>Large button</h3>
|
|
94
94
|
|
|
95
|
-
<itf-button
|
|
95
|
+
<itf-button large primary>Primary button</itf-button>
|
|
96
96
|
<itf-button large secondary>Secondary button</itf-button>
|
|
97
97
|
<itf-button large>Basic button</itf-button>
|
|
98
98
|
<itf-button large icon>
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
|
|
3
|
+
<div>
|
|
4
|
+
<div v-for="(item, n) in items" :key="n">
|
|
5
|
+
<slot name="item" :item="item" :isChecked="isChecked(item)" :onToggle="(isChecked) => onToggleOption(item, isChecked)" :isDisabled="disabled || isDisabled(item)">
|
|
6
|
+
<itf-checkbox
|
|
7
|
+
:value="isChecked(item)"
|
|
8
|
+
:label="item.name"
|
|
9
|
+
:disabled="disabled || isDisabled(item)"
|
|
10
|
+
@input="onToggleOption(item, $event)"
|
|
11
|
+
>
|
|
12
|
+
{{ item[itemKey] || item }}
|
|
13
|
+
</itf-checkbox>
|
|
14
|
+
</slot>
|
|
15
|
+
|
|
16
|
+
<div v-if="item[childrenKey] && item[childrenKey].length" class="ps-4 mb-2">
|
|
17
|
+
<itf-nested-checkbox-group
|
|
18
|
+
:value="value"
|
|
19
|
+
@input="$emit('input', $event)"
|
|
20
|
+
:items="item[childrenKey]"
|
|
21
|
+
:disabled="disabled || isDisabled(item)"
|
|
22
|
+
:item-key="itemKey"
|
|
23
|
+
:children-key="childrenKey"
|
|
24
|
+
:max="max"
|
|
25
|
+
:disabled-ids="disabledIds"
|
|
26
|
+
>
|
|
27
|
+
<template v-for="(_, name) in $slots" #[name]="slotData">
|
|
28
|
+
<slot :name="name" v-bind="slotData || {}"/>
|
|
29
|
+
</template>
|
|
30
|
+
<template v-for="(_, name) in $scopedSlots" #[name]="slotData">
|
|
31
|
+
<slot :name="name" v-bind="slotData || {}"/>
|
|
32
|
+
</template>
|
|
33
|
+
</itf-nested-checkbox-group>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
|
|
37
|
+
<slot />
|
|
38
|
+
</div>
|
|
39
|
+
|
|
40
|
+
</template>
|
|
41
|
+
<script>
|
|
42
|
+
import { Vue, Component, Prop, Model } from 'vue-property-decorator';
|
|
43
|
+
import itfCheckbox from './Checkbox';
|
|
44
|
+
import itfTableRows from '@itfin/components/src/components/table/TableRows.vue';
|
|
45
|
+
|
|
46
|
+
export default @Component({
|
|
47
|
+
name: 'itfNestedCheckboxGroup',
|
|
48
|
+
components: {
|
|
49
|
+
itfTableRows,
|
|
50
|
+
itfCheckbox
|
|
51
|
+
},
|
|
52
|
+
})
|
|
53
|
+
class itfNestedCheckboxGroup extends Vue {
|
|
54
|
+
@Model('input', { type: Array, default: () => [] }) value;
|
|
55
|
+
|
|
56
|
+
@Prop(Array) items;
|
|
57
|
+
@Prop(Boolean) disabled;
|
|
58
|
+
@Prop({ type: Array, default: () => [] }) disabledIds;
|
|
59
|
+
|
|
60
|
+
@Prop({ type: String }) itemKey;
|
|
61
|
+
@Prop({ type: String, default: 'children' }) childrenKey;
|
|
62
|
+
|
|
63
|
+
@Prop(Number) max;
|
|
64
|
+
|
|
65
|
+
onToggleOption(value, isChecked) {
|
|
66
|
+
const arr = this.value ? [ ...this.value ] : [];
|
|
67
|
+
if (value[this.childrenKey] && value[this.childrenKey].length) {
|
|
68
|
+
for (const child of value[this.childrenKey]) {
|
|
69
|
+
const index = arr.findIndex(item => this.itemKey ? item[this.itemKey] === child[this.itemKey] : item === child);
|
|
70
|
+
if (index !== -1 && isChecked === false) {
|
|
71
|
+
arr.splice(index, 1);
|
|
72
|
+
} else if (isChecked === true) {
|
|
73
|
+
arr.push(child);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
this.$emit('input', arr);
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const index = this.getCheckedIndex(value);
|
|
80
|
+
if (index !== -1 && isChecked === false) {
|
|
81
|
+
arr.splice(index, 1);
|
|
82
|
+
} else if (isChecked === true) {
|
|
83
|
+
arr.push(value);
|
|
84
|
+
}
|
|
85
|
+
this.$emit('input', arr);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
getCheckedIndex(value) {
|
|
89
|
+
if (this.itemKey) {
|
|
90
|
+
return this.value && this.value.findIndex(item => item[this.itemKey] === value[this.itemKey]);
|
|
91
|
+
}
|
|
92
|
+
return this.value.indexOf(value);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
isChecked(value) {
|
|
96
|
+
if (value[this.childrenKey] && value[this.childrenKey].length) {
|
|
97
|
+
return value[this.childrenKey].every(child => this.isChecked(child)) || this.getCheckedIndex(value) !== -1;
|
|
98
|
+
}
|
|
99
|
+
return this.getCheckedIndex(value) !== -1;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
isDisabled(value) {
|
|
103
|
+
if (this.disabledIds.includes(value)) {
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
return this.getCheckedIndex(value) === -1 && (this.max !== 'undefined' && this.value.length >= this.max);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
</script>
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
:field="field"
|
|
16
16
|
:editable="editable"
|
|
17
17
|
:lock-fields="lockFields"
|
|
18
|
+
:full-name="fullName"
|
|
18
19
|
:value="value[field.Id]"
|
|
19
20
|
@input="$emit('input', { ...value, [field.Id]: $event })"
|
|
20
21
|
@delete="onDelete(field)"
|
|
@@ -104,6 +105,7 @@ class itfPropertiesList extends Vue {
|
|
|
104
105
|
@Prop({ type: Boolean, default: false }) loading;
|
|
105
106
|
@Prop({ type: Boolean, default: false }) editable;
|
|
106
107
|
@Prop({ type: Boolean, default: false }) lockFields;
|
|
108
|
+
@Prop({ type: Boolean, default: false }) fullName;
|
|
107
109
|
|
|
108
110
|
isShowAll = false;
|
|
109
111
|
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
</div>
|
|
28
28
|
</template>
|
|
29
29
|
<script>
|
|
30
|
-
import { Vue, Component, Prop
|
|
30
|
+
import { Vue, Component, Prop } from 'vue-property-decorator';
|
|
31
31
|
import itfTextField from '../text-field/TextField.vue';
|
|
32
32
|
import itfIcon from '../icon/Icon';
|
|
33
33
|
import itfButton from '../button/Button';
|