vueless 0.0.2 → 0.0.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/_readme/README.md +5 -75
- package/_readme/UNotify.md +1 -1
- package/_readme/UTopLoader.md +2 -2
- package/_readme/customization.md +347 -0
- package/_readme/installation.md +139 -0
- package/_readme/storybook-pages/Customisation.mdx +6 -0
- package/_readme/storybook-pages/Installation.mdx +7 -0
- package/composable.ui/index.js +341 -30
- package/library.vue-tailwind-3/index.js +0 -5
- package/library.web-types-gen/lib/build.js +35 -9
- package/library.web-types-gen/lib/config.js +10 -4
- package/package.json +37 -4
- package/plugin.vite/index.js +59 -0
- package/plugin.vite/services/iconResolver.service.js +291 -0
- package/plugin.vite/services/svgLoader.service.js +76 -0
- package/plugin.vite/services/tailwindSafelist.service.js +197 -0
- package/plugin.vite/services/unpluginComponentsResolver.js +172 -0
- package/service.storybook/index.js +53 -80
- package/service.tailwind/index.js +112 -0
- package/service.ui/index.js +69 -50
- package/ui.button/Docs.mdx +16 -0
- package/ui.button/composables/attrs.composable.js +41 -0
- package/ui.button/configs/default.config.js +164 -0
- package/ui.button/constants/index.js +5 -0
- package/ui.button/index.stories.js +8 -7
- package/ui.button/index.vue +116 -981
- package/ui.button-link/Docs.mdx +16 -0
- package/ui.button-link/composables/attrs.composable.js +99 -0
- package/ui.button-link/configs/default.config.js +80 -0
- package/ui.button-link/constants/index.js +5 -0
- package/ui.button-link/index.stories.js +56 -19
- package/ui.button-link/index.vue +178 -493
- package/ui.button-toggle/Docs.mdx +16 -0
- package/ui.button-toggle/composables/attrs.composable.js +16 -0
- package/ui.button-toggle/configs/default.config.js +12 -0
- package/ui.button-toggle/constants/index.js +7 -0
- package/{ui.button-group → ui.button-toggle}/index.stories.js +79 -28
- package/ui.button-toggle/index.vue +128 -0
- package/ui.button-toggle-item/Docs.mdx +16 -0
- package/ui.button-toggle-item/composables/attrs.composable.js +53 -0
- package/ui.button-toggle-item/configs/default.config.js +58 -0
- package/ui.button-toggle-item/constants/index.js +5 -0
- package/{ui.button-group-item → ui.button-toggle-item}/index.stories.js +16 -13
- package/ui.button-toggle-item/index.vue +147 -0
- package/ui.container-accordion/composables/attrs.composable.js +45 -0
- package/ui.container-accordion/configs/default.config.js +32 -0
- package/ui.container-accordion/constants/index.js +5 -0
- package/ui.container-accordion/index.stories.js +3 -2
- package/ui.container-accordion/index.vue +71 -143
- package/ui.container-card/Docs.mdx +16 -0
- package/ui.container-card/composable/attrs.composable.js +56 -0
- package/ui.container-card/configs/default.config.js +31 -0
- package/ui.container-card/constants/index.js +5 -0
- package/ui.container-card/index.stories.js +51 -9
- package/ui.container-card/index.vue +108 -169
- package/ui.container-divider/Docs.mdx +16 -0
- package/ui.container-divider/composables/attrs.composable.js +65 -0
- package/ui.container-divider/configs/default.config.js +79 -0
- package/ui.container-divider/constants/index.js +5 -0
- package/ui.container-divider/index.stories.js +41 -8
- package/ui.container-divider/index.vue +126 -189
- package/ui.container-group/Docs.mdx +16 -0
- package/ui.container-group/composables/attrs.composable.js +44 -0
- package/ui.container-group/configs/default.config.js +29 -0
- package/ui.container-group/constants/index.js +5 -0
- package/ui.container-group/index.stories.js +7 -6
- package/ui.container-group/index.vue +76 -142
- package/ui.container-groups/Docs.mdx +16 -0
- package/ui.container-groups/composables/attrs.composable.js +12 -0
- package/ui.container-groups/configs/default.config.js +3 -0
- package/ui.container-groups/index.stories.js +4 -3
- package/ui.container-groups/index.vue +26 -11
- package/ui.container-modal/Docs.mdx +16 -0
- package/ui.container-modal/composables/attrs.composable.js +90 -0
- package/ui.container-modal/configs/default.config.js +69 -0
- package/ui.container-modal/constants/index.js +5 -0
- package/ui.container-modal/index.stories.js +8 -7
- package/ui.container-modal/index.vue +289 -370
- package/ui.container-modal-confirm/Docs.mdx +16 -0
- package/ui.container-modal-confirm/composable/attrs.composable.js +19 -0
- package/ui.container-modal-confirm/configs/default.config.js +12 -0
- package/ui.container-modal-confirm/constants/index.js +5 -0
- package/ui.container-modal-confirm/index.stories.js +66 -7
- package/ui.container-modal-confirm/index.vue +126 -116
- package/ui.container-page/Docs.mdx +16 -0
- package/ui.container-page/composables/attrs.composable.js +96 -0
- package/ui.container-page/configs/default.config.js +71 -0
- package/ui.container-page/constants/index.js +5 -0
- package/ui.container-page/index.stories.js +7 -34
- package/ui.container-page/index.vue +193 -408
- package/ui.container-row/Docs.mdx +16 -0
- package/ui.container-row/composables/attrs.composable.js +23 -0
- package/ui.container-row/configs/default.config.js +14 -0
- package/ui.container-row/constants/index.js +5 -0
- package/ui.container-row/index.stories.js +10 -0
- package/ui.container-row/index.vue +32 -39
- package/ui.data-list/composables/attrs.composable.js +45 -0
- package/ui.data-list/configs/default.config.js +32 -0
- package/ui.data-list/constants/index.js +5 -0
- package/ui.data-list/index.stories.js +1 -0
- package/ui.data-list/index.vue +156 -265
- package/ui.data-table/Docs.mdx +16 -0
- package/ui.data-table/composables/attrs.composable.js +188 -0
- package/ui.data-table/configs/default.config.js +82 -0
- package/ui.data-table/constants/index.js +5 -0
- package/ui.data-table/index.stories.js +73 -43
- package/ui.data-table/index.vue +600 -961
- package/ui.data-table/services/table.service.js +15 -0
- package/ui.data-table-cell/composables/attrs.composable.js +24 -0
- package/ui.data-table-cell/configs/default.config.js +19 -0
- package/ui.data-table-cell/constants/index.js +5 -0
- package/ui.data-table-cell/index.vue +44 -0
- package/ui.dropdown-badge/Docs.mdx +16 -0
- package/ui.dropdown-badge/composables/attrs.composable.js +63 -0
- package/ui.dropdown-badge/configs/default.config.js +34 -0
- package/ui.dropdown-badge/constants/index.js +5 -0
- package/{ui.dropdown-tag → ui.dropdown-badge}/index.stories.js +26 -25
- package/ui.dropdown-badge/index.vue +233 -0
- package/ui.dropdown-button/Docs.mdx +16 -0
- package/ui.dropdown-button/composables/attrs.composable.js +63 -0
- package/ui.dropdown-button/configs/default.config.js +37 -0
- package/ui.dropdown-button/constants/index.js +14 -0
- package/ui.dropdown-button/index.stories.js +12 -11
- package/ui.dropdown-button/index.vue +231 -291
- package/ui.dropdown-item/Docs.mdx +16 -0
- package/ui.dropdown-item/composables/attrs.composable.js +13 -0
- package/ui.dropdown-item/configs/default.config.js +16 -0
- package/ui.dropdown-item/index.stories.js +2 -1
- package/ui.dropdown-item/index.vue +38 -55
- package/ui.dropdown-link/Docs.mdx +16 -0
- package/ui.dropdown-link/composables/attrs.composable.js +65 -0
- package/ui.dropdown-link/configs/default.config.js +37 -0
- package/ui.dropdown-link/constants/index.js +5 -0
- package/ui.dropdown-link/index.stories.js +11 -11
- package/ui.dropdown-link/index.vue +217 -287
- package/ui.dropdown-list/Docs.mdx +16 -0
- package/ui.dropdown-list/composables/attrs.composable.js +91 -0
- package/ui.dropdown-list/composables/usePointer.js +77 -0
- package/ui.dropdown-list/configs/default.config.js +68 -0
- package/ui.dropdown-list/constants/index.js +5 -0
- package/ui.dropdown-list/index.stories.js +33 -3
- package/ui.dropdown-list/index.vue +271 -112
- package/ui.form-calendar/Docs.mdx +52 -0
- package/ui.form-calendar/components/DayView.vue +230 -0
- package/ui.form-calendar/components/MonthView.vue +114 -0
- package/ui.form-calendar/components/YearView.vue +118 -0
- package/ui.form-calendar/composables/attrs.composable.js +87 -0
- package/ui.form-calendar/configs/default.config.js +115 -0
- package/ui.form-calendar/constants/index.js +69 -0
- package/ui.form-calendar/index.stories.js +50 -0
- package/ui.form-calendar/index.vue +628 -0
- package/ui.form-calendar/services/calendar.service.js +201 -0
- package/ui.form-calendar/services/date.service.js +121 -0
- package/ui.form-calendar/services/formatting.service.js +180 -0
- package/ui.form-checkbox/Docs.mdx +16 -0
- package/ui.form-checkbox/composables/attrs.composable.js +57 -0
- package/ui.form-checkbox/configs/default.config.js +69 -0
- package/ui.form-checkbox/constants/index.js +5 -0
- package/ui.form-checkbox/index.stories.js +75 -26
- package/ui.form-checkbox/index.vue +201 -261
- package/ui.form-checkbox-group/Docs.mdx +16 -0
- package/ui.form-checkbox-group/composables/attrs.composable.js +17 -0
- package/ui.form-checkbox-group/configs/default.config.js +5 -0
- package/ui.form-checkbox-group/constants/index.js +5 -0
- package/ui.form-checkbox-group/index.stories.js +7 -1
- package/ui.form-checkbox-group/index.vue +104 -177
- package/ui.form-checkbox-multi-state/Docs.mdx +16 -0
- package/ui.form-checkbox-multi-state/composables/attrs.composable.js +24 -0
- package/ui.form-checkbox-multi-state/configs/default.config.js +9 -0
- package/ui.form-checkbox-multi-state/constants/index.js +5 -0
- package/ui.form-checkbox-multi-state/index.stories.js +8 -11
- package/ui.form-checkbox-multi-state/index.vue +109 -220
- package/ui.form-color-picker/composables/attrs.composable.js +44 -0
- package/ui.form-color-picker/configs/default.config.js +52 -0
- package/ui.form-color-picker/constants/index.js +5 -0
- package/ui.form-color-picker/index.stories.js +63 -0
- package/ui.form-color-picker/index.vue +147 -329
- package/ui.form-date-picker/Docs.mdx +52 -0
- package/ui.form-date-picker/composables/attrs.composable.js +22 -0
- package/ui.form-date-picker/configs/default.config.js +27 -0
- package/ui.form-date-picker/constants/index.js +5 -0
- package/ui.form-date-picker/index.stories.js +21 -8
- package/ui.form-date-picker/index.vue +205 -802
- package/ui.form-input/Docs.mdx +16 -0
- package/ui.form-input/composables/attrs.composable.js +66 -0
- package/ui.form-input/configs/default.config.js +72 -0
- package/{constant.component-names → ui.form-input/constants}/index.js +1 -2
- package/ui.form-input/index.stories.js +46 -12
- package/ui.form-input/index.vue +320 -459
- package/ui.form-input-file/composables/attrs.composable.js +82 -0
- package/ui.form-input-file/configs/default.config.js +51 -0
- package/ui.form-input-file/constants/index.js +5 -0
- package/ui.form-input-file/index.stories.js +3 -2
- package/ui.form-input-file/index.vue +332 -498
- package/ui.form-input-money/Docs.mdx +16 -0
- package/ui.form-input-money/composables/attrs.composable.js +13 -0
- package/ui.form-input-money/composables/useFormatCurrency.js +82 -0
- package/ui.form-input-money/configs/default.config.js +16 -0
- package/ui.form-input-money/constants/index.js +5 -0
- package/ui.form-input-money/index.stories.js +71 -43
- package/ui.form-input-money/index.vue +241 -237
- package/ui.form-input-money/services/format.service.js +72 -0
- package/ui.form-input-number/Docs.mdx +16 -0
- package/ui.form-input-number/composables/attrs.composable.js +47 -0
- package/ui.form-input-number/configs/default.config.js +33 -0
- package/ui.form-input-number/constants/index.js +5 -0
- package/ui.form-input-number/index.stories.js +73 -3
- package/ui.form-input-number/index.vue +138 -106
- package/ui.form-input-rating/composables/attrs.composable.js +34 -0
- package/ui.form-input-rating/configs/default.config.js +25 -0
- package/ui.form-input-rating/constants/index.js +5 -0
- package/ui.form-input-rating/index.stories.js +3 -2
- package/ui.form-input-rating/index.vue +152 -209
- package/ui.form-input-search/composables/attrs.composable.js +21 -0
- package/ui.form-input-search/configs/default.config.js +20 -0
- package/ui.form-input-search/constants/index.js +5 -0
- package/ui.form-input-search/index.stories.js +8 -4
- package/ui.form-input-search/index.vue +192 -189
- package/ui.form-label/Docs.mdx +16 -0
- package/ui.form-label/composables/attrs.composable.js +65 -0
- package/ui.form-label/configs/default.config.js +95 -0
- package/ui.form-label/constants/index.js +13 -0
- package/ui.form-label/index.stories.js +107 -0
- package/ui.form-label/index.vue +170 -0
- package/ui.form-radio/Docs.mdx +16 -0
- package/ui.form-radio/composables/attrs.composable.js +34 -0
- package/ui.form-radio/configs/default.config.js +47 -0
- package/ui.form-radio/constants/index.js +5 -0
- package/ui.form-radio/index.stories.js +12 -10
- package/ui.form-radio/index.vue +141 -148
- package/ui.form-radio-card/Docs.mdx +16 -0
- package/ui.form-radio-card/composables/attrs.composable.js +30 -0
- package/ui.form-radio-card/configs/default.config.js +25 -0
- package/ui.form-radio-card/constants/index.js +5 -0
- package/ui.form-radio-card/index.stories.js +19 -10
- package/ui.form-radio-card/index.vue +132 -146
- package/ui.form-radio-card/services/variant.service.js +15 -0
- package/ui.form-radio-group/Docs.mdx +16 -0
- package/ui.form-radio-group/composables/attrs.composable.js +27 -0
- package/ui.form-radio-group/configs/default.config.js +18 -0
- package/ui.form-radio-group/constants/index.js +5 -0
- package/ui.form-radio-group/index.stories.js +1 -0
- package/ui.form-radio-group/index.vue +114 -85
- package/ui.form-select/Docs.mdx +16 -0
- package/ui.form-select/composables/attrs.composable.js +172 -0
- package/ui.form-select/configs/default.config.js +131 -0
- package/ui.form-select/constants/index.js +19 -0
- package/ui.form-select/index.stories.js +194 -38
- package/ui.form-select/index.vue +638 -910
- package/ui.form-select/services/select.service.js +98 -0
- package/ui.form-switch/composables/attrs.composable.js +77 -0
- package/ui.form-switch/configs/default.config.js +72 -0
- package/ui.form-switch/constants/index.js +5 -0
- package/ui.form-switch/index.stories.js +9 -42
- package/ui.form-switch/index.vue +177 -632
- package/ui.form-switch/services/variant.service.js +31 -0
- package/ui.form-textarea/Docs.mdx +16 -0
- package/ui.form-textarea/composables/attrs.composable.js +52 -0
- package/ui.form-textarea/configs/default.config.js +68 -0
- package/ui.form-textarea/constants/index.js +5 -0
- package/ui.form-textarea/index.stories.js +47 -5
- package/ui.form-textarea/index.vue +238 -353
- package/ui.image-avatar/composables/attrs.composable.js +34 -0
- package/ui.image-avatar/configs/default.config.js +42 -0
- package/ui.image-avatar/constants/index.js +5 -0
- package/ui.image-avatar/index.stories.js +7 -6
- package/ui.image-avatar/index.vue +94 -226
- package/ui.image-icon/Docs.mdx +16 -0
- package/ui.image-icon/composables/attrs.composable.js +65 -0
- package/ui.image-icon/configs/default.config.js +90 -0
- package/ui.image-icon/constants/index.js +5 -0
- package/ui.image-icon/index.stories.js +16 -35
- package/ui.image-icon/index.vue +165 -453
- package/ui.image-logo/composables/attrs.composable.js +41 -0
- package/ui.image-logo/configs/default.config.js +38 -0
- package/ui.image-logo/constants/index.js +5 -0
- package/ui.image-logo/index.stories.js +8 -8
- package/ui.image-logo/index.vue +80 -166
- package/ui.navigation-pagination/composables/attrs.composable.js +41 -0
- package/ui.navigation-pagination/configs/default.config.js +24 -0
- package/ui.navigation-pagination/constants/index.js +8 -0
- package/ui.navigation-pagination/index.stories.js +23 -6
- package/ui.navigation-pagination/index.vue +262 -102
- package/ui.navigation-stepper/composables/attrs.composable.js +25 -0
- package/ui.navigation-stepper/configs/default.config.js +13 -0
- package/ui.navigation-stepper/constants/index.js +5 -0
- package/ui.navigation-stepper/index.stories.js +1 -0
- package/ui.navigation-stepper/index.vue +87 -88
- package/ui.navigation-tab/composables/attrs.composable.js +30 -0
- package/ui.navigation-tab/configs/default.config.js +22 -0
- package/ui.navigation-tab/constants/index.js +5 -0
- package/ui.navigation-tab/index.stories.js +7 -11
- package/ui.navigation-tab/index.vue +58 -85
- package/ui.navigation-tabs/composables/attrs.composable.js +24 -0
- package/ui.navigation-tabs/configs/default.config.js +14 -0
- package/ui.navigation-tabs/constants/index.js +5 -0
- package/ui.navigation-tabs/index.stories.js +7 -11
- package/ui.navigation-tabs/index.vue +68 -88
- package/ui.other-dot/composables/attrs.composable.js +32 -0
- package/ui.other-dot/configs/default.config.js +21 -0
- package/ui.other-dot/constants/index.js +5 -0
- package/ui.other-dot/index.stories.js +5 -5
- package/ui.other-dot/index.vue +41 -89
- package/ui.other-loader/composables/attrs.composable.js +51 -0
- package/ui.other-loader/configs/default.config.js +47 -0
- package/ui.other-loader/constants/index.js +5 -0
- package/ui.other-loader/index.stories.js +14 -13
- package/ui.other-loader/index.vue +58 -107
- package/ui.text-alert/composables/attrs.composable.js +48 -0
- package/ui.text-alert/configs/default.config.js +51 -0
- package/ui.text-alert/constatns/index.js +5 -0
- package/ui.text-alert/index.stories.js +39 -6
- package/ui.text-alert/index.vue +95 -210
- package/ui.text-badge/Docs.mdx +16 -0
- package/ui.text-badge/composables/attrs.composable.js +49 -0
- package/ui.text-badge/configs/default.config.js +51 -0
- package/ui.text-badge/constants/index.js +5 -0
- package/ui.text-badge/index.stories.js +190 -0
- package/ui.text-badge/index.vue +120 -0
- package/ui.text-block/composables/attrs.composable.js +31 -0
- package/ui.text-block/configs/default.config.js +35 -0
- package/ui.text-block/constatns/index.js +5 -0
- package/ui.text-block/index.stories.js +2 -1
- package/ui.text-block/index.vue +55 -116
- package/ui.text-empty/Docs.mdx +16 -0
- package/ui.text-empty/composables/attrs.composable.js +43 -0
- package/ui.text-empty/configs/default.config.js +4 -2
- package/ui.text-empty/constants/index.js +5 -0
- package/ui.text-empty/index.stories.js +3 -3
- package/ui.text-empty/index.vue +13 -14
- package/ui.text-file/composables/attrs.composable.js +37 -0
- package/ui.text-file/configs/default.config.js +15 -0
- package/ui.text-file/index.stories.js +2 -1
- package/ui.text-file/index.vue +63 -72
- package/ui.text-files/composables/attrs.composable.js +19 -0
- package/ui.text-files/configs/default.config.js +9 -0
- package/ui.text-files/constants/index.js +5 -0
- package/ui.text-files/index.stories.js +1 -0
- package/ui.text-files/index.vue +73 -50
- package/ui.text-header/Docs.mdx +16 -0
- package/ui.text-header/composables/attrs.composable.js +34 -0
- package/ui.text-header/configs/default.config.js +45 -0
- package/ui.text-header/constants/index.js +5 -0
- package/ui.text-header/index.stories.js +34 -38
- package/ui.text-header/index.vue +67 -221
- package/ui.text-money/Docs.mdx +16 -0
- package/ui.text-money/composables/attrs.composable.js +65 -0
- package/ui.text-money/configs/default.config.js +69 -0
- package/ui.text-money/constants/index.js +7 -0
- package/ui.text-money/index.stories.js +24 -22
- package/ui.text-money/index.vue +187 -506
- package/ui.text-money/services/money.services.js +24 -0
- package/_readme/layoutAdmin.md +0 -703
- package/_readme/layoutApp.md +0 -153
- package/_readme/layoutAuth.md +0 -190
- package/config.rollup-plugin-visualizer/index.js +0 -11
- package/config.unplugin-vue-i18n/index.js +0 -9
- package/config.vite-plugin-pwa/index.js +0 -132
- package/config.vite-svg-loader/index.js +0 -22
- package/index.js +0 -151
- package/layout-ui.loader/index.vue +0 -61
- package/layout-ui.loader/store/index.js +0 -17
- package/layout-ui.loader-top/components/TopProgress.vue +0 -277
- package/layout-ui.loader-top/index.vue +0 -218
- package/layout-ui.loader-top/store/index.js +0 -55
- package/layout-ui.notify/index.stories.js +0 -102
- package/layout-ui.notify/index.vue +0 -254
- package/layout-ui.viewport/index.vue +0 -78
- package/layout-ui.viewport/store/index.js +0 -47
- package/layout.admin/AsideBlock.vue +0 -534
- package/layout.admin/AsideInfoBlock.vue +0 -85
- package/layout.admin/BrandBlock.vue +0 -380
- package/layout.admin/ChangeThemeModal.vue +0 -179
- package/layout.admin/HelperBlock.vue +0 -132
- package/layout.admin/MainMenu.vue +0 -234
- package/layout.admin/MainSubMenu.vue +0 -196
- package/layout.admin/MobileMainMenu.vue +0 -197
- package/layout.admin/MobileSubBlock.vue +0 -171
- package/layout.admin/RightInfoBlock.vue +0 -166
- package/layout.admin/UserBlock.vue +0 -290
- package/layout.admin/images/abstract-01.jpg +0 -0
- package/layout.admin/images/abstract-01_preview.jpg +0 -0
- package/layout.admin/index.vue +0 -544
- package/layout.admin/mixins/index.js +0 -54
- package/layout.admin/store/index.js +0 -167
- package/layout.auth/FeaturesBlock.vue +0 -57
- package/layout.auth/FooterMenu.vue +0 -90
- package/layout.auth/LanguageSwitcher.vue +0 -90
- package/layout.auth/index.vue +0 -237
- package/library.vue-tailwind-3/t-input.js +0 -68
- package/library.vue-tailwind-3/t-modal.js +0 -409
- package/library.vue-tailwind-3/t-pagination.js +0 -309
- package/library.vue-tailwind-3/t-table.js +0 -362
- package/library.vue-tailwind-3/t-textarea.js +0 -84
- package/resolver.unplugin-vue-components/index.js +0 -94
- package/service.api/index.js +0 -275
- package/service.data/index.js +0 -75
- package/service.date/index.js +0 -222
- package/service.i18n/index.js +0 -145
- package/service.idb-keyval/index.js +0 -37
- package/service.jwt/index.js +0 -27
- package/service.money/index.js +0 -86
- package/service.notify/index.js +0 -87
- package/service.redirect/index.js +0 -20
- package/service.validation/index.js +0 -55
- package/service.worker/index.js +0 -26
- package/ui.button-expand/index.stories.js +0 -44
- package/ui.button-expand/index.vue +0 -22
- package/ui.button-expand-item/index.stories.js +0 -69
- package/ui.button-expand-item/index.vue +0 -154
- package/ui.button-group/index.vue +0 -165
- package/ui.button-group-item/index.vue +0 -283
- package/ui.container-modal/components/ArrowLink.vue +0 -87
- package/ui.container-page/components/ArrowLink.vue +0 -87
- package/ui.data-table/components/DateSeparator.vue +0 -99
- package/ui.data-table/components/EmptyTableMsg.vue +0 -46
- package/ui.data-table/components/TableCheckbox.vue +0 -109
- package/ui.dropdown-tag/index.vue +0 -285
- package/ui.form-date-picker-range/components/VariantButton.vue +0 -136
- package/ui.form-date-picker-range/components/VariantInput.vue +0 -101
- package/ui.form-date-picker-range/index.stories.js +0 -93
- package/ui.form-date-picker-range/index.vue +0 -1537
- package/ui.form-date-picker-range/services/dateRange.service.js +0 -178
- package/ui.form-input-money/_components/ConvertibleInput.vue +0 -773
- package/ui.form-input-money/_components/RangeInput.vue +0 -356
- package/ui.form-input-money/_components/SingleInput.vue +0 -378
- package/ui.form-select-multi/index.stories.js +0 -131
- package/ui.form-select-multi/index.vue +0 -882
- package/ui.image-icon/cli.mjs +0 -159
- package/ui.text-empty/services/variant.service.js +0 -22
- package/ui.text-field/index.stories.js +0 -60
- package/ui.text-field/index.vue +0 -109
- package/ui.text-tag/index.stories.js +0 -90
- package/ui.text-tag/index.vue +0 -178
- package/web-types.json +0 -6320
- /package/ui.form-input/{text-security-disc.woff → assets/fonts/text-security-disc.woff} +0 -0
package/composable.ui/index.js
CHANGED
|
@@ -1,66 +1,328 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
ref,
|
|
3
|
+
watchEffect,
|
|
4
|
+
getCurrentInstance,
|
|
5
|
+
toValue,
|
|
6
|
+
useAttrs,
|
|
7
|
+
Comment,
|
|
8
|
+
Text,
|
|
9
|
+
Fragment,
|
|
10
|
+
} from "vue";
|
|
11
|
+
import { cx, globalComponentConfig, strategy } from "vueless/service.ui";
|
|
3
12
|
|
|
4
|
-
|
|
13
|
+
const strategyType = {
|
|
14
|
+
merge: "merge",
|
|
15
|
+
replace: "replace",
|
|
16
|
+
overwrite: "overwrite",
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
/**
|
|
5
20
|
Merging component configs in a given sequence (bigger number = bigger priority):
|
|
6
21
|
1. Default component config
|
|
7
22
|
2. Custom global component config (/vueless.config.js)
|
|
8
|
-
3. Component config (:
|
|
23
|
+
3. Component config (:config="{...}" props)
|
|
9
24
|
4. Component classes (class="...")
|
|
10
|
-
*/
|
|
11
|
-
export function useUI(defaultConfig = {},
|
|
25
|
+
*/
|
|
26
|
+
export default function useUI(defaultConfig = {}, propsConfigGetter = null, topLevelClassKey) {
|
|
12
27
|
const { name: componentName } = getCurrentInstance().type;
|
|
13
28
|
const globalConfig = globalComponentConfig[componentName];
|
|
14
29
|
|
|
30
|
+
const isStrategyValid = strategy && Object.values(strategyType).includes(strategy);
|
|
31
|
+
const vuelessStrategy = isStrategyValid ? strategy : strategyType.merge;
|
|
32
|
+
|
|
33
|
+
const [firstClassKey] = Object.keys(defaultConfig);
|
|
34
|
+
const config = ref({});
|
|
15
35
|
const attrs = useAttrs();
|
|
16
36
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
37
|
+
watchEffect(() => {
|
|
38
|
+
const propsConfig = propsConfigGetter && propsConfigGetter();
|
|
39
|
+
|
|
40
|
+
const mergedConfig = getMergedConfig({
|
|
41
|
+
defaultConfig,
|
|
42
|
+
globalConfig,
|
|
43
|
+
propsConfig,
|
|
44
|
+
vuelessStrategy,
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
config.value = mergeClassesIntoConfig(mergedConfig, topLevelClassKey || firstClassKey, attrs);
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
function getAttrs(configKey, options) {
|
|
51
|
+
const cvaClasses = options?.classes || "";
|
|
52
|
+
const isComponent = options?.isComponent;
|
|
53
|
+
|
|
54
|
+
const attrs = useAttrs();
|
|
55
|
+
const isDev = import.meta.env.DEV;
|
|
56
|
+
const vuelessAttrs = ref({});
|
|
57
|
+
|
|
58
|
+
const commonAttrs = {
|
|
59
|
+
...attrs,
|
|
60
|
+
component: isDev && (attrs.component || componentName || null),
|
|
61
|
+
"config-key": isDev && (attrs["config-key"] || configKey || null),
|
|
62
|
+
"child-component": isDev && attrs.component ? componentName : null,
|
|
63
|
+
"child-config-key": isDev && attrs.component ? configKey : null,
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
watchEffect(() => {
|
|
67
|
+
const configKeyValue = config.value[configKey];
|
|
68
|
+
const isObject = typeof configKeyValue === "object";
|
|
69
|
+
|
|
70
|
+
const configAttrs = {
|
|
71
|
+
config: configKeyValue,
|
|
72
|
+
...configKeyValue?.defaultVariants,
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const isTopLevelClassKey = configKey === (topLevelClassKey || firstClassKey);
|
|
20
76
|
|
|
21
|
-
|
|
77
|
+
const attrClass = isTopLevelClassKey && !isComponent ? attrs.class : "";
|
|
78
|
+
const configKeyClass = isObject ? configKeyValue.base : configKeyValue;
|
|
79
|
+
|
|
80
|
+
vuelessAttrs.value = {
|
|
81
|
+
...commonAttrs,
|
|
82
|
+
class: cx([configKeyClass, toValue(cvaClasses), attrClass]),
|
|
83
|
+
...((isObject && configAttrs) || {}),
|
|
84
|
+
};
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
return vuelessAttrs;
|
|
88
|
+
}
|
|
22
89
|
|
|
23
90
|
return {
|
|
24
|
-
|
|
91
|
+
config,
|
|
92
|
+
getAttrs,
|
|
93
|
+
setColor,
|
|
25
94
|
hasSlotContent,
|
|
26
95
|
};
|
|
27
96
|
}
|
|
28
97
|
|
|
29
|
-
|
|
30
|
-
|
|
98
|
+
/**
|
|
99
|
+
Get merged config based on config merging strategy.
|
|
100
|
+
@param {Object} defaultConfig
|
|
101
|
+
@param {Object} globalConfig
|
|
102
|
+
@param {Object} propsConfig
|
|
103
|
+
@param {string} vuelessStrategy - vueless top level merge strategy.
|
|
104
|
+
|
|
105
|
+
@returns {Object}
|
|
31
106
|
*/
|
|
32
|
-
function
|
|
107
|
+
function getMergedConfig({ defaultConfig, globalConfig, propsConfig, vuelessStrategy }) {
|
|
108
|
+
defaultConfig = cloneDeep(defaultConfig);
|
|
109
|
+
|
|
110
|
+
const strategy =
|
|
111
|
+
!globalConfig && !propsConfig
|
|
112
|
+
? strategyType.merge
|
|
113
|
+
: propsConfig?.strategy || globalConfig?.strategy || vuelessStrategy;
|
|
114
|
+
|
|
115
|
+
if (strategy === strategyType.merge) {
|
|
116
|
+
return mergeConfigs({ defaultConfig, globalConfig, propsConfig });
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
if (strategy === strategyType.replace) {
|
|
120
|
+
return mergeConfigs({ defaultConfig, globalConfig, propsConfig, isReplace: true });
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
if (strategy === strategyType.overwrite) {
|
|
124
|
+
const isGlobalConfig = globalConfig && Object.keys(globalConfig).length;
|
|
125
|
+
const isPropsConfig = propsConfig && Object.keys(propsConfig).length;
|
|
126
|
+
|
|
127
|
+
return isPropsConfig ? propsConfig : isGlobalConfig ? globalConfig : defaultConfig;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
Recursively merge config objects with removing tailwind classes duplicates.
|
|
133
|
+
@param {Object} defaultConfig
|
|
134
|
+
@param {Object} globalConfig
|
|
135
|
+
@param {Object} propsConfig
|
|
136
|
+
@param {Object} config - final merged config.
|
|
137
|
+
@param {boolean} isReplace - enables class replacement instead of merge.
|
|
138
|
+
|
|
139
|
+
@returns {Object}
|
|
140
|
+
*/
|
|
141
|
+
function mergeConfigs({
|
|
142
|
+
defaultConfig,
|
|
143
|
+
globalConfig,
|
|
144
|
+
propsConfig,
|
|
145
|
+
config = {},
|
|
146
|
+
isReplace = false,
|
|
147
|
+
}) {
|
|
33
148
|
globalConfig = globalConfig || {};
|
|
34
149
|
propsConfig = propsConfig || {};
|
|
35
150
|
|
|
36
151
|
const isGlobalConfig = Object.keys(globalConfig).length;
|
|
37
152
|
const isPropsConfig = Object.keys(propsConfig).length;
|
|
38
153
|
|
|
39
|
-
|
|
154
|
+
// Add unique keys from defaultConfig to composedConfig
|
|
155
|
+
let composedConfig = cloneDeep(defaultConfig);
|
|
156
|
+
|
|
157
|
+
// Add unique keys from globalConfig to composedConfig
|
|
158
|
+
for (let key in globalConfig) {
|
|
159
|
+
if (!Object.keys(composedConfig).includes(key)) {
|
|
160
|
+
composedConfig[key] = globalConfig[key];
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// Add unique keys from propsConfig to composedConfig
|
|
165
|
+
for (let key in propsConfig) {
|
|
166
|
+
if (!Object.keys(composedConfig).includes(key)) {
|
|
167
|
+
composedConfig[key] = propsConfig[key];
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
for (let key in composedConfig) {
|
|
40
172
|
if (isGlobalConfig || isPropsConfig) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
173
|
+
if (key === "strategy") {
|
|
174
|
+
config[key] = propsConfig[key] || globalConfig[key] || defaultConfig[key];
|
|
175
|
+
} else if (key === "defaultVariants") {
|
|
176
|
+
config[key] = { ...defaultConfig[key], ...globalConfig[key], ...propsConfig[key] };
|
|
177
|
+
} else if (key === "compoundVariants") {
|
|
178
|
+
config[key] = mergeCompoundVariants({
|
|
179
|
+
defaultConfig: composedConfig,
|
|
180
|
+
globalConfig,
|
|
181
|
+
propsConfig,
|
|
182
|
+
isReplace,
|
|
183
|
+
key,
|
|
184
|
+
});
|
|
185
|
+
} else {
|
|
186
|
+
const isObjectComposedConfig = typeof composedConfig[key] === "object";
|
|
187
|
+
const isObjectGlobalConfig = typeof globalConfig[key] === "object";
|
|
188
|
+
const isObjectPropsConfig = typeof propsConfig[key] === "object";
|
|
189
|
+
|
|
190
|
+
const isObject = isObjectComposedConfig || isObjectGlobalConfig || isObjectPropsConfig;
|
|
191
|
+
const isEmpty = composedConfig[key] === null;
|
|
192
|
+
const isIconName = /^.*(iconName|IconName)$/.test(key);
|
|
193
|
+
const isI18n = key === "i18n";
|
|
194
|
+
|
|
195
|
+
config[key] =
|
|
196
|
+
isObject && !isEmpty && !isI18n
|
|
197
|
+
? mergeConfigs({
|
|
198
|
+
defaultConfig: stringToObject(composedConfig[key]),
|
|
199
|
+
globalConfig: stringToObject(globalConfig[key]),
|
|
200
|
+
propsConfig: stringToObject(propsConfig[key]),
|
|
201
|
+
config: stringToObject(composedConfig[key]),
|
|
202
|
+
isReplace,
|
|
203
|
+
})
|
|
204
|
+
: isReplace || isIconName || isI18n
|
|
205
|
+
? propsConfig[key] || globalConfig[key] || defaultConfig[key]
|
|
206
|
+
: cx([defaultConfig[key], globalConfig[key], propsConfig[key]]);
|
|
207
|
+
}
|
|
53
208
|
} else {
|
|
54
|
-
|
|
209
|
+
config[key] = composedConfig[key];
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
return config;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
Turn simplified nested component config to regular config.
|
|
218
|
+
@param {Object | String} value
|
|
219
|
+
@returns {Object}
|
|
220
|
+
*/
|
|
221
|
+
function stringToObject(value) {
|
|
222
|
+
return typeof value === "object" ? value : { base: value };
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
Merge CVA compound variants arrays.
|
|
227
|
+
@param {Object} defaultConfig
|
|
228
|
+
@param {Object} globalConfig
|
|
229
|
+
@param {Object} propsConfig
|
|
230
|
+
@param {string} key
|
|
231
|
+
@param {boolean} isReplace - enables class replacement instead of merge.
|
|
232
|
+
|
|
233
|
+
@returns {Array}
|
|
234
|
+
*/
|
|
235
|
+
function mergeCompoundVariants({ defaultConfig, globalConfig, propsConfig, key, isReplace }) {
|
|
236
|
+
if (
|
|
237
|
+
(globalConfig[key] && !Array.isArray(globalConfig[key])) ||
|
|
238
|
+
(propsConfig[key] && !Array.isArray(propsConfig[key])) ||
|
|
239
|
+
(defaultConfig[key] && !Array.isArray(defaultConfig[key]))
|
|
240
|
+
) {
|
|
241
|
+
// eslint-disable-next-line no-console
|
|
242
|
+
console.error("CompoundVariants should be an array.");
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
let globalConfigUniqueItems = cloneDeep(globalConfig[key] || []);
|
|
246
|
+
let propsConfigUniqueItems = cloneDeep(propsConfig[key] || []);
|
|
247
|
+
|
|
248
|
+
const config = defaultConfig[key].map((defaultConfigItem) => {
|
|
249
|
+
/**
|
|
250
|
+
Compare two objects by keys for match.
|
|
251
|
+
@param {Object} configItem
|
|
252
|
+
@returns {Boolean}
|
|
253
|
+
*/
|
|
254
|
+
function isSameItem(configItem) {
|
|
255
|
+
const hasConfigItemKeys = Object.keys(defaultConfigItem)
|
|
256
|
+
.map((key) => defaultConfigItem[key] === configItem[key] || key === "class")
|
|
257
|
+
.every((item) => !!item);
|
|
258
|
+
|
|
259
|
+
const hasDefaultConfigItemKeys = Object.keys(configItem)
|
|
260
|
+
.map((key) => defaultConfigItem[key] === configItem[key] || key === "class")
|
|
261
|
+
.every((item) => !!item);
|
|
262
|
+
|
|
263
|
+
return hasConfigItemKeys && hasDefaultConfigItemKeys;
|
|
55
264
|
}
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
Find the same compound variant item in custom config if exist.
|
|
268
|
+
@param {Object} config
|
|
269
|
+
@returns {Object|undefined}
|
|
270
|
+
*/
|
|
271
|
+
function findItem(config = []) {
|
|
272
|
+
const globalConfigUniqueItemIndex = globalConfigUniqueItems.findIndex(isSameItem);
|
|
273
|
+
const propsConfigUniqueItemIndex = propsConfigUniqueItems.findIndex(isSameItem);
|
|
274
|
+
|
|
275
|
+
if (~globalConfigUniqueItemIndex) {
|
|
276
|
+
globalConfigUniqueItems.splice(globalConfigUniqueItemIndex, 1);
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
if (~propsConfigUniqueItemIndex) {
|
|
280
|
+
propsConfigUniqueItems.splice(propsConfigUniqueItemIndex, 1);
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
return config.find(isSameItem);
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
const globalConfigItem = findItem(globalConfig[key]);
|
|
287
|
+
const propsConfigItem = findItem(propsConfig[key]);
|
|
288
|
+
|
|
289
|
+
return globalConfigItem || propsConfigItem
|
|
290
|
+
? {
|
|
291
|
+
...defaultConfigItem,
|
|
292
|
+
class: isReplace
|
|
293
|
+
? propsConfigItem?.class || globalConfigItem?.class || defaultConfigItem.class
|
|
294
|
+
: cx([defaultConfigItem.class, globalConfigItem?.class, propsConfigItem?.class]),
|
|
295
|
+
}
|
|
296
|
+
: defaultConfigItem;
|
|
297
|
+
});
|
|
298
|
+
|
|
299
|
+
return [...config, ...globalConfigUniqueItems, ...propsConfigUniqueItems];
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
Merge component classes from "class" attribute into final config.
|
|
304
|
+
@param {Object} config
|
|
305
|
+
@param {Object} attrs
|
|
306
|
+
@param {string} topLevelClassKey
|
|
307
|
+
|
|
308
|
+
@returns {Object}
|
|
309
|
+
*/
|
|
310
|
+
function mergeClassesIntoConfig(config, topLevelClassKey, attrs) {
|
|
311
|
+
if (typeof config[topLevelClassKey] === "object") {
|
|
312
|
+
config[topLevelClassKey].base = cx([config[topLevelClassKey]?.base, attrs.class]);
|
|
313
|
+
} else {
|
|
314
|
+
config[topLevelClassKey] = cx([config[topLevelClassKey], attrs.class]);
|
|
56
315
|
}
|
|
57
316
|
|
|
58
|
-
return
|
|
317
|
+
return config;
|
|
59
318
|
}
|
|
60
319
|
|
|
61
320
|
/**
|
|
62
321
|
Check if slot defined, and have a content.
|
|
63
|
-
@
|
|
322
|
+
@param slot
|
|
323
|
+
@param props
|
|
324
|
+
|
|
325
|
+
@returns {boolean}
|
|
64
326
|
*/
|
|
65
327
|
function hasSlotContent(slot, props = {}) {
|
|
66
328
|
const asArray = (arg) => (Array.isArray(arg) ? arg : arg != null ? [arg] : []);
|
|
@@ -79,3 +341,52 @@ function hasSlotContent(slot, props = {}) {
|
|
|
79
341
|
|
|
80
342
|
return !isVNodeEmpty(slot?.(props));
|
|
81
343
|
}
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
Deeply clone given object (same as lodash.cloneDeep).
|
|
347
|
+
@param {Object} entity
|
|
348
|
+
@param cache
|
|
349
|
+
|
|
350
|
+
@returns {Object}
|
|
351
|
+
*/
|
|
352
|
+
function cloneDeep(entity, cache = new WeakMap()) {
|
|
353
|
+
const referenceTypes = ["Array", "Object", "Map", "Set", "Date"];
|
|
354
|
+
const entityType = Object.prototype.toString.call(entity);
|
|
355
|
+
|
|
356
|
+
if (
|
|
357
|
+
!new RegExp(referenceTypes.join("|")).test(entityType) ||
|
|
358
|
+
entity instanceof WeakMap ||
|
|
359
|
+
entity instanceof WeakSet
|
|
360
|
+
) {
|
|
361
|
+
return entity;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
if (cache.has(entity)) {
|
|
365
|
+
return cache.get(entity);
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
const c = new entity.constructor();
|
|
369
|
+
|
|
370
|
+
if (entity instanceof Map) {
|
|
371
|
+
entity.forEach((value, key) => c.set(cloneDeep(key), cloneDeep(value)));
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
if (entity instanceof Set) {
|
|
375
|
+
entity.forEach((value) => c.add(cloneDeep(value)));
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
if (entity instanceof Date) {
|
|
379
|
+
return new Date(entity);
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
cache.set(entity, c);
|
|
383
|
+
|
|
384
|
+
return Object.assign(
|
|
385
|
+
c,
|
|
386
|
+
...Object.keys(entity).map((prop) => ({ [prop]: cloneDeep(entity[prop], cache) })),
|
|
387
|
+
);
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
function setColor(classes, color) {
|
|
391
|
+
return classes?.replaceAll("{color}", color);
|
|
392
|
+
}
|
|
@@ -4,9 +4,4 @@ export { default as TCard } from "./t-card";
|
|
|
4
4
|
export { default as TCheckbox } from "./t-checkbox";
|
|
5
5
|
export { default as TDatepicker } from "./TDatepicker/index";
|
|
6
6
|
export { default as TDropdown } from "./t-dropdown";
|
|
7
|
-
export { default as TInput } from "./t-input";
|
|
8
|
-
export { default as TModal } from "./t-modal";
|
|
9
|
-
export { default as TPagination } from "./t-pagination";
|
|
10
7
|
export { default as TRadio } from "./t-radio";
|
|
11
|
-
export { default as TTable } from "./t-table";
|
|
12
|
-
export { default as TTextarea } from "./t-textarea";
|
|
@@ -157,25 +157,48 @@ async function extractInformation(absolutePath, config) {
|
|
|
157
157
|
|
|
158
158
|
function getDefaultConfigJson(fileContents) {
|
|
159
159
|
const objectStartIndex = fileContents.indexOf("{");
|
|
160
|
-
const
|
|
160
|
+
const variablePattern = /([^:]+):\s*(?!true|false|undefined)([a-zA-Z_]\w*)/g;
|
|
161
|
+
let objectString = fileContents
|
|
162
|
+
.substring(objectStartIndex)
|
|
163
|
+
.replace("};", "}")
|
|
164
|
+
.replace(/undefined/g, '"undefined"')
|
|
165
|
+
.replace(variablePattern, (match, key) => key + ": {}");
|
|
161
166
|
|
|
162
167
|
return eval("(" + objectString + ")"); // Converting into JS object
|
|
163
168
|
}
|
|
164
169
|
|
|
165
170
|
function getGlobalConfigJson(fileContents, componentName) {
|
|
166
171
|
const startIndex = fileContents.indexOf(`${componentName}:`);
|
|
167
|
-
|
|
172
|
+
|
|
173
|
+
// find index of the last closing bracket
|
|
174
|
+
let endIndex = -1;
|
|
175
|
+
let braceCount = 0;
|
|
176
|
+
|
|
177
|
+
for (let i = startIndex; i < fileContents.length; i++) {
|
|
178
|
+
if (fileContents[i] === "{") {
|
|
179
|
+
braceCount++;
|
|
180
|
+
} else if (fileContents[i] === "}") {
|
|
181
|
+
braceCount--;
|
|
182
|
+
|
|
183
|
+
if (braceCount === 0) {
|
|
184
|
+
endIndex = i;
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
// Get component config raw string
|
|
168
191
|
const rawString = fileContents.slice(startIndex, endIndex);
|
|
169
192
|
|
|
170
193
|
// If the stings are present in config but commented - remove them
|
|
171
|
-
const
|
|
194
|
+
const stringWithoutComments = rawString.replace(/\/\/.*$/gm, "");
|
|
172
195
|
|
|
173
196
|
// Check if final JSON string is valid: TODO: find better solution
|
|
174
|
-
if (!
|
|
197
|
+
if (!stringWithoutComments.includes("}")) return {};
|
|
175
198
|
|
|
176
|
-
const jsonString = `{${
|
|
177
|
-
.replace(/'/g, '"')
|
|
178
|
-
.replace(/(\w+)\s
|
|
199
|
+
const jsonString = `{${stringWithoutComments}\n}}`
|
|
200
|
+
.replace(/[`']/g, '"')
|
|
201
|
+
.replace(/(\w+)\s*: /g, '"$1":')
|
|
179
202
|
.replace(/,\s*}/g, "}");
|
|
180
203
|
|
|
181
204
|
return JSON.parse(jsonString);
|
|
@@ -201,12 +224,15 @@ async function extractInformation(absolutePath, config) {
|
|
|
201
224
|
attributes: doc.props?.map((prop) => ({
|
|
202
225
|
name: prop.name,
|
|
203
226
|
required: prop.required,
|
|
204
|
-
description: prop.description,
|
|
227
|
+
description: prop.tags?.ignore ? "@ignore: " + prop.description : prop.description,
|
|
205
228
|
value: {
|
|
206
229
|
kind: "expression",
|
|
207
230
|
type: prop.values ? `'${prop.values.join("' | '")}'` : prop.type?.name ?? "any",
|
|
208
231
|
},
|
|
209
|
-
default:
|
|
232
|
+
default:
|
|
233
|
+
defaultValues && prop.name in defaultValues
|
|
234
|
+
? defaultValues[prop.name].toString()
|
|
235
|
+
: prop.defaultValue?.value.toString(),
|
|
210
236
|
})),
|
|
211
237
|
events: doc.events?.map((event) => ({
|
|
212
238
|
name: event.name,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import path from "path";
|
|
2
|
+
import fs from "fs";
|
|
3
3
|
import { readFile } from "fs/promises";
|
|
4
4
|
|
|
5
5
|
export async function extractConfig(cwd, watch = false, configFileFromCmd, pathArray = []) {
|
|
@@ -11,16 +11,22 @@ export async function extractConfig(cwd, watch = false, configFileFromCmd, pathA
|
|
|
11
11
|
const fileContent = await readFile(path.join(cwd, "package.json"), "utf-8");
|
|
12
12
|
const packageJson = JSON.parse(fileContent);
|
|
13
13
|
|
|
14
|
+
let additionalConfig = {};
|
|
15
|
+
|
|
16
|
+
if (fs.existsSync(configFilePath)) {
|
|
17
|
+
additionalConfig = await import(configFilePath);
|
|
18
|
+
}
|
|
19
|
+
|
|
14
20
|
return {
|
|
15
21
|
cwd,
|
|
16
22
|
watch,
|
|
17
23
|
componentsRoot: configFilePath ? path.dirname(configFilePath) : cwd,
|
|
18
|
-
components: componentsFromCmd || "src/**/*.vue",
|
|
24
|
+
components: componentsFromCmd || "(.vueless/**/*.vue|src/components/**/*.vue)",
|
|
19
25
|
outFile: outFileFromCmd || packageJson["web-types"] || "./web-types.json",
|
|
20
26
|
packageName: packageJson["name"],
|
|
21
27
|
packageVersion: packageJson["version"],
|
|
22
28
|
typesSyntax: "typescript",
|
|
23
29
|
descriptionMarkup: "markdown",
|
|
24
|
-
...
|
|
30
|
+
...additionalConfig,
|
|
25
31
|
};
|
|
26
32
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vueless",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"description": "Vue Styleless Component Framework",
|
|
5
|
+
"homepage": "https://github.com/vuelessjs/vueless#readme",
|
|
6
|
+
"author": "Johnny Grid",
|
|
7
|
+
"license": "MIT",
|
|
5
8
|
"main": "index.js",
|
|
6
9
|
"scripts": {
|
|
7
10
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
@@ -10,11 +13,41 @@
|
|
|
10
13
|
"type": "git",
|
|
11
14
|
"url": "git+https://github.com/vuelessjs/vueless.git"
|
|
12
15
|
},
|
|
13
|
-
"author": "Johnny Grid",
|
|
14
|
-
"license": "MIT",
|
|
15
16
|
"bugs": {
|
|
16
17
|
"url": "https://github.com/vuelessjs/vueless/issues"
|
|
17
18
|
},
|
|
18
|
-
"
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"@uppy/core": "^3.3.1",
|
|
21
|
+
"@uppy/drag-drop": "^3.0.2",
|
|
22
|
+
"@uppy/vue": "^1.0.2",
|
|
23
|
+
"cva": "^1.0.0-beta.1",
|
|
24
|
+
"lodash.clonedeep": "^4.5.0",
|
|
25
|
+
"lodash.debounce": "^4.0.8",
|
|
26
|
+
"lodash.get": "^4.4.2",
|
|
27
|
+
"lodash.isequal": "^4.5.0",
|
|
28
|
+
"lodash.merge": "^4.6.2",
|
|
29
|
+
"lodash.pick": "^4.4.0",
|
|
30
|
+
"lodash.range": "^3.2.0",
|
|
31
|
+
"tailwind-merge": "^2.1.0",
|
|
32
|
+
"vue-tippy": "^6.0.0-beta.0"
|
|
33
|
+
},
|
|
34
|
+
"devDependencies": {
|
|
35
|
+
"@material-symbols/svg-500": "^0.14.3",
|
|
36
|
+
"@storybook/addon-essentials": "^8.0.0",
|
|
37
|
+
"@storybook/addon-interactions": "^8.0.0",
|
|
38
|
+
"@storybook/addon-links": "^8.0.0",
|
|
39
|
+
"@storybook/blocks": "^8.0.0",
|
|
40
|
+
"@storybook/manager-api": "^8.0.0",
|
|
41
|
+
"@storybook/test": "^8.0.0",
|
|
42
|
+
"@storybook/theming": "^8.0.0",
|
|
43
|
+
"@storybook/vue3": "^8.0.0",
|
|
44
|
+
"@storybook/vue3-vite": "^8.0.0",
|
|
45
|
+
"@tailwindcss/forms": "^0.5.4",
|
|
46
|
+
"autoprefixer": "^10.4.5",
|
|
47
|
+
"prettier2": "npm:prettier@2.8.8",
|
|
48
|
+
"storybook": "^8.0.0",
|
|
49
|
+
"svgo": "^3.2.0",
|
|
50
|
+
"tailwindcss": "^3.3.3"
|
|
51
|
+
},
|
|
19
52
|
"web-types": "./web-types.json"
|
|
20
53
|
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
|
|
3
|
+
import UnpluginVueComponents from "unplugin-vue-components/vite";
|
|
4
|
+
import unpluginComponentsResolver from "./services/unpluginComponentsResolver";
|
|
5
|
+
import { copyIcons, removeIcons } from "./services/iconResolver.service";
|
|
6
|
+
import { loadSvg } from "./services/svgLoader.service";
|
|
7
|
+
import { createTailwindSafelist } from "./services/tailwindSafelist.service";
|
|
8
|
+
|
|
9
|
+
/* Automatically importing Vueless components on demand */
|
|
10
|
+
export const VuelessUnpluginComponents = (options) =>
|
|
11
|
+
UnpluginVueComponents({
|
|
12
|
+
resolvers: [unpluginComponentsResolver],
|
|
13
|
+
dts: false,
|
|
14
|
+
...options,
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
/*
|
|
18
|
+
– Creates tailwind colors safelist (collect only used on the project colors).
|
|
19
|
+
– Collects SVG icons for build (UIcon bundle size optimization).
|
|
20
|
+
– Loads SVG images as a Vue components.
|
|
21
|
+
*/
|
|
22
|
+
export const Vueless = function (options = {}) {
|
|
23
|
+
/* remove icons if server stopped */
|
|
24
|
+
process.on("SIGINT", () => {
|
|
25
|
+
removeIcons(options.debug);
|
|
26
|
+
process.exit(0);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
return {
|
|
30
|
+
name: "vite-plugin-vue-vueless",
|
|
31
|
+
enforce: "pre",
|
|
32
|
+
|
|
33
|
+
config: () => ({
|
|
34
|
+
define: {
|
|
35
|
+
"process.env": {},
|
|
36
|
+
},
|
|
37
|
+
}),
|
|
38
|
+
|
|
39
|
+
configResolved: (config) => {
|
|
40
|
+
if (config.command === "build") {
|
|
41
|
+
/* collect used in project colors for tailwind safelist */
|
|
42
|
+
createTailwindSafelist();
|
|
43
|
+
/* dynamically copy icons before build */
|
|
44
|
+
copyIcons(options.mode, options.debug);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
if (config.command === "dev" || config.command === "serve") {
|
|
48
|
+
/* remove dynamically copied icons after build */
|
|
49
|
+
removeIcons(options.debug);
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
|
|
53
|
+
/* remove dynamically copied icons after build */
|
|
54
|
+
buildEnd: () => removeIcons(options.debug),
|
|
55
|
+
|
|
56
|
+
/* load SVG images as a Vue components */
|
|
57
|
+
load: async (id) => await loadSvg(id, options),
|
|
58
|
+
};
|
|
59
|
+
};
|