gd-bs 6.1.1 → 6.1.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/index.html CHANGED
@@ -936,6 +936,10 @@
936
936
  name: "Jobs",
937
937
  type: GD.Components.FormControlTypes.Dropdown,
938
938
  items: [{
939
+ text: "Select...",
940
+ isDisabled: true,
941
+ isSelected: true
942
+ },{
939
943
  text: "Job 1"
940
944
  }, {
941
945
  text: "Job 2"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gd-bs",
3
- "version": "6.1.1",
3
+ "version": "6.1.3",
4
4
  "description": "Bootstrap JavaScript, TypeScript and Web Components library.",
5
5
  "main": "build/index.js",
6
6
  "typings": "src/index.d.ts",
@@ -35,7 +35,7 @@
35
35
  "dependencies": {
36
36
  "@popperjs/core": "^2.11.6",
37
37
  "bootstrap": "^5.2.3",
38
- "bootstrap-icons": "^1.10.3",
38
+ "bootstrap-icons": "^1.10.4",
39
39
  "core-js": "^3.25.5",
40
40
  "tippy.js": "^6.3.7"
41
41
  },
package/pnpm-lock.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  dependencies:
2
2
  '@popperjs/core': 2.11.6
3
3
  bootstrap: 5.2.3_@popperjs+core@2.11.6
4
- bootstrap-icons: 1.10.3
4
+ bootstrap-icons: 1.10.4
5
5
  core-js: 3.25.5
6
6
  tippy.js: 6.3.7
7
7
  devDependencies:
@@ -1612,10 +1612,10 @@ packages:
1612
1612
  node: '>=8'
1613
1613
  resolution:
1614
1614
  integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
1615
- /bootstrap-icons/1.10.3:
1615
+ /bootstrap-icons/1.10.4:
1616
1616
  dev: false
1617
1617
  resolution:
1618
- integrity: sha512-7Qvj0j0idEm/DdX9Q0CpxAnJYqBCFCiUI6qzSPYfERMcokVuV9Mdm/AJiVZI8+Gawe4h/l6zFcOzvV7oXCZArw==
1618
+ integrity: sha512-eI3HyIUmpGKRiRv15FCZccV+2sreGE2NnmH8mtxV/nPOzQVu0sPEj8HhF1MwjJ31IhjF0rgMvtYOX5VqIzcb/A==
1619
1619
  /bootstrap/5.2.3_@popperjs+core@2.11.6:
1620
1620
  dependencies:
1621
1621
  '@popperjs/core': 2.11.6
@@ -3282,7 +3282,7 @@ specifiers:
3282
3282
  autoprefixer: ^10.4.12
3283
3283
  babel-loader: ^8.2.5
3284
3284
  bootstrap: ^5.2.3
3285
- bootstrap-icons: ^1.10.3
3285
+ bootstrap-icons: ^1.10.4
3286
3286
  core-js: ^3.25.5
3287
3287
  css-loader: ^6.7.1
3288
3288
  dts-bundle: ^0.7.3
@@ -37,6 +37,7 @@ export class CheckboxItem {
37
37
  if (this._elCheckbox) {
38
38
  this._elCheckbox.disabled = this._parent.isDisabled ? true : false;
39
39
  this._elCheckbox.readOnly = this._parent.isReadonly ? true : false;
40
+ this._elCheckbox.required = this._parent.required ? true : false;
40
41
 
41
42
  // Default the title property for the checkbox
42
43
  this._elCheckbox.title = this.props.label || this._parent.title || "";
@@ -95,6 +95,7 @@ export interface ICheckboxGroupProps extends IBaseProps<ICheckboxGroup> {
95
95
  multi?: boolean;
96
96
  onRender?: (el?: HTMLElement, item?: ICheckboxGroupItem) => void;
97
97
  onChange?: (items: ICheckboxGroupItem | Array<ICheckboxGroupItem>, ev?: Event) => void;
98
+ required?: boolean;
98
99
  title?: string;
99
100
  type?: number;
100
101
  value?: any;
@@ -289,6 +289,7 @@ class _Dropdown extends Base<IDropdownProps> implements IDropdown {
289
289
  dropdown.classList.add("form-select");
290
290
  dropdown.disabled = this.props.isReadonly ? true : false;
291
291
  dropdown.multiple = this.props.multi ? true : false;
292
+ dropdown.required = this.props.required ? true : false;
292
293
  this.props.title ? dropdown.title = this.props.title : null;
293
294
  }
294
295
  }
@@ -448,6 +449,9 @@ class _Dropdown extends Base<IDropdownProps> implements IDropdown {
448
449
  for (let i = 0; i < this._items.length; i++) {
449
450
  let item = this._items[i];
450
451
 
452
+ // Skip disabled items
453
+ if ((item.el as HTMLOptionElement).disabled) { continue; }
454
+
451
455
  // See if this item is selected
452
456
  if (item.isSelected) {
453
457
  // Add the value
@@ -143,6 +143,7 @@ export interface IDropdownProps extends IBaseProps<IDropdown> {
143
143
  navFl?: boolean;
144
144
  onChange?: (item?: IDropdownItem | Array<IDropdownItem>, ev?: Event) => void;
145
145
  onMenuRendering?: (props: IPopoverProps) => IPopoverProps;
146
+ required?: boolean;
146
147
  setLabelToValue?: boolean;
147
148
  title?: string;
148
149
  type?: number;
@@ -121,6 +121,7 @@ export class FormControl implements IFormControl {
121
121
  isReadonly: this._props.isReadonly,
122
122
  items: cbProps.items,
123
123
  onChange: cbProps.onChange,
124
+ required: this._props.required,
124
125
  title: this._props.title,
125
126
  type: CheckboxGroupTypes.Checkbox,
126
127
  value
@@ -136,6 +137,7 @@ export class FormControl implements IFormControl {
136
137
  isReadonly: this._props.isReadonly,
137
138
  onChange: (this._props as IFormControlPropsTextField).onChange,
138
139
  placeholder: (this._props as IFormControlPropsTextField).placeholder,
140
+ required: this._props.required,
139
141
  title: this._props.title,
140
142
  type: InputGroupTypes.ColorPicker,
141
143
  value
@@ -152,6 +154,7 @@ export class FormControl implements IFormControl {
152
154
  isReadonly: this._props.isReadonly,
153
155
  items: (this._props as IFormControlPropsDropdown).items,
154
156
  onChange: (this._props as IFormControlPropsDropdown).onChange,
157
+ required: this._props.required,
155
158
  title: this._props.title,
156
159
  value
157
160
  });
@@ -167,6 +170,7 @@ export class FormControl implements IFormControl {
167
170
  items: (this._props as IFormControlPropsDropdown).items,
168
171
  onChange: (this._props as IFormControlPropsDropdown).onChange,
169
172
  onMenuRendering: (this._props as IFormControlPropsDropdown).onMenuRendering,
173
+ required: this._props.required,
170
174
  title: this._props.title,
171
175
  value
172
176
  });
@@ -181,6 +185,7 @@ export class FormControl implements IFormControl {
181
185
  isReadonly: this._props.isReadonly,
182
186
  onChange: (this._props as IFormControlPropsTextField).onChange,
183
187
  placeholder: (this._props as IFormControlPropsTextField).placeholder,
188
+ required: this._props.required,
184
189
  title: this._props.title,
185
190
  type: InputGroupTypes.Email,
186
191
  value
@@ -196,6 +201,7 @@ export class FormControl implements IFormControl {
196
201
  isReadonly: this._props.isReadonly,
197
202
  onChange: (this._props as IFormControlPropsTextField).onChange,
198
203
  placeholder: (this._props as IFormControlPropsTextField).placeholder,
204
+ required: this._props.required,
199
205
  title: this._props.title,
200
206
  type: InputGroupTypes.File,
201
207
  value
@@ -210,6 +216,7 @@ export class FormControl implements IFormControl {
210
216
  items: (this._props as IFormControlPropsListBox).items,
211
217
  onChange: (this._props as IFormControlPropsListBox).onChange,
212
218
  placeholder: (this._props as IFormControlPropsListBox).placeholder,
219
+ required: this._props.required,
213
220
  value
214
221
  });
215
222
  break;
@@ -228,6 +235,7 @@ export class FormControl implements IFormControl {
228
235
  items: cbMultiProps.items,
229
236
  multi: true,
230
237
  onChange: cbMultiProps.onChange,
238
+ required: this._props.required,
231
239
  title: this._props.title,
232
240
  type: CheckboxGroupTypes.Checkbox,
233
241
  value
@@ -245,6 +253,7 @@ export class FormControl implements IFormControl {
245
253
  multi: true,
246
254
  onChange: (this._props as IFormControlPropsDropdown).onChange,
247
255
  onMenuRendering: (this._props as IFormControlPropsDropdown).onMenuRendering,
256
+ required: this._props.required,
248
257
  title: this._props.title,
249
258
  value
250
259
  });
@@ -259,6 +268,7 @@ export class FormControl implements IFormControl {
259
268
  multi: true,
260
269
  onChange: (this._props as IFormControlPropsMultiListBox).onChange,
261
270
  placeholder: (this._props as IFormControlPropsMultiListBox).placeholder,
271
+ required: this._props.required,
262
272
  value
263
273
  });
264
274
  break;
@@ -274,6 +284,7 @@ export class FormControl implements IFormControl {
274
284
  items: (this._props as IFormControlPropsMultiCheckbox).items,
275
285
  multi: true,
276
286
  onChange: (this._props as IFormControlPropsMultiCheckbox).onChange,
287
+ required: this._props.required,
277
288
  title: this._props.title,
278
289
  type: CheckboxGroupTypes.Radio,
279
290
  value
@@ -291,6 +302,7 @@ export class FormControl implements IFormControl {
291
302
  items: (this._props as IFormControlPropsMultiCheckbox).items,
292
303
  multi: true,
293
304
  onChange: (this._props as IFormControlPropsMultiCheckbox).onChange,
305
+ required: this._props.required,
294
306
  title: this._props.title,
295
307
  type: CheckboxGroupTypes.Switch,
296
308
  value
@@ -306,6 +318,7 @@ export class FormControl implements IFormControl {
306
318
  isReadonly: this._props.isReadonly,
307
319
  onChange: (this._props as IFormControlPropsTextField).onChange,
308
320
  placeholder: (this._props as IFormControlPropsTextField).placeholder,
321
+ required: this._props.required,
309
322
  title: this._props.title,
310
323
  type: InputGroupTypes.Password,
311
324
  value
@@ -322,6 +335,7 @@ export class FormControl implements IFormControl {
322
335
  isReadonly: this._props.isReadonly,
323
336
  items: (this._props as IFormControlPropsCheckbox).items,
324
337
  onChange: (this._props as IFormControlPropsCheckbox).onChange,
338
+ required: this._props.required,
325
339
  title: this._props.title,
326
340
  type: CheckboxGroupTypes.Radio,
327
341
  value
@@ -339,6 +353,7 @@ export class FormControl implements IFormControl {
339
353
  max: (this._props as IFormControlPropsRange).max || 100,
340
354
  onChange: (this._props as IFormControlPropsRange).onChange,
341
355
  placeholder: (this._props as IFormControlPropsRange).placeholder,
356
+ required: this._props.required,
342
357
  step: (this._props as IFormControlPropsRange).step,
343
358
  title: this._props.title,
344
359
  type: InputGroupTypes.Range,
@@ -354,6 +369,7 @@ export class FormControl implements IFormControl {
354
369
  isReadonly: true,
355
370
  onChange: (this._props as IFormControlPropsTextField).onChange,
356
371
  placeholder: (this._props as IFormControlPropsTextField).placeholder,
372
+ required: this._props.required,
357
373
  title: this._props.title,
358
374
  type: InputGroupTypes.TextField,
359
375
  value
@@ -370,6 +386,7 @@ export class FormControl implements IFormControl {
370
386
  isReadonly: this._props.isReadonly,
371
387
  items: (this._props as IFormControlPropsCheckbox).items,
372
388
  onChange: (this._props as IFormControlPropsCheckbox).onChange,
389
+ required: this._props.required,
373
390
  title: this._props.title,
374
391
  type: CheckboxGroupTypes.Switch,
375
392
  value
@@ -385,6 +402,7 @@ export class FormControl implements IFormControl {
385
402
  isReadonly: this._props.isReadonly,
386
403
  onChange: (this._props as IFormControlPropsTextField).onChange,
387
404
  placeholder: (this._props as IFormControlPropsTextField).placeholder,
405
+ required: this._props.required,
388
406
  rows: (this._props as IFormControlPropsTextField).rows,
389
407
  title: this._props.title,
390
408
  type: InputGroupTypes.TextArea,
@@ -401,6 +419,7 @@ export class FormControl implements IFormControl {
401
419
  isReadonly: this._props.isReadonly,
402
420
  onChange: (this._props as IFormControlPropsTextField).onChange,
403
421
  placeholder: (this._props as IFormControlPropsTextField).placeholder,
422
+ required: this._props.required,
404
423
  title: this._props.title,
405
424
  type: InputGroupTypes.TextField,
406
425
  value
@@ -219,6 +219,7 @@ class _InputGroup extends Base<IInputGroupProps> implements IInputGroup {
219
219
  this.props.placeholder ? textarea.placeholder = this.props.placeholder : null;
220
220
  textarea.disabled = this.props.isDisabled ? true : false;
221
221
  textarea.readOnly = this.props.isReadonly ? true : false;
222
+ textarea.required = this.props.required ? true : false;
222
223
  textarea.rows = this.props.rows;
223
224
  this.props.title ? textarea.title = this.props.title : null;
224
225
  }
@@ -233,6 +234,7 @@ class _InputGroup extends Base<IInputGroupProps> implements IInputGroup {
233
234
  this.props.placeholder ? input.placeholder = this.props.placeholder : null;
234
235
  input.disabled = this.props.isDisabled ? true : false;
235
236
  input.readOnly = this.props.isReadonly ? true : false;
237
+ input.required = this.props.required ? true : false;
236
238
  this.props.title ? input.title = this.props.title : null;
237
239
  typeof (this.props.min) === "number" ? input.min = this.props.min + "" : null;
238
240
  typeof (this.props.max) === "number" ? input.max = this.props.max + "" : null;
@@ -91,6 +91,7 @@ export interface IInputGroupProps extends IBaseProps<IInputGroup> {
91
91
  placeholder?: string;
92
92
  prependedButtons?: Array<IButtonProps>;
93
93
  prependedLabel?: string;
94
+ required?: boolean;
94
95
  rows?: number;
95
96
  step?: number;
96
97
  title?: string;
@@ -72,6 +72,9 @@ class _ListBox extends Base<IListBoxProps> implements IListBox {
72
72
  this._elSearchBox ? this._elSearchBox.disabled = true : null;
73
73
  }
74
74
 
75
+ // Set the required property
76
+ this._elSearchBox.required = this.props.required ? true : false;
77
+
75
78
  // Set the options
76
79
  this.setOptions(this.props.items);
77
80
 
@@ -99,8 +99,9 @@ export interface IListBoxProps extends IBaseProps<IListBox> {
99
99
  isReadonly?: boolean;
100
100
  items: Array<IDropdownItem>;
101
101
  multi?: boolean;
102
- placeholder?: string;
103
102
  onLoadData?: () => Array<IDropdownItem> | PromiseLike<Array<IDropdownItem>>;
104
103
  onChange?: (items: IDropdownItem | Array<IDropdownItem>, ev?: Event) => void;
104
+ placeholder?: string;
105
+ required?: boolean;
105
106
  value?: string | Array<string>;
106
107
  }
@@ -1,4 +1,4 @@
1
1
  import { generateIcon } from "../generate";
2
2
  export function folderPlus(height, width, className?) {
3
- return generateIcon(`<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-folder-plus' viewBox='0 0 16 16'> <path d='m.5 3 .04.87a1.99 1.99 0 0 0-.342 1.311l.637 7A2 2 0 0 0 2.826 14H9v-1H2.826a1 1 0 0 1-.995-.91l-.637-7A1 1 0 0 1 2.19 4h11.62a1 1 0 0 1 .996 1.09L14.54 8h1.005l.256-2.819A2 2 0 0 0 13.81 3H9.828a2 2 0 0 1-1.414-.586l-.828-.828A2 2 0 0 0 6.172 1H2.5a2 2 0 0 0-2 2zm5.672-1a1 1 0 0 1 .707.293L7.586 3H2.19c-.24 0-.47.042-.683.12L1.5 2.98a1 1 0 0 1 1-.98h3.672z'/> <path d='M13.5 10a.5.5 0 0 1 .5.5V12h1.5a.5.5 0 1 1 0 1H14v1.5a.5.5 0 1 1-1 0V13h-1.5a.5.5 0 0 1 0-1H13v-1.5a.5.5 0 0 1 .5-.5z'/> </svg>`, height, width, className);
3
+ return generateIcon(`<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-folder-plus' viewBox='0 0 16 16'> <path d='m.5 3 .04.87a1.99 1.99 0 0 0-.342 1.311l.637 7A2 2 0 0 0 2.826 14H9v-1H2.826a1 1 0 0 1-.995-.91l-.637-7A1 1 0 0 1 2.19 4h11.62a1 1 0 0 1 .996 1.09L14.54 8h1.005l.256-2.819A2 2 0 0 0 13.81 3H9.828a2 2 0 0 1-1.414-.586l-.828-.828A2 2 0 0 0 6.172 1H2.5a2 2 0 0 0-2 2Zm5.672-1a1 1 0 0 1 .707.293L7.586 3H2.19c-.24 0-.47.042-.683.12L1.5 2.98a1 1 0 0 1 1-.98h3.672Z'/> <path d='M13.5 9a.5.5 0 0 1 .5.5V11h1.5a.5.5 0 1 1 0 1H14v1.5a.5.5 0 1 1-1 0V12h-1.5a.5.5 0 0 1 0-1H13V9.5a.5.5 0 0 1 .5-.5Z'/> </svg>`, height, width, className);
4
4
  }
@@ -1,4 +1,4 @@
1
1
  import { generateIcon } from "../generate";
2
2
  export function postcardHeartFill(height, width, className?) {
3
- return generateIcon(`<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-postcard-heart-fill' viewBox='0 0 16 16'> <path fill-rule='evenodd' d='M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2Zm6 2.5a.5.5 0 0 0-1 0v7a.5.5 0 0 0 1 0v-7Zm3.5.878c1.482-1.42 4.795 1.392 0 4.622-4.795-3.23-1.482-6.043 0-4.622ZM2 5.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5Zm0 2a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5Zm0 2a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5Z'/> </svg>`, height, width, className);
3
+ return generateIcon(`<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-postcard-heart-fill' viewBox='0 0 16 16'> <path d='M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2Zm6 2.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 1 0Zm3.5.878c1.482-1.42 4.795 1.392 0 4.622-4.795-3.23-1.482-6.043 0-4.622ZM2 5.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5Zm0 2a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5Zm0 2a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5Z'/> </svg>`, height, width, className);
4
4
  }
@@ -1,4 +1,4 @@
1
1
  import { generateIcon } from "../generate";
2
2
  export function trash(height, width, className?) {
3
- return generateIcon(`<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-trash' viewBox='0 0 16 16'> <path d='M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V6z'/> <path fill-rule='evenodd' d='M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1v1zM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4H4.118zM2.5 3V2h11v1h-11z'/> </svg>`, height, width, className);
3
+ return generateIcon(`<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-trash' viewBox='0 0 16 16'> <path d='M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V6Z'/> <path d='M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1v1ZM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4H4.118ZM2.5 3h11V2h-11v1Z'/> </svg>`, height, width, className);
4
4
  }