@ldmjs/ui 1.0.0-dev-6 → 1.0.0-dev-8

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.md CHANGED
@@ -139,6 +139,67 @@ const vuetify = createVuetify({
139
139
  </ld-splitter>
140
140
  ```
141
141
 
142
+ ## #ld-toggle-buttons
143
+
144
+ ### use toggle buttons
145
+
146
+ ```html
147
+ <ld-toggle-btn
148
+ v-model="toggleModel"
149
+ :items="toggleItems"
150
+ />
151
+ ```
152
+
153
+ ```js
154
+ toggleItems = [
155
+ {
156
+ id: 0,
157
+ tooltip: 'user',
158
+ icon: 'user',
159
+ },
160
+ {
161
+ id: 1,
162
+ tooltip: 'group',
163
+ icon: 'group',
164
+ }
165
+ ]
166
+ ```
167
+
168
+ ## #ld-breadcrumbs
169
+
170
+ ### use breadcrumbs
171
+
172
+ ```js
173
+ appComponent.use(ldmui, {
174
+ LdBreadcrumbs: {
175
+ home: { // setup route for home page
176
+ name: 'home',
177
+ path: '/'
178
+ }
179
+ }
180
+ ```
181
+
182
+ ```html
183
+ <ld-breadcrumbs :breadcrumbs="items" />
184
+ ```
185
+
186
+ ```js
187
+ const items = [
188
+ {
189
+ text: 'Документы',
190
+ route: {
191
+ path: '/documents'
192
+ }
193
+ },
194
+ {
195
+ text: 'Входящая корреспонденция',
196
+ route: {
197
+ path: '/documents/123456'
198
+ }
199
+ }
200
+ ]
201
+ ```
202
+
142
203
  # Utilities
143
204
 
144
205
  - isDefined
package/dist/index.d.ts CHANGED
@@ -1,11 +1,11 @@
1
- import * as vue from 'vue';
1
+ import { ldmuiOptions } from './types/options'
2
2
 
3
3
  declare const defaults: Record<string, unknown>;
4
4
  declare function getAliases(components: Record<string, unknown>): Record<string, unknown>;
5
5
  declare function isDefined(value: unknown): boolean;
6
6
 
7
7
  declare const ldmui: {
8
- install(vue: vue.App, options?: Record<string, unknown>): void;
8
+ install(vue: any, options?: ldmuiOptions): void;
9
9
  }
10
10
 
11
11
  export default ldmui;
package/dist/index.js CHANGED
@@ -2043,6 +2043,234 @@ function ld_splitter_reg(vue, options) {
2043
2043
  }
2044
2044
  /* harmony default export */ const src_ld_splitter = (ld_splitter_reg);
2045
2045
 
2046
+ ;// CONCATENATED MODULE: ./node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/ld-toggle-buttons/ld-toggle-buttons.vue?vue&type=template&id=09fbefbf&ts=true
2047
+
2048
+ const ld_toggle_buttonsvue_type_template_id_09fbefbf_ts_true_hoisted_1 = { class: "d-flex align-center" };
2049
+ function ld_toggle_buttonsvue_type_template_id_09fbefbf_ts_true_render(_ctx, _cache, $props, $setup, $data, $options) {
2050
+ const _component_ld_icon = (0,external_vue_.resolveComponent)("ld-icon");
2051
+ const _component_square_button = (0,external_vue_.resolveComponent)("square-button");
2052
+ const _component_v_tooltip = (0,external_vue_.resolveComponent)("v-tooltip");
2053
+ const _directive_active = (0,external_vue_.resolveDirective)("active");
2054
+ return ((0,external_vue_.openBlock)(), (0,external_vue_.createElementBlock)("div", ld_toggle_buttonsvue_type_template_id_09fbefbf_ts_true_hoisted_1, [
2055
+ ((0,external_vue_.openBlock)(true), (0,external_vue_.createElementBlock)(external_vue_.Fragment, null, (0,external_vue_.renderList)(_ctx.items, (item, index) => {
2056
+ return ((0,external_vue_.openBlock)(), (0,external_vue_.createBlock)(_component_v_tooltip, null, {
2057
+ activator: (0,external_vue_.withCtx)(({ props }) => [
2058
+ (0,external_vue_.withDirectives)(((0,external_vue_.openBlock)(), (0,external_vue_.createBlock)(_component_square_button, (0,external_vue_.mergeProps)(props, {
2059
+ id: item.id,
2060
+ color: _ctx.modelValue === index ? 'primary' : 'grey',
2061
+ variant: _ctx.modelValue === index ? 'outlined' : 'text',
2062
+ class: { 'ml-1': index > 0 },
2063
+ onClick: ($event) => (_ctx.emitUpdate(index))
2064
+ }), {
2065
+ default: (0,external_vue_.withCtx)(() => [
2066
+ (0,external_vue_.createVNode)(_component_ld_icon, {
2067
+ icon: item.icon,
2068
+ color: _ctx.modelValue === index ? 'primary' : 'grey'
2069
+ }, null, 8 /* PROPS */, ["icon", "color"])
2070
+ ]),
2071
+ _: 2 /* DYNAMIC */
2072
+ }, 1040 /* FULL_PROPS, DYNAMIC_SLOTS */, ["id", "color", "variant", "class", "onClick"])), [
2073
+ [_directive_active, _ctx.modelValue === index]
2074
+ ])
2075
+ ]),
2076
+ default: (0,external_vue_.withCtx)(() => [
2077
+ (0,external_vue_.createTextVNode)(),
2078
+ (0,external_vue_.createElementVNode)("span", null, (0,external_vue_.toDisplayString)(item.tooltip), 1 /* TEXT */)
2079
+ ]),
2080
+ _: 2 /* DYNAMIC */
2081
+ }, 1024 /* DYNAMIC_SLOTS */));
2082
+ }), 256 /* UNKEYED_FRAGMENT */))
2083
+ ]));
2084
+ }
2085
+
2086
+ ;// CONCATENATED MODULE: ./src/ld-toggle-buttons/ld-toggle-buttons.vue?vue&type=template&id=09fbefbf&ts=true
2087
+
2088
+ ;// CONCATENATED MODULE: ./node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!./src/ld-toggle-buttons/ld-toggle-buttons.ts?vue&type=script&lang=ts&external
2089
+ var ld_toggle_buttonsvue_type_script_lang_ts_external_decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2090
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2091
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2092
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2093
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
2094
+ };
2095
+ var ld_toggle_buttonsvue_type_script_lang_ts_external_metadata = (undefined && undefined.__metadata) || function (k, v) {
2096
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2097
+ };
2098
+ var _a;
2099
+
2100
+ let ToggleButtonsComponent = class ToggleButtonsComponent extends external_vue_property_decorator_.Vue {
2101
+ emitUpdate(value) {
2102
+ this.$emit('update:model-value', value);
2103
+ }
2104
+ };
2105
+ ld_toggle_buttonsvue_type_script_lang_ts_external_decorate([
2106
+ (0,external_vue_property_decorator_.Prop)(),
2107
+ ld_toggle_buttonsvue_type_script_lang_ts_external_metadata("design:type", Number)
2108
+ ], ToggleButtonsComponent.prototype, "modelValue", void 0);
2109
+ ld_toggle_buttonsvue_type_script_lang_ts_external_decorate([
2110
+ (0,external_vue_property_decorator_.Prop)(),
2111
+ ld_toggle_buttonsvue_type_script_lang_ts_external_metadata("design:type", typeof (_a = typeof Array !== "undefined" && Array) === "function" ? _a : Object)
2112
+ ], ToggleButtonsComponent.prototype, "items", void 0);
2113
+ ToggleButtonsComponent = ld_toggle_buttonsvue_type_script_lang_ts_external_decorate([
2114
+ (0,external_vue_property_decorator_.Options)({
2115
+ emits: ['update:model-value'],
2116
+ })
2117
+ ], ToggleButtonsComponent);
2118
+ /* harmony default export */ const ld_toggle_buttonsvue_type_script_lang_ts_external = (ToggleButtonsComponent);
2119
+
2120
+ ;// CONCATENATED MODULE: ./src/ld-toggle-buttons/ld-toggle-buttons.ts?vue&type=script&lang=ts&external
2121
+
2122
+ ;// CONCATENATED MODULE: ./src/ld-toggle-buttons/ld-toggle-buttons.vue
2123
+
2124
+
2125
+
2126
+
2127
+ ;
2128
+ const ld_toggle_buttons_exports_ = /*#__PURE__*/(0,exportHelper/* default */.A)(ld_toggle_buttonsvue_type_script_lang_ts_external, [['render',ld_toggle_buttonsvue_type_template_id_09fbefbf_ts_true_render]])
2129
+
2130
+ /* harmony default export */ const ld_toggle_buttons = (ld_toggle_buttons_exports_);
2131
+ ;// CONCATENATED MODULE: ./src/ld-toggle-buttons/index.ts
2132
+
2133
+ function ld_toggle_buttons_reg(vue, options) {
2134
+ vue.component(options?.aliases?.['ld-toggle-buttons'] ? options.aliases['ld-toggle-buttons'] : 'ld-toggle-buttons', ld_toggle_buttons);
2135
+ }
2136
+ /* harmony default export */ const src_ld_toggle_buttons = (ld_toggle_buttons_reg);
2137
+
2138
+ ;// CONCATENATED MODULE: ./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/ld-breadcrumbs/ld-breadcrumbs.vue?vue&type=template&id=c811912a
2139
+
2140
+
2141
+ const ld_breadcrumbsvue_type_template_id_c811912a_hoisted_1 = ["onClick"]
2142
+ const ld_breadcrumbsvue_type_template_id_c811912a_hoisted_2 = { key: 0 }
2143
+
2144
+ function ld_breadcrumbsvue_type_template_id_c811912a_render(_ctx, _cache, $props, $setup, $data, $options) {
2145
+ const _component_ld_icon = (0,external_vue_.resolveComponent)("ld-icon")
2146
+ const _component_square_button = (0,external_vue_.resolveComponent)("square-button")
2147
+ const _component_v_breadcrumbs = (0,external_vue_.resolveComponent)("v-breadcrumbs")
2148
+
2149
+ return ((0,external_vue_.openBlock)(), (0,external_vue_.createBlock)(_component_v_breadcrumbs, {
2150
+ divider: "/",
2151
+ items: _ctx.items
2152
+ }, {
2153
+ title: (0,external_vue_.withCtx)(({ item }) => [
2154
+ (item.text === 'home')
2155
+ ? ((0,external_vue_.openBlock)(), (0,external_vue_.createBlock)(_component_square_button, {
2156
+ key: 0,
2157
+ class: "mr-2",
2158
+ onClick: _ctx.goHome
2159
+ }, {
2160
+ default: (0,external_vue_.withCtx)(() => [
2161
+ (0,external_vue_.createVNode)(_component_ld_icon, null, {
2162
+ default: (0,external_vue_.withCtx)(() => [
2163
+ (0,external_vue_.createTextVNode)("home")
2164
+ ]),
2165
+ _: 1 /* STABLE */
2166
+ })
2167
+ ]),
2168
+ _: 1 /* STABLE */
2169
+ }, 8 /* PROPS */, ["onClick"]))
2170
+ : ((0,external_vue_.openBlock)(), (0,external_vue_.createElementBlock)("div", {
2171
+ key: 1,
2172
+ onClick: $event => (_ctx.go(item))
2173
+ }, [
2174
+ (0,external_vue_.createElementVNode)("span", null, (0,external_vue_.toDisplayString)(item.text), 1 /* TEXT */),
2175
+ (0,external_vue_.createTextVNode)(),
2176
+ (item.remark)
2177
+ ? ((0,external_vue_.openBlock)(), (0,external_vue_.createElementBlock)("span", ld_breadcrumbsvue_type_template_id_c811912a_hoisted_2, "(" + (0,external_vue_.toDisplayString)(item.remark) + ")", 1 /* TEXT */))
2178
+ : (0,external_vue_.createCommentVNode)("v-if", true)
2179
+ ], 8 /* PROPS */, ld_breadcrumbsvue_type_template_id_c811912a_hoisted_1))
2180
+ ]),
2181
+ _: 1 /* STABLE */
2182
+ }, 8 /* PROPS */, ["items"]))
2183
+ }
2184
+ ;// CONCATENATED MODULE: ./src/ld-breadcrumbs/ld-breadcrumbs.vue?vue&type=template&id=c811912a
2185
+
2186
+ ;// CONCATENATED MODULE: ./node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!./src/ld-breadcrumbs/ld-breadcrumbs.ts?vue&type=script&lang=js&external
2187
+ var ld_breadcrumbsvue_type_script_lang_js_external_decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2188
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2189
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2190
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2191
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
2192
+ };
2193
+ var ld_breadcrumbsvue_type_script_lang_js_external_metadata = (undefined && undefined.__metadata) || function (k, v) {
2194
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2195
+ };
2196
+ var ld_breadcrumbsvue_type_script_lang_js_external_a;
2197
+
2198
+ class BreadcrumbsComponent extends external_vue_property_decorator_.Vue {
2199
+ constructor() {
2200
+ super(...arguments);
2201
+ this.items = [];
2202
+ }
2203
+ onBreadcrumbsChanged() {
2204
+ if (this.breadcrumbs && this.breadcrumbs.length) {
2205
+ this.items = [
2206
+ ...this.breadcrumbs.map((item, index) => {
2207
+ item.disabled = index === this.breadcrumbs.length - 1;
2208
+ return item;
2209
+ })
2210
+ ];
2211
+ if (this.items[0].text !== 'home') {
2212
+ this.items.unshift({
2213
+ text: 'home',
2214
+ route: {}
2215
+ });
2216
+ }
2217
+ }
2218
+ }
2219
+ goHome() {
2220
+ this.go({
2221
+ route: this.home || { path: '/' },
2222
+ });
2223
+ }
2224
+ go(item) {
2225
+ if (!this.$router) {
2226
+ /* eslint-disable no-console */
2227
+ console.log('Router is undefined');
2228
+ return;
2229
+ }
2230
+ if (item.route) {
2231
+ this.$router.push(item.route);
2232
+ }
2233
+ }
2234
+ }
2235
+ ld_breadcrumbsvue_type_script_lang_js_external_decorate([
2236
+ (0,external_vue_property_decorator_.Prop)(),
2237
+ ld_breadcrumbsvue_type_script_lang_js_external_metadata("design:type", typeof (ld_breadcrumbsvue_type_script_lang_js_external_a = typeof Array !== "undefined" && Array) === "function" ? ld_breadcrumbsvue_type_script_lang_js_external_a : Object)
2238
+ ], BreadcrumbsComponent.prototype, "breadcrumbs", void 0);
2239
+ ld_breadcrumbsvue_type_script_lang_js_external_decorate([
2240
+ (0,external_vue_property_decorator_.Prop)({ default: null }),
2241
+ ld_breadcrumbsvue_type_script_lang_js_external_metadata("design:type", Object)
2242
+ ], BreadcrumbsComponent.prototype, "home", void 0);
2243
+ ld_breadcrumbsvue_type_script_lang_js_external_decorate([
2244
+ (0,external_vue_property_decorator_.Watch)('breadcrumbs', { immediate: true }),
2245
+ ld_breadcrumbsvue_type_script_lang_js_external_metadata("design:type", Function),
2246
+ ld_breadcrumbsvue_type_script_lang_js_external_metadata("design:paramtypes", []),
2247
+ ld_breadcrumbsvue_type_script_lang_js_external_metadata("design:returntype", void 0)
2248
+ ], BreadcrumbsComponent.prototype, "onBreadcrumbsChanged", null);
2249
+
2250
+ ;// CONCATENATED MODULE: ./src/ld-breadcrumbs/ld-breadcrumbs.ts?vue&type=script&lang=js&external
2251
+
2252
+ ;// CONCATENATED MODULE: ./src/ld-breadcrumbs/ld-breadcrumbs.vue
2253
+
2254
+
2255
+
2256
+
2257
+ ;
2258
+ const ld_breadcrumbs_exports_ = /*#__PURE__*/(0,exportHelper/* default */.A)(BreadcrumbsComponent, [['render',ld_breadcrumbsvue_type_template_id_c811912a_render]])
2259
+
2260
+ /* harmony default export */ const ld_breadcrumbs = (ld_breadcrumbs_exports_);
2261
+ ;// CONCATENATED MODULE: ./src/ld-breadcrumbs/index.ts
2262
+
2263
+ function ld_breadcrumbs_reg(vue, options) {
2264
+ ld_breadcrumbs.props = {
2265
+ ...ld_breadcrumbs.props,
2266
+ home: {
2267
+ default: options?.LdBreadcrumbs?.home ? options?.LdBreadcrumbs?.home : null
2268
+ }
2269
+ };
2270
+ vue.component(options?.aliases?.['ld-breadcrumbs'] ? options.aliases['ld-breadcrumbs'] : 'ld-breadcrumbs', ld_breadcrumbs);
2271
+ }
2272
+ /* harmony default export */ const src_ld_breadcrumbs = (ld_breadcrumbs_reg);
2273
+
2046
2274
  ;// CONCATENATED MODULE: ./src/vuetify.ts
2047
2275
  const aliases = {
2048
2276
  SmallButton: 'VBtn',
@@ -2110,12 +2338,16 @@ const ActiveDirectiveOptions = {
2110
2338
 
2111
2339
 
2112
2340
 
2341
+
2342
+
2113
2343
  const ldmuiPlugin = {
2114
2344
  install(vue, options) {
2115
2345
  src_ld_icon(vue, options);
2116
2346
  src_ld_loader(vue, options);
2117
2347
  src_ld_button(vue, options);
2118
2348
  src_ld_splitter(vue, options);
2349
+ src_ld_toggle_buttons(vue, options);
2350
+ src_ld_breadcrumbs(vue, options);
2119
2351
  vue.config.globalProperties.$utils = {
2120
2352
  isDefined: isDefined
2121
2353
  };
@@ -0,0 +1,48 @@
1
+ body {
2
+ .v-breadcrumbs {
3
+ white-space: nowrap;
4
+ text-overflow: ellipsis;
5
+ overflow: hidden;
6
+ padding: 0;
7
+ width: fit-content;
8
+
9
+ & li {
10
+ color: var(--grey) !important;
11
+ font-size: var(--font-size) !important;
12
+ overflow: hidden;
13
+
14
+
15
+ &.v-breadcrumbs-item {
16
+ overflow: hidden !important;
17
+ text-overflow: ellipsis !important;
18
+ white-space: nowrap !important;
19
+ display: block !important;
20
+ cursor: pointer !important;
21
+ padding: 0;
22
+
23
+ & a {
24
+ color: inherit !important;
25
+ }
26
+
27
+ &[text="home"] {
28
+ & + .v-breadcrumbs-divider {
29
+ display: none;
30
+ }
31
+ }
32
+
33
+ &:last-child {
34
+ font-weight: bold !important;
35
+ color: var(--text) !important;
36
+ }
37
+ }
38
+
39
+ &.v-breadcrumbs-divider {
40
+ padding: 0 4px;
41
+ }
42
+ }
43
+
44
+ .v-breadcrumbs-item--disabled {
45
+ opacity: 1 !important;
46
+ }
47
+ }
48
+ }
@@ -2,3 +2,4 @@
2
2
  @import 'variables';
3
3
  @import 'buttons';
4
4
  @import 'chip';
5
+ @import 'breadcrumbs';
@@ -0,0 +1,22 @@
1
+ export interface IDictionary<TValue> {
2
+ [index: string]: TValue;
3
+ }
4
+
5
+ export interface IRoute {
6
+ path?: string;
7
+ name?: string;
8
+ hash?: string;
9
+ query?: IDictionary<string | Array<string>>;
10
+ params?: RouteParams;
11
+ fullPath?: string;
12
+ redirectedFrom?: string;
13
+ meta?: { transition?: symbol; state?: symbol };
14
+ }
15
+
16
+ export interface IBreadcrumbsItem {
17
+ text?: string;
18
+ remark?: string;
19
+ route: IRoute;
20
+ disabled?: boolean;
21
+ data?: unknown;
22
+ }
@@ -0,0 +1,27 @@
1
+ export interface ldmuiOptions {
2
+ aliases?: {
3
+ 'ld-button'?: string;
4
+ 'ld-icon'?: string;
5
+ 'ld-splitter'?: string;
6
+ 'ld-loader'?: string;
7
+ 'ld-toggle-buttons'?: string;
8
+ 'ld-breadcrumbs'?: string;
9
+ },
10
+ LdIcon?: {
11
+ path: string;
12
+ map: {
13
+ icons: Array<[string, string]>;
14
+ }
15
+ },
16
+ LdBtn?: {
17
+ isMobile: string;
18
+ isTablet: string;
19
+ isDesktop: string;
20
+ },
21
+ LdBreadcrumbs?: {
22
+ home: {
23
+ name: string;
24
+ path: string;
25
+ }
26
+ }
27
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ldmjs/ui",
3
- "version": "1.0.0-dev-6",
3
+ "version": "1.0.0-dev-8",
4
4
  "description": "ldm ui",
5
5
  "main": "dist/index.js",
6
6
  "engines": {
@@ -29,11 +29,6 @@
29
29
  "files": [
30
30
  "dist/"
31
31
  ],
32
- "dependencies": {
33
- "lodash-es": "4.17.21",
34
- "vue": "3.4.21",
35
- "vuetify": "3.5.9"
36
- },
37
32
  "devDependencies": {
38
33
  "@types/eslint": "^8",
39
34
  "@types/lodash-es": "^4",
@@ -43,6 +38,7 @@
43
38
  "css-loader": "6.8.1",
44
39
  "eslint": "8.56.0",
45
40
  "html-webpack-plugin": "5.6.0",
41
+ "lodash-es": "4.17.21",
46
42
  "material-design-icons-iconfont": "^6.7.0",
47
43
  "node-sass": "9.0.0",
48
44
  "postcss-loader": "7.3.3",
@@ -52,10 +48,12 @@
52
48
  "terser-webpack-plugin": "5.3.10",
53
49
  "ts-loader": "9.5.1",
54
50
  "typescript": "4.9.5",
51
+ "vue": "3.4.21",
55
52
  "vue-class-component": "8.0.0-rc.1",
56
53
  "vue-eslint-parser": "9.4.2",
57
54
  "vue-loader": "17.3.1",
58
55
  "vue-property-decorator": "10.0.0-rc.3",
56
+ "vuetify": "3.5.9",
59
57
  "webpack": "5.90.2",
60
58
  "webpack-cli": "5.1.4",
61
59
  "webpack-dev-server": "4.15.1",