@bethinkpl/design-system 22.2.0 → 22.3.0

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 (77) hide show
  1. package/.storybook/manager.js +3 -1
  2. package/dist/design-system.umd.js +3960 -154
  3. package/dist/design-system.umd.js.map +1 -1
  4. package/dist/lib/js/components/Banner/Banner.vue.d.ts +3 -0
  5. package/dist/lib/js/components/Buttons/Button/Button.vue.d.ts +3 -0
  6. package/dist/lib/js/components/Buttons/IconButton/IconButton.vue.d.ts +3 -0
  7. package/dist/lib/js/components/Cards/CardExpandable/CardExpandable.vue.d.ts +3 -0
  8. package/dist/lib/js/components/Chip/Chip.vue.d.ts +3 -0
  9. package/dist/lib/js/components/DatePickers/DatePicker/DatePicker.consts.d.ts +26 -0
  10. package/dist/lib/js/components/DatePickers/DatePicker/DatePicker.stories.d.ts +5 -0
  11. package/dist/lib/js/components/DatePickers/DatePicker/DatePicker.vue.d.ts +107 -0
  12. package/dist/lib/js/components/DatePickers/DatePicker/index.d.ts +3 -0
  13. package/dist/lib/js/components/DatePickers/DatePickerBox/DatePickerBox.vue.d.ts +268 -0
  14. package/dist/lib/js/components/DatePickers/DatePickerBox/index.d.ts +2 -0
  15. package/dist/lib/js/components/Drawer/DrawerHeader/DrawerHeader.vue.d.ts +3 -288
  16. package/dist/lib/js/components/Drawer/DrawerListItem/DrawerListItem.vue.d.ts +3 -234
  17. package/dist/lib/js/components/Drawer/DrawerSection/DrawerSection.vue.d.ts +3 -0
  18. package/dist/lib/js/components/Drawer/DrawerTile/DrawerTile.vue.d.ts +6 -2
  19. package/dist/lib/js/components/Form/Checkbox/Checkbox.vue.d.ts +3 -0
  20. package/dist/lib/js/components/Form/RadioButton/RadioButton.vue.d.ts +3 -0
  21. package/dist/lib/js/components/Headers/OverlayHeader/OverlayHeader.vue.d.ts +3 -0
  22. package/dist/lib/js/components/Headers/SectionHeader/SectionHeader.vue.d.ts +3 -0
  23. package/dist/lib/js/components/Icons/Icon/Icon.consts.d.ts +3 -0
  24. package/dist/lib/js/components/Modal/Modal.vue.d.ts +3 -0
  25. package/dist/lib/js/components/Modals/Modal/Modal.vue.d.ts +3 -0
  26. package/dist/lib/js/components/Outline/OutlineItem/OutlineItem.vue.d.ts +3 -0
  27. package/dist/lib/js/components/Pagination/Pagination.vue.d.ts +3 -0
  28. package/dist/lib/js/components/ProgressBar/ProgressBar.vue.d.ts +3 -0
  29. package/dist/lib/js/components/ProgressDonutChart/ProgressDonutChart.vue.d.ts +3 -0
  30. package/dist/lib/js/components/RichList/RichListItem/RichListItem.vue.d.ts +3 -0
  31. package/dist/lib/js/components/SelectList/SelectList.vue.d.ts +3 -4
  32. package/dist/lib/js/components/SelectList/SelectListItem/SelectListItem.vue.d.ts +3 -264
  33. package/dist/lib/js/components/SelectList/SelectListItemDivider/SelectListItemDivider.vue.d.ts +3 -8
  34. package/dist/lib/js/components/SelectList/SelectListItemTile/SelectListItemTile.vue.d.ts +6 -2
  35. package/dist/lib/js/components/SelectionTile/SelectionTile.vue.d.ts +5 -2
  36. package/dist/lib/js/components/Statuses/AccessStatus/AccessStatus.vue.d.ts +3 -0
  37. package/dist/lib/js/components/Statuses/BlockadeStatus/BlockadeStatus.vue.d.ts +3 -0
  38. package/dist/lib/js/components/SurveyQuestions/SurveyQuestionOpenEnded/SurveyQuestionOpenEnded.vue.d.ts +3 -0
  39. package/dist/lib/js/components/SurveyQuestions/SurveyQuestionScale/SurveyQuestionScale.vue.d.ts +3 -0
  40. package/dist/lib/js/components/Switch/Switch.vue.d.ts +3 -0
  41. package/dist/lib/js/components/Tile/Tile.consts.d.ts +3 -0
  42. package/dist/lib/js/components/Tile/Tile.sb.shared.d.ts +3 -0
  43. package/dist/lib/js/components/Tile/Tile.shared.d.ts +8 -3
  44. package/dist/lib/js/components/Tile/Tile.vue.d.ts +9 -2
  45. package/dist/lib/js/components/Toggles/ToggleButton/ToggleButton.vue.d.ts +3 -0
  46. package/dist/lib/js/icons/fontawesome.d.ts +3 -0
  47. package/dist/lib/js/index.d.ts +58 -0
  48. package/dist/tools/importers/helpers/modifiers.d.ts +9 -0
  49. package/docs/166.463f1d4f.iframe.bundle.js +2 -0
  50. package/docs/{39.bfc720d8.iframe.bundle.js → 39.0fa13ab1.iframe.bundle.js} +2 -2
  51. package/docs/iframe.html +1 -1
  52. package/docs/index.html +1 -1
  53. package/docs/main.ec4e5d4f1933fc03f588.manager.bundle.js +1 -0
  54. package/docs/main.f33ff81a.iframe.bundle.js +2 -0
  55. package/docs/main.f33ff81a.iframe.bundle.js.LICENSE.txt +1 -0
  56. package/docs/project.json +1 -1
  57. package/docs/{runtime~main.b2826aa6.iframe.bundle.js → runtime~main.c8f2837a.iframe.bundle.js} +1 -1
  58. package/lib/js/components/DatePickers/DatePicker/DatePicker.consts.ts +33 -0
  59. package/lib/js/components/DatePickers/DatePicker/DatePicker.stories.ts +138 -0
  60. package/lib/js/components/DatePickers/DatePicker/DatePicker.vue +333 -0
  61. package/lib/js/components/DatePickers/DatePicker/index.ts +5 -0
  62. package/lib/js/components/DatePickers/DatePickerBox/DatePickerBox.vue +291 -0
  63. package/lib/js/components/DatePickers/DatePickerBox/index.ts +3 -0
  64. package/lib/js/components/Headers/OverlayHeader/OverlayHeader.stories.ts +1 -1
  65. package/lib/js/components/Headers/OverlayHeader/OverlayHeader.vue +11 -4
  66. package/lib/js/components/Tile/Tile.consts.ts +6 -0
  67. package/lib/js/components/Tile/Tile.sb.shared.ts +2 -0
  68. package/lib/js/components/Tile/Tile.shared.ts +8 -4
  69. package/lib/js/components/Tile/Tile.vue +10 -0
  70. package/lib/js/icons/fontawesome.ts +6 -0
  71. package/lib/js/index.ts +58 -0
  72. package/package.json +7 -3
  73. package/docs/531.90dff866.iframe.bundle.js +0 -2
  74. package/docs/main.115da493.iframe.bundle.js +0 -1
  75. package/docs/main.44a93c1fb278828c899f.manager.bundle.js +0 -1
  76. /package/docs/{531.90dff866.iframe.bundle.js.LICENSE.txt → 166.463f1d4f.iframe.bundle.js.LICENSE.txt} +0 -0
  77. /package/docs/{39.bfc720d8.iframe.bundle.js.LICENSE.txt → 39.0fa13ab1.iframe.bundle.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
package/docs/project.json CHANGED
@@ -1 +1 @@
1
- {"generatedAt":1720449439347,"builder":{"name":"webpack5"},"hasCustomBabel":false,"hasCustomWebpack":true,"hasStaticDirs":false,"hasStorybookEslint":true,"refCount":0,"metaFramework":{"name":"vue-cli","packageName":"@vue/cli-service","version":"5.0.8"},"packageManager":{"type":"yarn","version":"1.22.22"},"storybookVersion":"6.5.13","language":"typescript","storybookPackages":{"@storybook/builder-webpack5":{"version":"6.5.13"},"@storybook/manager-webpack5":{"version":"6.5.13"},"@storybook/vue3":{"version":"6.5.13"},"eslint-plugin-storybook":{"version":"0.6.6"}},"framework":{"name":"vue3"},"addons":{"@storybook/addon-actions":{"version":"6.5.16"},"@storybook/addon-docs":{"version":"6.5.15"},"@storybook/addon-controls":{"version":"6.5.15"},"@storybook/addon-storysource":{"version":"6.5.15"},"@storybook/addon-viewport":{"version":"6.5.15"},"storybook-addon-designs":{"version":"6.3.1"}}}
1
+ {"generatedAt":1721980686635,"builder":{"name":"webpack5"},"hasCustomBabel":false,"hasCustomWebpack":true,"hasStaticDirs":false,"hasStorybookEslint":true,"refCount":0,"metaFramework":{"name":"vue-cli","packageName":"@vue/cli-service","version":"5.0.8"},"packageManager":{"type":"yarn","version":"1.22.22"},"storybookVersion":"6.5.13","language":"typescript","storybookPackages":{"@storybook/builder-webpack5":{"version":"6.5.13"},"@storybook/manager-webpack5":{"version":"6.5.13"},"@storybook/vue3":{"version":"6.5.13"},"eslint-plugin-storybook":{"version":"0.6.6"}},"framework":{"name":"vue3"},"addons":{"@storybook/addon-actions":{"version":"6.5.16"},"@storybook/addon-docs":{"version":"6.5.15"},"@storybook/addon-controls":{"version":"6.5.15"},"@storybook/addon-storysource":{"version":"6.5.15"},"@storybook/addon-viewport":{"version":"6.5.15"},"storybook-addon-designs":{"version":"6.3.1"}}}
@@ -1 +1 @@
1
- (()=>{"use strict";var deferred,leafPrototypes,getProto,inProgress,__webpack_modules__={},__webpack_module_cache__={};function __webpack_require__(moduleId){var cachedModule=__webpack_module_cache__[moduleId];if(void 0!==cachedModule)return cachedModule.exports;var module=__webpack_module_cache__[moduleId]={id:moduleId,loaded:!1,exports:{}};return __webpack_modules__[moduleId].call(module.exports,module,module.exports,__webpack_require__),module.loaded=!0,module.exports}__webpack_require__.m=__webpack_modules__,deferred=[],__webpack_require__.O=(result,chunkIds,fn,priority)=>{if(!chunkIds){var notFulfilled=1/0;for(i=0;i<deferred.length;i++){for(var[chunkIds,fn,priority]=deferred[i],fulfilled=!0,j=0;j<chunkIds.length;j++)(!1&priority||notFulfilled>=priority)&&Object.keys(__webpack_require__.O).every((key=>__webpack_require__.O[key](chunkIds[j])))?chunkIds.splice(j--,1):(fulfilled=!1,priority<notFulfilled&&(notFulfilled=priority));if(fulfilled){deferred.splice(i--,1);var r=fn();void 0!==r&&(result=r)}}return result}priority=priority||0;for(var i=deferred.length;i>0&&deferred[i-1][2]>priority;i--)deferred[i]=deferred[i-1];deferred[i]=[chunkIds,fn,priority]},__webpack_require__.n=module=>{var getter=module&&module.__esModule?()=>module.default:()=>module;return __webpack_require__.d(getter,{a:getter}),getter},getProto=Object.getPrototypeOf?obj=>Object.getPrototypeOf(obj):obj=>obj.__proto__,__webpack_require__.t=function(value,mode){if(1&mode&&(value=this(value)),8&mode)return value;if("object"==typeof value&&value){if(4&mode&&value.__esModule)return value;if(16&mode&&"function"==typeof value.then)return value}var ns=Object.create(null);__webpack_require__.r(ns);var def={};leafPrototypes=leafPrototypes||[null,getProto({}),getProto([]),getProto(getProto)];for(var current=2&mode&&value;"object"==typeof current&&!~leafPrototypes.indexOf(current);current=getProto(current))Object.getOwnPropertyNames(current).forEach((key=>def[key]=()=>value[key]));return def.default=()=>value,__webpack_require__.d(ns,def),ns},__webpack_require__.d=(exports,definition)=>{for(var key in definition)__webpack_require__.o(definition,key)&&!__webpack_require__.o(exports,key)&&Object.defineProperty(exports,key,{enumerable:!0,get:definition[key]})},__webpack_require__.f={},__webpack_require__.e=chunkId=>Promise.all(Object.keys(__webpack_require__.f).reduce(((promises,key)=>(__webpack_require__.f[key](chunkId,promises),promises)),[])),__webpack_require__.u=chunkId=>chunkId+"."+{39:"bfc720d8",247:"6eaf240e",286:"23828fb3",594:"bb1a9f64",651:"3a01b956",690:"46a1e07a",701:"691b9947",935:"19d3d944",962:"ec348c19"}[chunkId]+".iframe.bundle.js",__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.hmd=module=>((module=Object.create(module)).children||(module.children=[]),Object.defineProperty(module,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+module.id)}}),module),__webpack_require__.o=(obj,prop)=>Object.prototype.hasOwnProperty.call(obj,prop),inProgress={},__webpack_require__.l=(url,done,key,chunkId)=>{if(inProgress[url])inProgress[url].push(done);else{var script,needAttach;if(void 0!==key)for(var scripts=document.getElementsByTagName("script"),i=0;i<scripts.length;i++){var s=scripts[i];if(s.getAttribute("src")==url||s.getAttribute("data-webpack")=="@bethinkpl/design-system:"+key){script=s;break}}script||(needAttach=!0,(script=document.createElement("script")).charset="utf-8",script.timeout=120,__webpack_require__.nc&&script.setAttribute("nonce",__webpack_require__.nc),script.setAttribute("data-webpack","@bethinkpl/design-system:"+key),script.src=url),inProgress[url]=[done];var onScriptComplete=(prev,event)=>{script.onerror=script.onload=null,clearTimeout(timeout);var doneFns=inProgress[url];if(delete inProgress[url],script.parentNode&&script.parentNode.removeChild(script),doneFns&&doneFns.forEach((fn=>fn(event))),prev)return prev(event)},timeout=setTimeout(onScriptComplete.bind(null,void 0,{type:"timeout",target:script}),12e4);script.onerror=onScriptComplete.bind(null,script.onerror),script.onload=onScriptComplete.bind(null,script.onload),needAttach&&document.head.appendChild(script)}},__webpack_require__.r=exports=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(exports,"__esModule",{value:!0})},__webpack_require__.nmd=module=>(module.paths=[],module.children||(module.children=[]),module),__webpack_require__.p="",(()=>{var installedChunks={303:0};__webpack_require__.f.j=(chunkId,promises)=>{var installedChunkData=__webpack_require__.o(installedChunks,chunkId)?installedChunks[chunkId]:void 0;if(0!==installedChunkData)if(installedChunkData)promises.push(installedChunkData[2]);else if(303!=chunkId){var promise=new Promise(((resolve,reject)=>installedChunkData=installedChunks[chunkId]=[resolve,reject]));promises.push(installedChunkData[2]=promise);var url=__webpack_require__.p+__webpack_require__.u(chunkId),error=new Error;__webpack_require__.l(url,(event=>{if(__webpack_require__.o(installedChunks,chunkId)&&(0!==(installedChunkData=installedChunks[chunkId])&&(installedChunks[chunkId]=void 0),installedChunkData)){var errorType=event&&("load"===event.type?"missing":event.type),realSrc=event&&event.target&&event.target.src;error.message="Loading chunk "+chunkId+" failed.\n("+errorType+": "+realSrc+")",error.name="ChunkLoadError",error.type=errorType,error.request=realSrc,installedChunkData[1](error)}}),"chunk-"+chunkId,chunkId)}else installedChunks[chunkId]=0},__webpack_require__.O.j=chunkId=>0===installedChunks[chunkId];var webpackJsonpCallback=(parentChunkLoadingFunction,data)=>{var moduleId,chunkId,[chunkIds,moreModules,runtime]=data,i=0;if(chunkIds.some((id=>0!==installedChunks[id]))){for(moduleId in moreModules)__webpack_require__.o(moreModules,moduleId)&&(__webpack_require__.m[moduleId]=moreModules[moduleId]);if(runtime)var result=runtime(__webpack_require__)}for(parentChunkLoadingFunction&&parentChunkLoadingFunction(data);i<chunkIds.length;i++)chunkId=chunkIds[i],__webpack_require__.o(installedChunks,chunkId)&&installedChunks[chunkId]&&installedChunks[chunkId][0](),installedChunks[chunkId]=0;return __webpack_require__.O(result)},chunkLoadingGlobal=self.webpackChunk_bethinkpl_design_system=self.webpackChunk_bethinkpl_design_system||[];chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null,0)),chunkLoadingGlobal.push=webpackJsonpCallback.bind(null,chunkLoadingGlobal.push.bind(chunkLoadingGlobal))})(),__webpack_require__.nc=void 0})();
1
+ (()=>{"use strict";var deferred,leafPrototypes,getProto,inProgress,__webpack_modules__={},__webpack_module_cache__={};function __webpack_require__(moduleId){var cachedModule=__webpack_module_cache__[moduleId];if(void 0!==cachedModule)return cachedModule.exports;var module=__webpack_module_cache__[moduleId]={id:moduleId,loaded:!1,exports:{}};return __webpack_modules__[moduleId].call(module.exports,module,module.exports,__webpack_require__),module.loaded=!0,module.exports}__webpack_require__.m=__webpack_modules__,deferred=[],__webpack_require__.O=(result,chunkIds,fn,priority)=>{if(!chunkIds){var notFulfilled=1/0;for(i=0;i<deferred.length;i++){for(var[chunkIds,fn,priority]=deferred[i],fulfilled=!0,j=0;j<chunkIds.length;j++)(!1&priority||notFulfilled>=priority)&&Object.keys(__webpack_require__.O).every((key=>__webpack_require__.O[key](chunkIds[j])))?chunkIds.splice(j--,1):(fulfilled=!1,priority<notFulfilled&&(notFulfilled=priority));if(fulfilled){deferred.splice(i--,1);var r=fn();void 0!==r&&(result=r)}}return result}priority=priority||0;for(var i=deferred.length;i>0&&deferred[i-1][2]>priority;i--)deferred[i]=deferred[i-1];deferred[i]=[chunkIds,fn,priority]},__webpack_require__.n=module=>{var getter=module&&module.__esModule?()=>module.default:()=>module;return __webpack_require__.d(getter,{a:getter}),getter},getProto=Object.getPrototypeOf?obj=>Object.getPrototypeOf(obj):obj=>obj.__proto__,__webpack_require__.t=function(value,mode){if(1&mode&&(value=this(value)),8&mode)return value;if("object"==typeof value&&value){if(4&mode&&value.__esModule)return value;if(16&mode&&"function"==typeof value.then)return value}var ns=Object.create(null);__webpack_require__.r(ns);var def={};leafPrototypes=leafPrototypes||[null,getProto({}),getProto([]),getProto(getProto)];for(var current=2&mode&&value;"object"==typeof current&&!~leafPrototypes.indexOf(current);current=getProto(current))Object.getOwnPropertyNames(current).forEach((key=>def[key]=()=>value[key]));return def.default=()=>value,__webpack_require__.d(ns,def),ns},__webpack_require__.d=(exports,definition)=>{for(var key in definition)__webpack_require__.o(definition,key)&&!__webpack_require__.o(exports,key)&&Object.defineProperty(exports,key,{enumerable:!0,get:definition[key]})},__webpack_require__.f={},__webpack_require__.e=chunkId=>Promise.all(Object.keys(__webpack_require__.f).reduce(((promises,key)=>(__webpack_require__.f[key](chunkId,promises),promises)),[])),__webpack_require__.u=chunkId=>chunkId+"."+{39:"0fa13ab1",247:"6eaf240e",286:"23828fb3",594:"bb1a9f64",651:"3a01b956",690:"46a1e07a",701:"691b9947",935:"19d3d944",962:"ec348c19"}[chunkId]+".iframe.bundle.js",__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.hmd=module=>((module=Object.create(module)).children||(module.children=[]),Object.defineProperty(module,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+module.id)}}),module),__webpack_require__.o=(obj,prop)=>Object.prototype.hasOwnProperty.call(obj,prop),inProgress={},__webpack_require__.l=(url,done,key,chunkId)=>{if(inProgress[url])inProgress[url].push(done);else{var script,needAttach;if(void 0!==key)for(var scripts=document.getElementsByTagName("script"),i=0;i<scripts.length;i++){var s=scripts[i];if(s.getAttribute("src")==url||s.getAttribute("data-webpack")=="@bethinkpl/design-system:"+key){script=s;break}}script||(needAttach=!0,(script=document.createElement("script")).charset="utf-8",script.timeout=120,__webpack_require__.nc&&script.setAttribute("nonce",__webpack_require__.nc),script.setAttribute("data-webpack","@bethinkpl/design-system:"+key),script.src=url),inProgress[url]=[done];var onScriptComplete=(prev,event)=>{script.onerror=script.onload=null,clearTimeout(timeout);var doneFns=inProgress[url];if(delete inProgress[url],script.parentNode&&script.parentNode.removeChild(script),doneFns&&doneFns.forEach((fn=>fn(event))),prev)return prev(event)},timeout=setTimeout(onScriptComplete.bind(null,void 0,{type:"timeout",target:script}),12e4);script.onerror=onScriptComplete.bind(null,script.onerror),script.onload=onScriptComplete.bind(null,script.onload),needAttach&&document.head.appendChild(script)}},__webpack_require__.r=exports=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(exports,"__esModule",{value:!0})},__webpack_require__.nmd=module=>(module.paths=[],module.children||(module.children=[]),module),__webpack_require__.p="",(()=>{var installedChunks={303:0};__webpack_require__.f.j=(chunkId,promises)=>{var installedChunkData=__webpack_require__.o(installedChunks,chunkId)?installedChunks[chunkId]:void 0;if(0!==installedChunkData)if(installedChunkData)promises.push(installedChunkData[2]);else if(303!=chunkId){var promise=new Promise(((resolve,reject)=>installedChunkData=installedChunks[chunkId]=[resolve,reject]));promises.push(installedChunkData[2]=promise);var url=__webpack_require__.p+__webpack_require__.u(chunkId),error=new Error;__webpack_require__.l(url,(event=>{if(__webpack_require__.o(installedChunks,chunkId)&&(0!==(installedChunkData=installedChunks[chunkId])&&(installedChunks[chunkId]=void 0),installedChunkData)){var errorType=event&&("load"===event.type?"missing":event.type),realSrc=event&&event.target&&event.target.src;error.message="Loading chunk "+chunkId+" failed.\n("+errorType+": "+realSrc+")",error.name="ChunkLoadError",error.type=errorType,error.request=realSrc,installedChunkData[1](error)}}),"chunk-"+chunkId,chunkId)}else installedChunks[chunkId]=0},__webpack_require__.O.j=chunkId=>0===installedChunks[chunkId];var webpackJsonpCallback=(parentChunkLoadingFunction,data)=>{var moduleId,chunkId,[chunkIds,moreModules,runtime]=data,i=0;if(chunkIds.some((id=>0!==installedChunks[id]))){for(moduleId in moreModules)__webpack_require__.o(moreModules,moduleId)&&(__webpack_require__.m[moduleId]=moreModules[moduleId]);if(runtime)var result=runtime(__webpack_require__)}for(parentChunkLoadingFunction&&parentChunkLoadingFunction(data);i<chunkIds.length;i++)chunkId=chunkIds[i],__webpack_require__.o(installedChunks,chunkId)&&installedChunks[chunkId]&&installedChunks[chunkId][0](),installedChunks[chunkId]=0;return __webpack_require__.O(result)},chunkLoadingGlobal=self.webpackChunk_bethinkpl_design_system=self.webpackChunk_bethinkpl_design_system||[];chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null,0)),chunkLoadingGlobal.push=webpackJsonpCallback.bind(null,chunkLoadingGlobal.push.bind(chunkLoadingGlobal))})(),__webpack_require__.nc=void 0})();
@@ -0,0 +1,33 @@
1
+ import { Value } from '../../../utils/type.utils';
2
+
3
+ export const DATE_PICKER_COLORS = {
4
+ NEUTRAL: 'neutral',
5
+ WARNING: 'warning',
6
+ };
7
+
8
+ export type DatePickerColors = Value<typeof DATE_PICKER_COLORS>;
9
+
10
+ export const DATE_PICKER_STATES = {
11
+ DEFAULT: 'default',
12
+ DISABLED: 'disabled',
13
+ LOADING: 'loading',
14
+ };
15
+
16
+ export type DatePickerStates = Value<typeof DATE_PICKER_STATES>;
17
+
18
+ export const DATE_PICKER_CALENDAR_POSITIONS = {
19
+ TOP: 'top',
20
+ TOP_LEFT: 'top-left',
21
+ TOP_RIGHT: 'top-right',
22
+ BOTTOM: 'bottom',
23
+ BOTTOM_LEFT: 'bottom-left',
24
+ BOTTOM_RIGHT: 'bottom-right',
25
+ };
26
+
27
+ export type DatePickerCalendarPositions = Value<typeof DATE_PICKER_CALENDAR_POSITIONS>;
28
+ export const DATE_PICKER_TRIGGER_TYPES = {
29
+ BOX: 'box',
30
+ TILE: 'tile',
31
+ };
32
+
33
+ export type DatePickerTriggerTypes = Value<typeof DATE_PICKER_TRIGGER_TYPES>;
@@ -0,0 +1,138 @@
1
+ import DatePicker from './DatePicker.vue';
2
+ import {
3
+ DATE_PICKER_CALENDAR_POSITIONS,
4
+ DATE_PICKER_COLORS,
5
+ DATE_PICKER_STATES,
6
+ DATE_PICKER_TRIGGER_TYPES,
7
+ } from './DatePicker.consts';
8
+ import { Args, ArgTypes, Meta, StoryFn } from '@storybook/vue3';
9
+ import { ICONS } from '../../Icons/Icon';
10
+ import DsSwitch from '../../Switch';
11
+
12
+ export default {
13
+ title: 'Components/DatePickers/DatePicker',
14
+ component: DatePicker,
15
+ } as Meta<typeof DatePicker>;
16
+
17
+ const StoryTemplate: StoryFn<typeof DatePicker> = (args, { updateArgs }) => ({
18
+ components: { DatePicker, DsSwitch },
19
+ setup() {
20
+ return {
21
+ ...args,
22
+ };
23
+ },
24
+ data() {
25
+ return {
26
+ ICONS: Object.freeze(ICONS),
27
+ };
28
+ },
29
+ methods: {
30
+ updateDate(date: Date) {
31
+ updateArgs({
32
+ date: `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`,
33
+ });
34
+ },
35
+ },
36
+ computed: {
37
+ formattedDate() {
38
+ if (!this.date) {
39
+ return null;
40
+ }
41
+ return new Date(this.date);
42
+ },
43
+ formattedMinDate() {
44
+ if (!this.minDate) {
45
+ return null;
46
+ }
47
+ return new Date(this.minDate);
48
+ },
49
+ formattedMaxDate() {
50
+ if (!this.maxDate) {
51
+ return null;
52
+ }
53
+ return new Date(this.maxDate);
54
+ },
55
+ formattedDisableDates() {
56
+ if (!this.disableDates || !this.disableDates.length) {
57
+ return null;
58
+ }
59
+ return this.disableDates.map((date) => new Date(date));
60
+ },
61
+ },
62
+ template: `
63
+ <date-picker
64
+ :trigger-type="triggerType"
65
+ :is-interactive="isInteractive"
66
+ :placeholder="placeholder"
67
+ :date="formattedDate"
68
+ :label="label"
69
+ :is-label-uppercase="isLabelUppercase"
70
+ :icon="icon ? ICONS[icon] : null"
71
+ :is-icon-hidden-on-mobile="isIconHiddenOnMobile"
72
+ :calendar-position="calendarPosition"
73
+ :error-message="errorMessage"
74
+ :state="state"
75
+ :color="color"
76
+ :disable-dates="formattedDisableDates"
77
+ :min-date="formattedMinDate"
78
+ :max-date="formattedMaxDate"
79
+ @update:date="updateDate"
80
+ >
81
+ <ds-switch label-left="lewa" label-right="prawa" />
82
+ </date-picker>`,
83
+ });
84
+
85
+ export const Interactive = StoryTemplate.bind({});
86
+ const now = Date.now();
87
+ const oneDayMili = 86400000;
88
+ const args = {
89
+ triggerType: DATE_PICKER_TRIGGER_TYPES.TILE,
90
+ isInteractive: true,
91
+ placeholder: 'Wybierz datę',
92
+ date: '',
93
+ label: 'Date picker',
94
+ isLabelUppercase: false,
95
+ icon: 'FA_CALENDAR_DAY',
96
+ isIconHiddenOnMobile: false,
97
+ calendarPosition: DATE_PICKER_CALENDAR_POSITIONS.BOTTOM,
98
+ errorMessage: '',
99
+ state: DATE_PICKER_STATES.DEFAULT,
100
+ color: DATE_PICKER_COLORS.NEUTRAL,
101
+ disableDates: [new Date(now + oneDayMili * 2).toISOString().slice(0, 10)],
102
+ minDate: new Date(now).toISOString().slice(0, 10),
103
+ maxDate: new Date(now + oneDayMili * 30).toISOString().slice(0, 10),
104
+ } as Args;
105
+
106
+ const argTypes = {
107
+ triggerType: {
108
+ control: 'select',
109
+ options: Object.values(DATE_PICKER_TRIGGER_TYPES),
110
+ },
111
+ date: { control: 'text' },
112
+ icon: { control: 'select', options: [null, ...Object.keys(ICONS)] },
113
+ calendarPosition: {
114
+ control: 'select',
115
+ options: Object.values(DATE_PICKER_CALENDAR_POSITIONS),
116
+ },
117
+ state: {
118
+ control: 'select',
119
+ options: Object.values(DATE_PICKER_STATES),
120
+ },
121
+ color: {
122
+ control: 'select',
123
+ options: Object.values(DATE_PICKER_COLORS),
124
+ },
125
+ disableDates: {
126
+ control: 'array',
127
+ },
128
+ } as ArgTypes;
129
+
130
+ Interactive.argTypes = argTypes;
131
+ Interactive.args = args;
132
+
133
+ Interactive.parameters = {
134
+ design: {
135
+ type: 'figma',
136
+ url: 'https://www.figma.com/design/03ABNCSDYWYDmOPJOBGM5l/INI-153-Planowanie-pracy-z-lekcjami?node-id=245-162031&t=g08nj70xhT9BZTpu-4',
137
+ },
138
+ };
@@ -0,0 +1,333 @@
1
+ <template>
2
+ <div
3
+ class="ds-datePicker"
4
+ :class="{ '-ds-box': triggerType === DATE_PICKER_TRIGGER_TYPES.BOX }"
5
+ >
6
+ <template v-if="triggerType === DATE_PICKER_TRIGGER_TYPES.TILE">
7
+ <div class="ds-datePicker__labelWrapper">
8
+ <span
9
+ v-if="label"
10
+ class="ds-datePicker__label"
11
+ :class="{
12
+ '-ds-isUppercase': isLabelUppercase,
13
+ '-ds-disabled': state === DATE_PICKER_STATES.DISABLED,
14
+ }"
15
+ >{{ label }}</span
16
+ >
17
+ <template v-if="$slots.default">
18
+ <slot />
19
+ </template>
20
+ </div>
21
+ <ds-tile
22
+ class="ds-datePicker__tile"
23
+ :text="text"
24
+ :interactive="isInteractive"
25
+ :color="color"
26
+ :state="state"
27
+ :icon-right="tileIcon"
28
+ :is-icon-right-hidden-on-mobile="isIconHiddenOnMobile"
29
+ :eyebrow-text="eyebrowText"
30
+ @click="toggle"
31
+ />
32
+ </template>
33
+ <date-picker-box
34
+ v-else
35
+ :is-interactive="isInteractive"
36
+ :placeholder="placeholder"
37
+ :date="date"
38
+ :icon="icon"
39
+ :is-icon-hidden-on-mobile="isIconHiddenOnMobile"
40
+ :state="state"
41
+ :color="color"
42
+ :eyebrow-text="eyebrowText"
43
+ :is-open="isOpen"
44
+ @click="toggle"
45
+ />
46
+
47
+ <span v-if="errorMessage" class="ds-datePicker__errorMessage"> {{ errorMessage }} </span>
48
+ <input ref="flatpickrInput" class="ds-datePicker__hiddenInput" />
49
+ </div>
50
+ </template>
51
+
52
+ <style lang="scss">
53
+ @import 'flatpickr/dist/flatpickr';
54
+ </style>
55
+
56
+ <style lang="scss" scoped>
57
+ @import '../../../../styles/settings/typography/tokens';
58
+ @import '../../../../styles/settings/colors/tokens';
59
+ @import '../../../../styles/settings/spacings';
60
+
61
+ .ds-datePicker {
62
+ $self: &;
63
+
64
+ display: flex;
65
+ flex-direction: column;
66
+ row-gap: $space-4xs;
67
+
68
+ &.-ds-box {
69
+ display: inline-flex;
70
+ }
71
+
72
+ &__hiddenInput {
73
+ display: none;
74
+ }
75
+
76
+ &__labelWrapper {
77
+ align-items: flex-end;
78
+ display: flex;
79
+ justify-content: space-between;
80
+ padding-bottom: $space-2xs;
81
+ }
82
+
83
+ &__label {
84
+ @include label-l-default-bold;
85
+
86
+ color: $color-neutral-text-strong;
87
+
88
+ &.-ds-isUppercase {
89
+ @include label-m-extensive-bold-uppercase;
90
+
91
+ color: $color-neutral-text;
92
+ }
93
+
94
+ &.-ds-disabled {
95
+ color: $color-neutral-text-strong-disabled;
96
+
97
+ &.-ds-isUppercase {
98
+ color: $color-neutral-text-disabled;
99
+ }
100
+ }
101
+ }
102
+
103
+ &__tile {
104
+ min-height: 56px;
105
+
106
+ /* Prevent text select */
107
+ -webkit-user-select: none; /* Safari */
108
+ user-select: none;
109
+ }
110
+
111
+ &__errorMessage {
112
+ @include info-s-default-regular;
113
+
114
+ color: $color-danger-text;
115
+ }
116
+ }
117
+ </style>
118
+
119
+ <script lang="ts">
120
+ import { PropType, toRaw } from 'vue';
121
+
122
+ import DsTile from '../../Tile';
123
+ import { ICONS } from '../../Icons/Icon';
124
+ import DatePickerBox from '../DatePickerBox';
125
+
126
+ import {
127
+ DATE_PICKER_CALENDAR_POSITIONS,
128
+ DATE_PICKER_COLORS,
129
+ DATE_PICKER_STATES,
130
+ DATE_PICKER_TRIGGER_TYPES,
131
+ DatePickerCalendarPositions,
132
+ DatePickerColors,
133
+ DatePickerStates,
134
+ DatePickerTriggerTypes,
135
+ } from './DatePicker.consts';
136
+ import { capitalizeFirstLetter } from '../../../../../tools/importers/helpers/modifiers';
137
+
138
+ let flatpickr: Function | null = null;
139
+
140
+ const FLATPICKR_POSITIONS = {
141
+ [DATE_PICKER_CALENDAR_POSITIONS.BOTTOM_LEFT]: 'below left',
142
+ [DATE_PICKER_CALENDAR_POSITIONS.BOTTOM_RIGHT]: 'below right',
143
+ [DATE_PICKER_CALENDAR_POSITIONS.BOTTOM]: 'below',
144
+ [DATE_PICKER_CALENDAR_POSITIONS.TOP_LEFT]: 'above left',
145
+ [DATE_PICKER_CALENDAR_POSITIONS.TOP_RIGHT]: 'above right',
146
+ [DATE_PICKER_CALENDAR_POSITIONS.TOP]: 'above',
147
+ };
148
+
149
+ export default {
150
+ name: 'DatePicker',
151
+ components: {
152
+ DatePickerBox,
153
+ DsTile,
154
+ },
155
+ props: {
156
+ triggerType: {
157
+ type: String as PropType<DatePickerTriggerTypes>,
158
+ default: DATE_PICKER_TRIGGER_TYPES.TILE,
159
+ },
160
+ isInteractive: {
161
+ type: Boolean,
162
+ default: true,
163
+ },
164
+ placeholder: {
165
+ type: String,
166
+ default: 'Wybierz datę',
167
+ },
168
+ date: {
169
+ type: Date,
170
+ default: null,
171
+ },
172
+ label: {
173
+ type: String,
174
+ default: '',
175
+ },
176
+ isLabelUppercase: {
177
+ type: Boolean,
178
+ default: false,
179
+ },
180
+ icon: {
181
+ type: [Object, null],
182
+ default: ICONS.FA_CALENDAR_DAY,
183
+ validate: (icon) => icon === null || Object.values(ICONS).includes(toRaw(icon)),
184
+ },
185
+ isIconHiddenOnMobile: {
186
+ type: Boolean,
187
+ default: false,
188
+ },
189
+ calendarPosition: {
190
+ type: String as PropType<DatePickerCalendarPositions>,
191
+ default: DATE_PICKER_CALENDAR_POSITIONS.BOTTOM_LEFT,
192
+ },
193
+ errorMessage: {
194
+ type: String,
195
+ default: '',
196
+ },
197
+ state: {
198
+ type: (String as PropType<DatePickerStates>) || null,
199
+ default: DATE_PICKER_STATES.DEFAULT,
200
+ },
201
+ color: {
202
+ type: String as PropType<DatePickerColors>,
203
+ default: DATE_PICKER_COLORS.NEUTRAL,
204
+ },
205
+ disableDates: {
206
+ type: Array,
207
+ default: () => [],
208
+ },
209
+ minDate: {
210
+ type: Date,
211
+ default: null,
212
+ },
213
+ maxDate: {
214
+ type: Date,
215
+ default: null,
216
+ },
217
+ },
218
+ emits: { 'update:date': () => true },
219
+ data() {
220
+ return {
221
+ datePicker: null,
222
+ isOpen: false,
223
+ DATE_PICKER_STATES: Object.freeze(DATE_PICKER_STATES),
224
+ DATE_PICKER_TRIGGER_TYPES: Object.freeze(DATE_PICKER_TRIGGER_TYPES),
225
+ };
226
+ },
227
+ computed: {
228
+ isDatePickerEnabled() {
229
+ return this.isInteractive && this.state === DATE_PICKER_STATES.DEFAULT;
230
+ },
231
+ eyebrowText() {
232
+ if (!this.date || this.state === DATE_PICKER_STATES.LOADING) {
233
+ return '';
234
+ }
235
+
236
+ return capitalizeFirstLetter(
237
+ this.date.toLocaleDateString(undefined, {
238
+ dateStyle: undefined,
239
+ timeStyle: undefined,
240
+ weekday: 'long',
241
+ }),
242
+ );
243
+ },
244
+ text() {
245
+ if (this.state === DATE_PICKER_STATES.LOADING || !this.date) {
246
+ return this.placeholder;
247
+ }
248
+
249
+ return this.date.toLocaleDateString(undefined, {
250
+ dateStyle: 'medium',
251
+ timeStyle: undefined,
252
+ });
253
+ },
254
+ tileIcon() {
255
+ if (!this.icon) {
256
+ return null;
257
+ }
258
+
259
+ return this.isOpen ? ICONS.FA_CHEVRON_UP : this.icon;
260
+ },
261
+ flatpickrConfigString() {
262
+ return [
263
+ this.maxDate,
264
+ this.minDate,
265
+ this.calendarPosition,
266
+ this.date,
267
+ ...this.disableDates,
268
+ ].concat('|');
269
+ },
270
+ },
271
+ watch: {
272
+ flatpickrConfigString: {
273
+ handler() {
274
+ this.datePicker?.set({
275
+ position: FLATPICKR_POSITIONS[this.calendarPosition],
276
+ defaultDate: this.date,
277
+ disable: this.disableDates.filter((date) => date instanceof Date),
278
+ minDate: this.minDate,
279
+ maxDate: this.maxDate,
280
+ });
281
+ },
282
+ flush: 'post' as const,
283
+ },
284
+ },
285
+ async mounted() {
286
+ if (this.isDatePickerEnabled && !this.datePicker) {
287
+ if (!flatpickr) {
288
+ const { default: flatpickrFunction } = await import('flatpickr');
289
+
290
+ flatpickr = flatpickrFunction;
291
+ }
292
+
293
+ const { Polish } = await import('flatpickr/dist/l10n/pl.js');
294
+
295
+ this.datePicker = flatpickr(this.$refs.flatpickrInput, {
296
+ locale: Polish,
297
+ positionElement: this.$el,
298
+ ignoredFocusElements: [this.$el],
299
+ appendTo: this.$el,
300
+ position: FLATPICKR_POSITIONS[this.calendarPosition],
301
+ defaultDate: this.date,
302
+ disable: this.disableDates.filter((date) => date instanceof Date),
303
+ minDate: this.minDate,
304
+ maxDate: this.maxDate,
305
+ onClose: [
306
+ () => {
307
+ this.isOpen = false;
308
+ },
309
+ ],
310
+ onOpen: [
311
+ () => {
312
+ this.isOpen = true;
313
+ },
314
+ ],
315
+ onChange: (event) => {
316
+ this.$emit('update:date', event[0]);
317
+ },
318
+ });
319
+ }
320
+ },
321
+ unmounted() {
322
+ this.datePicker?.destroy();
323
+ this.datePicker = null;
324
+ },
325
+ methods: {
326
+ toggle() {
327
+ if (this.isDatePickerEnabled && this.datePicker) {
328
+ this.datePicker.toggle();
329
+ }
330
+ },
331
+ },
332
+ };
333
+ </script>
@@ -0,0 +1,5 @@
1
+ import DatePicker from './DatePicker.vue';
2
+
3
+ export default DatePicker;
4
+
5
+ export * from './DatePicker.consts';